CN100390755C - 含有显式高速缓冲存储器的计算机微体系结构 - Google Patents
含有显式高速缓冲存储器的计算机微体系结构 Download PDFInfo
- Publication number
- CN100390755C CN100390755C CNB2003101010676A CN200310101067A CN100390755C CN 100390755 C CN100390755 C CN 100390755C CN B2003101010676 A CNB2003101010676 A CN B2003101010676A CN 200310101067 A CN200310101067 A CN 200310101067A CN 100390755 C CN100390755 C CN 100390755C
- Authority
- CN
- China
- Prior art keywords
- ecache
- data
- memory
- cache
- register
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 230000015654 memory Effects 0.000 claims abstract description 80
- 238000012546 transfer Methods 0.000 claims description 2
- 238000000034 method Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 238000005457 optimization Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 239000012467 final product Substances 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
一种含有显式高速缓冲存储器的计算机微体系结构,包括内存、cache、寄存器和运算部件,还包括位于CPU芯片内的Ecache,所述Ecache与内存统一编码。本发明的Ecache位于CPU芯片内,因此可保证硬件实现对Ecache的快速访问;Ecache与内存统一编址,且从小地址开始,因此在所有访存指令中,访问Ecache的地址显式出现(可见),硬件易于识别与实现。设计的几组指令,支持编译器和运行程序对Ecache的显式使用和动态管理。这些指令与Ecache是不可分的整体。
Description
技术领域
本发明涉及计算机系统,特别涉及含有显式高速缓冲存储器(简称Ecache)的计算机微体系结构。
技术背景
过去50年里,计算机性能大体上按Moore定律增长,主要依靠的技术是提高机器的工作频率和使用各种并行机制。存储技术虽然也有发展,但是存储器速度与处理器速度相比仍有很大差距。现代计算机在内存和寄存器之间设有一级、二级,甚至三级高速缓冲存储器(Cache),希望能重用Cache中的数据,以缓解访问内存速度慢的矛盾(见图1)。
为什麽在芯片内增加Cache能缓解访存矛盾呢?我们以CPU读数据的过程为例,简要说明Cache的工作过程(Cache的工作原理见图3)。
Cache由若干个块组成(图3中的阴影部分就是一个块),每个块又分两个部分,即图中示出的标记部分(TAG)和数据部分(DATA)。数据部分存放的是来自内存的数据,标记部分存放的是与该数据对应的标记,标记实际上对应着该数据在内存中的位置。CPU读数据的过程,由下面几个步骤组成(这是由硬件自动完成的):
1.用访存地址的低位部分对Cache进行译码,确定本次访问是针对哪一个Cache块进行的。在本例中,阴影块被选中;
2.将被选中的那个块的标记部分与访存地址的高位部分进行比较,看是否相等;
3.如果相等,说明本次访问的数据在Cache里,称为命中,直接将被选中的块的数据部分送给CPU即可。完成这一步大约需要1-3个时钟周期;
4.如果不相等,说明本次访问的数据不在Cache里,称为不命中,则需从内存取出相应的数据,放入Cache,也送给CPU。如果Cache已装满数据,则需按某种替换规则将某一Cache块回写到内存,等到回写完成后,才能将从内存取来的数据放入Cache。此过程相当慢,因此完成这一步平均需要40-50个时钟周期。
从上面介绍的Cache工作过程可以得到Cache的若干特征:
1)一级Cache在CPU芯片中,保证对Cache中数据的访问有较快的速度;
2)Cache有一套机制(控制电路),判断访存数据是否在Cache中。如果不在Cache中,则要从内存取数据,还要维护Cache和内存的数据一致性。访存不命中Cache是造成延迟的主要原因;
3)Cache结构对编译器来说是不可见的,知道它的存在,但不可以将重用性好的数据有目的地分配到Cache中。
不难看出,重用Cache中的数据是提高访存性能的关键。用户程序能否充分地利用Cache中的数据,是由程序自身行为决定的。编译器的优化任务之一就是要挖掘出程序中潜在的数据局部性(包括时间局部性和空间局部性),利用各种程序变换技术,使编译后的目标代码达到减少访存时间和加速执行速度的目的。
访存数据通常分为四类:只读数据(常量),全局静态数据,栈数据和堆数据。编译器为每个被编译的程序在内存中划出四个相应的数据区,分别存放上述四类数据。四个数据区的划分与分布见图5。只读数据和全局静态数据由编译器和连接器静态分配。栈数据区用作过程(函数)的活动纪录(frame stack),其结构见图7。每个过程的frame stack按“先进后出”原则,动态地分配到栈区。堆数据区用作数据对象(如数组等)的动态分配。
根据对SPEC CPU 2000基准测试程序所做的统计分析,平均有大约45%的执行时间是花在访存上,其中54%是访问栈数据。由于很多时间花在了访存上,再加上其它的延迟,使得计算机的实际性能处在峰值的25%~30%之间。
目前编译器对访存的优化主要是针对循环和数组的。以图8中程序为例,当m较大,而b的m个元素:b(1),b(2),...b(m)不能全部装在Cache中时,该程序的局部性极差。编译器对它的j循环做循环分段和循环交换后,得到图9所示的程序,该程序具有良好的局部性,条件是Cache要能装下l个b元素。由于Cache对编译器来说是不可见的,堆数据又是动态分配的,编译和运行时都不能预见Cache的使用状态,故编译器实现局部性优化具有很多不合理性(如本例中l取多大合理?)。
编译器对被编译的程序分析后,可以较准确地知道其他三类数据(只读、全局、和栈)的数量和使用频率。如果硬件提供一个编译器可以分配和管理的高速缓冲存储器,则可将访问频率高(即重用性好)的数据分配在其中,这将对访存速度有很大的改善。
发明内容
本发明的目的在于给编译器提供一种可以静态分配,运行时管理的显式高速缓冲存储器(简称Ecache),利用编译技术使访存速度慢的矛盾得以缓解。
为实现上述目的,一种含有显式高速缓冲存储器的计算机微体系结构,包括内存、cache、寄存器和运算部件,还包括位于CPU芯片内的连接在寄存器和内存之间的显式高速缓冲存储器Ecache,Ecache与内存和寄存器的数据通路与cache共用,所述Ecache的编址从小地址开始与内存统一编址。
本发明的Ecache位于CPU芯片内,因此可保证硬件实现对Ecache的快速访问;Ecache与内存统一编址,且从小地址开始,因此在所有访存指令中,访问Ecache的地址显式出现(可见),硬件易于识别与实现。设计的几组指令,支持编译器和运行程序对Ecache的显式使用和动态管理。这些指令与Ecache是不可分的整体。
附图说明
图1是典型的带有一级Cache的CPU芯片结构及数据通路的示意图。
图2是在CPU芯片中增加Ecache的结构和数据通路的结构图。
图3是Cache工作原理图。
图4是Ecache和内存统一编址与地址空间划分的示意图。
图5为典型的常规编译器对数据区的划分。
图6为编译器对Ecache所做的数据区划分。
图7是编译器中使用的栈数据区结构。它的驻留地为内存。
图8是一个普通的循环程序。
图9是对图8中程序优化后的循环程序。
图10是利用Ecache和相应的传输指令对图8中程序所做的优化。其中取b(jj*i:jj*i+l-1)→eb(d:d+l-1)表示将l个b元素预取至Ecache中,eb(d:d+l-1)是指Ecache中可以使用的l个单元,eb(d:d+l-1)→b(jj*i:jj*i+l-1)是将计算结果送回内存b数组的相应位置。
具体实施方式
下面结合附图描述本发明。如图2所示,本发明在CPU芯片中增加一个Ecache,Ecache本质上是一个芯片内的高速存储器。Ecache的连接方式与现有计算机系统中的cache相同,一端接在寄存器上,另一端接在计算机系统中的内存上。并且,Ecache与内存和寄存器之间的数据传输共用cache已有的机制。
图4是Ecache和内存统一编址与地址空间划分的示意图。从图4可以看出,位于CPU芯片内的Ecache与位于CPU片外的内存统一编址,且是从小地址开始。在访问Ecache的实现上,首先判断访存地址是否<m。如果<m,则表示直接访问Ecache,编译器保证要访问的数据在Ecache中,没有命中与不命中的问题;如果地址≥m,则按原来的访存方式,经Cache访问。由于Ecache没有Cache那样复杂的控制电路,所以Ecache的访问速度比Cache快得多。
Ecache和Cache的不同之处在于,Cache虽然能够存放数据,但其存储位置是独立的,不列入内存的寻址空间,内存数据进入Cache是由硬件自动完成的。而Ecache是内存寻址空间的一部分,由于它被置于CPU芯片内,故访问的速度很快。另外,对它的使用如同使用芯片外的内存一样,是编译器可见,可分配和可管理的一段快速片上“内存”。编译器将Ecache划分出四个数据区(如图6所示)。由于Ecache和内存统一连续编址,当栈区不够使用时,自然下溢至相邻的内存;当栈区有剩余空间时,可用作堆数据分配。
为支持编译器对Ecache的有效使用和管理,本发明设计了以下几组指令:
1.设立一个存放传输数据个数的长度寄存器rl;并提供一条置rl长度的指令:
setr rl,n
其语义为将立即数n置于rl中。
2.为内存(memory),Ecache,寄存器(register)之间成组传输数据提供三组指令。
第一组:
tme md,ed,n表示从memory到Ecache
tem ed,md,n表示从Ecache到memory
其中,md和ed分别表示数据在memory和Ecache中的首地址,传输的数据个数为n。
第二组:
tmed md,ed,d表示从memory到Ecache
temd ed,md,d表示从Ecache到memory
其中,md和ed分别表示数据在memory和Ecache中的首地址,
传输的数组以跨距为d分布在memory中,传输数据的个数为rl中指示的个数。
利用这两组指令可以实现成组数据的预取和保存。图10是利用Ecache对图8中循环的优化。这两组指令的实现可以借用原Cache与memory之间的数据传输通路,外加一个控制传输数据个数的计数装置即可。
第三组:
ter ed,rd,n表示从Ecache到register
tre rd,ed,n表示从register到Ecache
其中ed为数据在Ecache中的首地址,rd为register的编号,n表示传输数据的个数。
利用这组指令可以快速实现寄存器的保留和恢复(处理寄存器的溢出问题)。硬件实现也可以利用Cache与register之间的数据通路。
Claims (6)
1.一种含有显式高速缓冲存储器的计算机微体系结构,包括内存、cache、寄存器和运算部件,其特征在于还包括位于CPU芯片内的连接在寄存器和内存之间的显式高速缓冲存储器Ecache,Ecache与内存和寄存器的数据通路与cache共用,所述Ecache的编址从小地址开始与内存统一编址。
2.按权利要求1所述的含有显式高速缓冲存储器的计算机微体系结构,其特征在于所述Ecache是内存寻址空间的一部分。
3.按权利要求1所述的含有显式高速缓冲存储器的计算机微体系结构,其特征在于所述显式高速缓冲存储器中的数据由编译器分配和管理。
4.按权利要求1所述的含有显式高速缓冲存储器的计算机微体系结构,其特征在于所述Ecache作为目标码的运行栈。
5.按权利要求1所述的含有显式高速缓冲存储器的计算机微体系结构,其特征在于所述Ecache作为目标码的只读数据和全局量驻留地。
6.按权利要求3所述的含有显式高速缓冲存储器的计算机微体系结构,其特征在于编译器可以用成组传输指令实现数据预取,对堆数据的快速访问。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2003101010676A CN100390755C (zh) | 2003-10-14 | 2003-10-14 | 含有显式高速缓冲存储器的计算机微体系结构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2003101010676A CN100390755C (zh) | 2003-10-14 | 2003-10-14 | 含有显式高速缓冲存储器的计算机微体系结构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1529244A CN1529244A (zh) | 2004-09-15 |
CN100390755C true CN100390755C (zh) | 2008-05-28 |
Family
ID=34304164
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2003101010676A Expired - Lifetime CN100390755C (zh) | 2003-10-14 | 2003-10-14 | 含有显式高速缓冲存储器的计算机微体系结构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100390755C (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101059775B (zh) * | 2006-04-19 | 2010-07-14 | 深圳市朗科科技股份有限公司 | 降低便携式设备功耗的方法 |
CN101620526B (zh) * | 2009-07-03 | 2011-06-15 | 中国人民解放军国防科学技术大学 | 一种减少流处理器片上指令存储器资源消耗的方法 |
CN101739358B (zh) * | 2009-12-21 | 2012-07-04 | 东南大学 | 利用虚存机制对片上异构存储资源动态分配的方法 |
CN102629191B (zh) * | 2011-04-25 | 2014-07-30 | 中国电子科技集团公司第三十八研究所 | 数字信号处理器寻址方法 |
CN102968379B (zh) * | 2012-10-24 | 2015-05-06 | 无锡江南计算技术研究所 | 一种寄存器分配方法、系统及处理器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1997024725A1 (en) * | 1995-12-29 | 1997-07-10 | Mukesh Chatter | High performance universal multi-port internally cached dynamic random access memory system, architecture and method |
WO1999005604A1 (en) * | 1997-07-28 | 1999-02-04 | Nexabit Networks, Llc | Multi-port internally cached drams |
CN1217506A (zh) * | 1997-11-07 | 1999-05-26 | 日本电气株式会社 | 高速缓存存储器系统 |
CN1329304A (zh) * | 2000-04-27 | 2002-01-02 | 显露结构开发研究所 | 基于寄存器地址环绕式处理的提前装载地址表项目无效 |
-
2003
- 2003-10-14 CN CNB2003101010676A patent/CN100390755C/zh not_active Expired - Lifetime
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1997024725A1 (en) * | 1995-12-29 | 1997-07-10 | Mukesh Chatter | High performance universal multi-port internally cached dynamic random access memory system, architecture and method |
WO1999005604A1 (en) * | 1997-07-28 | 1999-02-04 | Nexabit Networks, Llc | Multi-port internally cached drams |
CN1217506A (zh) * | 1997-11-07 | 1999-05-26 | 日本电气株式会社 | 高速缓存存储器系统 |
CN1329304A (zh) * | 2000-04-27 | 2002-01-02 | 显露结构开发研究所 | 基于寄存器地址环绕式处理的提前装载地址表项目无效 |
Also Published As
Publication number | Publication date |
---|---|
CN1529244A (zh) | 2004-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kim et al. | Toward standardized near-data processing with unrestricted data placement for GPUs | |
Ebrahimi et al. | Techniques for bandwidth-efficient prefetching of linked data structures in hybrid prefetching systems | |
Drepper | What every programmer should know about memory | |
US8738859B2 (en) | Hybrid caching techniques and garbage collection using hybrid caching techniques | |
CN102713837B (zh) | 用于管理并行高速缓存层级的指令 | |
CN104252392B (zh) | 一种访问数据缓存的方法和处理器 | |
EP2542973B1 (en) | Gpu support for garbage collection | |
Wehmeyer et al. | Influence of memory hierarchies on predictability for time constrained embedded software | |
Abbaspour et al. | A time-predictable stack cache | |
Gonzalez et al. | Hybrid access-specific software cache techniques for the cell be architecture | |
Kim et al. | Coda: Enabling co-location of computation and data for multiple gpu systems | |
Luk et al. | Memory forwarding: Enabling aggressive layout optimizations by guaranteeing the safety of data relocation | |
Schoeberl et al. | Data cache organization for accurate timing analysis | |
Guo et al. | Mira: A program-behavior-guided far memory system | |
Chang et al. | CASA: Contention-aware scratchpad memory allocation for online hybrid on-chip memory management | |
US8387009B2 (en) | Pointer renaming in workqueuing execution model | |
CN114816666A (zh) | 虚拟机管理器的配置方法、tlb管理方法及嵌入式实时操作系统 | |
CN100390755C (zh) | 含有显式高速缓冲存储器的计算机微体系结构 | |
Schoeberl et al. | Towards time-predictable data caches for chip-multiprocessors | |
CN101008923A (zh) | 面向异构多核体系的分段式存储空间管理方法 | |
Vijaykrishnan et al. | Supporting object accesses in a Java processor | |
Nguyen et al. | Scratch-pad memory allocation without compiler support for java applications | |
Rubin et al. | Virtual cache line: A new technique to improve cache exploitation for recursive data structures | |
Chakraborty et al. | Integrating software caches with scratch pad memory | |
Cher et al. | Cell GC: using the Cell synergistic processor as a garbage collection coprocessor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20080528 |