处理器访问内存时,CPU核、cache、…

原创 2016年08月30日 18:01:18

处理器访问内存时,CPU核、cache、MMU如何协同工作


                                                  图1  CPU访问内存时的硬件操作顺序


CPU访问内存时的硬件操作顺序,各步骤在图中有对应的标号:

1:CPU内核(图1中的ARM)发出VA请求读数据,TLB(translation lookaside buffer)接收到该地址,那为什么是TLB先接收到该地址呢?因为TLBMMU中的一块高速缓存(也是一种cache,是CPU内核和物理内存之间的cache),它缓存最近查找过的VA对应的页表项,如果TLB里缓存了当前VA的页表项就不必做translation table walk了,否则就去物理内存中读出页表项保存在TLB中,TLB缓存可以减少访问物理内存的次数。

 

2:页表项中不仅保存着物理页面的基地址,还保存着权限和是否允许cache的标志。MMU首先检查权限位,如果没有访问权限,就引发一个异常给CPU内核。然后检查是否允许cache,如果允许cache就启动cacheCPU内核互操作。

 

3: 如果不允许cache,那直接发出PA从物理内存中读取数据到CPU内核。

 

4:如果允许cache,则以VA为索引到cache中查找是否缓存了要读取的数据,如果cache中已经缓存了该数据(称为cache hit)则直接返回给CPU内核,如果cache中没有缓存该数据(称为cache miss),则发出PA从物理内存中读取数据并缓存到cache中,同时返回给CPU内核。但是cache并不是只去CPU内核所需要的数据,而是把相邻的数据都取上来缓存,这称为一个cache lineARM920Tcache line32个字节,例如CPU内核要读取地址0x30000134~0x30001374个字节数据,cache会把地址0x30000120~0x3000137(对齐到32字节地址边界)32字节都取上来缓存。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

CPU访问内存

首先我们需要一个引子,引子如下: 作为一个计算机领域的工程师,这里有一个问题:有一个10米深的水池需要测量其水深,并在计算机(或者微机)上显示测量结果,保留小数点后一位。请概要的设计这个系统。 分...

linux内核态与用户态通信方式

下面对linux内核态与用户态通信方式中的procfs进行讲解。 /proc主要存放内核的一些控制信息,所以这些信息大部分的逻辑位置位于内核控制的内存,在/proc下使用ls -l你会发现大部分的文...

ADI Blackfin处理器的C语言编程与优化——内存Memory和Cache优化

以上章节讲述了在ADI Blackfin系列上的C语言优化方法,如何利用DSP的特性进行循环和条件控制语句的具体优化策略,该部分则主要讲述如何优化memory的性能,以及如何实现速度speed vs....

ARM协处理器与MMU(内存管理单元)、Cache协同工作---(以三星S3C2410为例)

本文首先从总体上介绍MMU、Cache和CPU核是如何协同工作的,然后分别讲解MMU和Cache的细节。三星公司的S3C2410是一种很常见的采用ARM920T的芯片,涉及到具体的芯片时我们以S3C2...

CPU与Cache、内存以及硬盘之间的数据交换

今天一个同学问我一个问题,CPU与Cache、内存、以及硬盘之间是如何进行数据传输?我给同学了一个笼统的解释。当我再细想这个问题的时候,我发现这个问题并不是想的那么简单,而且想地越深会感觉细节的东西会...

使用GetLogicalProcessorInformation获取逻辑处理器的详细信息(NUMA节点数、物理CPU数、CPU核心数、逻辑CPU数、各级Cache)

现在多核处理器已经很普及了,市场主流是双核处理器,还有4核、8核等高端产品。而且Intel推广了超线程技术(Hyper-Threading Technology, HTT),可以将一个物理核心模拟为两...

使用GetLogicalProcessorInformation获取逻辑处理器的详细信息(NUMA节点数、物理CPU数、CPU核心数、逻辑CPU数、各级Cache)

现在多核处理器已经很普及了,市场主流是双核处理器,还有4核、8核等高端产品。而且Intel推广了超线程技术(Hyper-Threading Technology, HTT),可以将一个物理核心模拟为两...

使用GetLogicalProcessorInformation获取逻辑处理器的详细信息(NUMA节点数、物理CPU数、CPU核心数、逻辑CPU数、各级Cache)

现在多核处理器已经很普及了,市场主流是双核处理器,还有4核、8核等高端产品。而且Intel推广了超线程技术(Hyper-Threading Technology, HTT),可以将一个物理核心模拟为两...
  • zyl910
  • zyl910
  • 2012-05-08 18:13
  • 6344

英特尔扬言未来处理器 轻松搞定百核CPU

目前英特尔一项研究项目已经生产出了80核芯片。英特尔首款4004CPU,具有面部识别功能的智能相机、具备强大分析功能的表格管理程序、能够自驾的汽车、相当便宜且功能多样的平板电脑、还有智能手机等都已经习...

CPU : 什么是双核处理器

CPU : 什么是双核处理器 双核处理器(Dual Core Proces...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)