tft每日頭條

 > 科技

 > cpu可向cache發出請求

cpu可向cache發出請求

科技 更新时间:2024-09-14 01:09:21

cpu可向cache發出請求(Cache簡述及協處理器指令)1

來源:百問網_嵌入式Linux wiki_jz2440 新1期視頻維基教程 (視頻文字版)

作者:韋東山

本文字數:1719,閱讀時長:2分鐘

如果對MMU ICache有所了解或者知道其概念作用,那麼這節課可以跳過,我們很少會使用MMU或ICache

cpu可向cache發出請求(Cache簡述及協處理器指令)2

在2440芯片裡面除了CPU之外, Instruction MMU 指令MMU;

Data MMU 數據MMU;

InstructionC ACHE(16KB) 指令cache;

Data CACHE (16KB) 數據cache

全都通過CP15協處理器來進行操作這些

協處理器的含義作用 coprocessor協助主處理器做某些事情, 比如在ARM系統中有cp0 – cp15一共16個協處理器,其中cp15負責管理mmu icache

寫一個程序,0到100求和

int sum() { int I; int sum =0; for(i=0; I <= 100; i ) sum = I; return sum; }

查看反彙編代碼

cpu可向cache發出請求(Cache簡述及協處理器指令)3

局部變量保存在棧中,也就是内存

70: e50b3014 str r3, [fp,#-20] //這個應該就是sum 假設地址是A 78: e50b3010 str r3, [fp, #-16] //這個應該就是I 假設地址是B ldr r3, [fp, #-16] //也就是地址B中取出值 cmp r3, #100 //跟100比較 //如果大于100程序跳到 a8 如果小于100則執行下面的for循環 從7c: 到 a4 指令保存在内存中,CPU根據這些執行進行操作

1 不斷的讀寫地址A和B

2 不斷的執行for循環裡面代碼

2.1 取指令

2.2 執行指令

問SDRAM非常慢,那麼怎麼提高程序執行效率? 先引入一個概念,程序局部性原理

  • 時間局部性:在同一段時間裡,有極大的概率訪問同一地址的指令或數據

(在這個for循環中同一個地址指令經常被訪問到)

  • 空間局部性: 有極大概率訪問到相鄰空間的指令/數據

我們在一個比較慢的SDRAM上能不能在CPU上開一個高速緩存,把這些指令放進高速緩存icache

cpu可向cache發出請求(Cache簡述及協處理器指令)4

指令cache隻有16KB 數據cache也隻有16KB 而我們的SDRAM有64MB空間,顯然擦車不可能存儲SDRAM中所有的内容,它隻能存儲一部分

cpu可向cache發出請求(Cache簡述及協處理器指令)5

cache的示意圖

以數據開始為例

  • 1 程序要讀地址A的數據

ldr r0, [A的數據]

a. cpu以地址A查找cache,一開始cache無數據,導緻cache miss

返回一系列的數據,叫做cache line: 8word 32byte

b. cpu把地址A發到SDRAM,讀入cache line,成為cache file 把地址A上的數據返回給CPU 2 程序再次讀取地址A的數據 a cpu以地址A查找cache,cache hit有數據直接從cache返回數據給CPU

3 程序要讀地址B的數據,CPU也是以地址B查找數據,cache hint直接返回

4 cache滿了,CPU訪問C a cache替換,置換老的數據 b 填充新數據

數據寫

write buffer

查看2410芯片手冊 附錄 appendix4-caches, write buffer 585頁

cpu可向cache發出請求(Cache簡述及協處理器指令)6

設置為NCNB (no cache no buffer)數據直接到達硬件不經過緩沖器

比如GPFDAT寄存器CPU讀寄存器的時候想讀到引腳狀态,不應該從cache讀取老的數據,而是不斷直接訪問硬件返回最新的數據 對于這些寄存器應該設置為NCNB

cpu可向cache發出請求(Cache簡述及協處理器指令)7

不使用cache但數據寫到buffer中,CPU就不管了 由write buffer直接進行寫操作 CPU直接操作下一條指令

cpu可向cache發出請求(Cache簡述及協處理器指令)8

  • 第一種不使用cache buffer 适用于直接硬件操作 gpio 得到最新數據
  • 第二種 不使用cache使用write buffer, cpu把寫發給buffer,cpu就可以直接下一條指令
  • 第三種 WT 寫通方式 使用cache不使用buffer,馬上寫硬件

CPU直接寫給write buffer 由write執行緩慢寫操作

  • 第四種 寫回方式

miss: cpu數據直接到達write buffer hit: cpu數據寫入cache标記為dirty,讓後會在合适的時機由write buffer寫給硬件

  • 合适的時機

cache替換時dirty會寫給write buffer寫給硬件

或者強制Flash cache 寫給write buffer 寫給硬件

下節講協處理指令

「新品首發」STM32MP157開發闆火爆預售!首批僅300套

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved