首页> 中国专利> 用于ARM处理器的存储器加速器

用于ARM处理器的存储器加速器

摘要

一种存储器加速器使用判定性存取协议缓冲程序指令和/或数据以便高速存取。该程序存储器从逻辑上被划分为“带”,即“循环顺序的”分区,并且该存储器加速器模块包括与每个分区关联的锁存器。当存取一个特定的分区时,它就被加载到与其相应的锁存器中,并且在下一个顺序分区中的那些指令被自动预取到与它们相应的锁存器中。在这种方式中,顺序存取过程的性能将会有已知的响应,因为当该程序后续这些指令时,从下一个分区中预取的那些指令就在锁存器中。在该预取过程“循环结束”并且覆盖每个被顺序存取的锁存器的内容之前,以前所存取的块仍然在它们相应的锁存器中。在这种方式中,相对于存储器的存取,循环过程的性能将仅根据该循环的长度被确定。如果该循环小于指定的长度,它将被执行而不覆盖现有的锁存器,因此随着它重复执行包含于锁存器中的那些指令时,将不会引起存储器存取的延迟。如果该循环大于给定的长度,它将覆盖包含该循环部分的现有锁存器,因此要求后序地重加载与每个循环有关的锁存器。因为预取是自动的,并且它的确定仅取决于当前被存取的指令,所以与该存储器的加速相关的复杂度和开销是最小的。

著录项

  • 公开/公告号CN1462387A

    专利类型发明专利

  • 公开/公告日2003-12-17

    原文格式PDF

  • 申请/专利权人 皇家菲利浦电子有限公司;

    申请/专利号CN02801335.2

  • 申请日2002-02-19

  • 分类号G06F9/345;G06F9/38;G06F9/32;

  • 代理机构72001 中国专利代理(香港)有限公司;

  • 代理人程天正;梁永

  • 地址 荷兰艾恩德霍芬

  • 入库时间 2023-12-17 15:05:30

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-02-08

    未缴年费专利权终止 IPC(主分类):G06F 9/345 专利号:ZL028013352 申请日:20020219 授权公告日:20081210

    专利权的终止

  • 2008-12-10

    授权

    授权

  • 2007-12-05

    专利申请权、专利权的转移专利申请权的转移 变更前: 变更后: 登记生效日:20071102 申请日:20020219

    专利申请权、专利权的转移专利申请权的转移

  • 2004-05-05

    实质审查的生效

    实质审查的生效

  • 2003-12-17

    公开

    公开

说明书

相关申请的交叉引用

本申请涉及到同期提交的US专利申请“循环顺序存储器的预取”,它的序列号为09/788,692(代理人文档案US 018012)。

                            发明背景

1.发明领域

本发明涉及电子处理设备的领域,具体地,涉及使用高级RISC机(ARM)体系结构以及闪存的处理系统。

2.相关技术描述

高级RISC机(ARM)体系结构一般用于特殊目的应用和设备,诸如,用于消费产品的嵌入式处理器、通信设备、计算机外设、视频处理器等。这种设备典型地由生产商编制程序,以便实现预期的功能。这种程序和这些程序一般都被加载到“只读”存储器中,它可以是持久性的(掩蔽的-ROM)或者是非易失性的(EPROM、EEPROM、闪存),它可以被一起定位或者是位于ARM处理器的外部。只读存储器典型地包含那些执行预期功能所需要的指令、以及数据和那些保持常量的参数;典型地也提供其它的读写存储器(RAM)以便存储瞬时数据和参数。在ARM体系结构中,对存储器和外部设备的存取通过高速总线。

为了允许生产商来校正程序中的错误,或者是给现有设备提供新的特征或功能,或者是允许更新“常量”数据或参数,只读存储器常常被配置成是可重编程的。“闪”存就是一种可重编程的只读存储器的常用选择。如果不使用一组特定的信号,闪存中的内容是持久并不能更改。当使用合适的信号组时,对程序的修正就可以被下载,或者可以修正数据或参数,例如为了保存一组用户优先选择的参数或者是其它相对永久的数据。

然而,一般来讲,与存取其它存储设备例如寄存器或锁存器等所需要的时间相比,存取闪存中的程序或数据所需要的时间要长的多。如果处理器直接从闪存中执行程序指令,那么存取时间将会限制该处理器所能达到的速度。可选地,当设备初始化时,闪存可以主要配置为给候选的更高速的存储器提供数据和程序指令的持久存储装置。然后,处理器从更高速的存储器中执行那些指令。然而,这种冗余的方法却需要容量相对大并且速度更高的用于分配给程序存储的存储器,从而就降低了用于存储和处理数据的更高速存储器的数量。

为了降低执行程序指令所需要的冗余高速存储器的数量,同时还能提供更高速存储器的优点,常采用高速缓存器技术有选择地把部分程序指令放到该更高速的存储器中。在常规高速缓存器系统中,程序存储器要被划分成块,即段。当处理器首次存取一个特定块中的指令时,那个块就要被加载到该更高速的高速缓存器中。在把指令块从较低速存储器转到高速缓存器期间,该处理器必须等待。然后就从高速缓存器执行所加载的块中的各指令,从而就避免与从较慢速存储器中存取各指令关联的延迟。当存取另一个块中的指令时,这个另外的块就要加载到高速缓存器中,同时该处理器还要等待,接着就从高速缓存器执行这个块中的指令。典型地,高速缓存器被配置成允许存储多个块,以防止“抖动”,其中要继续向在高速缓存器中放块,然后它由另一个块覆盖,接着又放回到高速缓存器中。有多种模式可以用于优化高速缓存器系统的性能。存取块的频率常规地作为这样的一种标准,该标准用于确定当要把新块加载到高速缓存器时,高速缓存器中的哪些块要被替换。此外,预测技术能够加以应用以便预测下一次要存取存储器中的哪个块或哪些块,并把合适的块预取到高速缓存器中,以便当需要时就能够在高速缓存器中找到那些指令。

常规的高速缓存器管理系统相对要复杂一些,在使用预测技术的情况下更加明显,它需要用很大的开销进行维护诸如每个块的存取频率、其它高速缓存器的优先次序的参数。用于特定程序的高速缓存器系统的性能也是难以预测的,并且由于定时问题导致的程序错误也很难隔离。导致高速缓存器性能不可预测的主要原因之一就是“边界”问题。高速缓存器必须要配置成能实现存储器中至少两个块能够同时保持在高速缓存器中,以便避免当程序循环延伸跨过块间的边界时,出现“抖动”。如果进行变动而能使该循环不再延伸跨过边界,那么高速缓存器就可以用于包含其它块,因此该性能在每种情况下都会不同。然而,这种变动可能会产生与仅变动长度完全不相关的变动的副作用,从而会移动该循环在存储器中的位置。同样地,一个循环的执行次数可能会是一个特定函数的参数的函数。这样,在前面提到的与每个块关联的存取频率参数在不同的用户条件下也会不同,从而导致在每次运行相同程序时却要分配不同的高缓冲存器的空间。

因为基于ARM的微控制器常常用在要求高性能的应用、时间要求严格的应用上,所以定时的预测性常常就成为一个基本的特点,它常常会使基于高速缓存器的存储器存取模式不可行。此外,高速缓存器的存储典型地要消耗量相当大的电路区、大量的功率,从而使它在通常使用微控制器的低成本或低耗电的应用上不切实际。

                      发明简述

本发明的一个目的是提供一种能够实现高效存储器存取过程的微控制器存储器体系结构。本发明的另一个目的是提供一种这样的微控制器体系结构,该微控器体系结构能提供具有最小开销和最低复杂度的高效存储器存取过程。本发明的又一个目的是提供一种具有高预测性能的高效存储器存取过程的微控制器存储器体系结构。

通过提供一种存储器加速器模块实现了这些和其它目的,该存储器加速器模块使用判定性存取协议缓冲程序指令和/或数据以便高速存取。该程序存储器从逻辑上被划分为“带”,即“循环顺序的”分区,并且该存储器加速器模块包括与每个分区关联的锁存器。当存取特定分区时,它就被加载到其相应的锁存器中,并且在下一个连续的分区中的那些指令就被自动预取到它们相应的锁存器中。以这种方式,顺续存取过程的性能将会有一个已知的响应,因为,当该程序按顺序进行到从下一个分区中所预取的那些指令时,它们会已在锁存器中了。在该预取过程“循环结束”并覆盖每个被顺序存取的锁存器中的内容之前,以前存取的块仍然会保留于它们相应的锁存器中。在这种方式中,相对于存储器存取,一个循环过程的性能将仅根据该循环的长度来确定。如果该循环小于给定的长度,它将被执行而不会覆盖现有的锁存器,因此当它重复执行那些包含于该锁存器中的指令时,将不会引起存储器存取的延迟。如果该循环大于一个给定的长度,那么它将会覆盖包含该循环部分的现有锁存器,因此它需要后续地重新加载与每个循环相关的锁存器。因为预取是自动的,并且它的确定仅依赖于当前被存取的指令,所以与该存储器的加速关联的复杂度和开销是最小的。

                        附图简述

通过举例方式,并参照随附的附图,对本发明进行更详细的解释,这些附图包括:

图1展示根据本发明,配有存储器加速器的微控制器示意块图。

图2展示根据本发明,存储器加速器和存储器结构的示意块图。

在所有这些块图中,相同的参考数字表示相似和相应的特征或功能。

                          发明详述

图1展示微控制器100的示意块图,它包括处理器110,该处理器配置成执行位于闪存102中的程序指令和/或存取数据。为了便于参考和理解,本发明的描述使用ARM处理器100的范例,该处理器通过高性能总线101与存储器120和其它部件通信。相似地,为了便于参考,加载程序指令的范例用于说明本发明的原理。对于本技术领域一般技术人员显而易见的是,在说明中所描述的原理也可以应用到其它计算机存储器体系结构以及构造中;并且所说明的这些原理同样可以应用于加载存储器中的程序指令或数据。这里所使用的术语“数据项”指程序指令或数据。

根据本发明,存储器加速器200位于总线101和存储器120之间,并且它被配置成把处理器110的性能从存储器120的性能中隔离出来。加速器200包含存储器元件,与存储器120相比,它们存取的速度明显更快一些。优选地,从加速器200中获取指令消耗的存储器存取时间,与处理器110执行指令所需要的时间相比,要更小一些,因此,对存储器的存取时间将不会对处理器110的性能产生影响。存储器加速器200要加以配置以便能存储最近所存取过的指令,因此对相同指令,例如,一个循环体中的指令,所做的重复存取,能够从该加速器200中获得,而不要求后续地存取存储器120。此外,该存储器加速器200要被配置成有多条并行存取存储器120的路径,并且在存取存储器120中的连续指令期间,这种并行机制允许加速器200能缓冲对该存储器120所进行的更慢速的存取。

共同待审的美国专利申请“循环顺序存储器的预取”,序列号09/788,692,它于2001年2月17日提交,其发明人为Gregory K.Goodhue、Ata R.Khan和John H.Wharton,该申请的代理人文档号为US018012。该申请说明一种存储器存取模式,在这种模式中,它考虑了最小复杂度和开销下的高效存储器存取,这里引用作为参考。图2展示存储器加速器200和存储器120的相应逻辑结构的示范实施例,它以该共同待审的申请中所说明的原理为基础。

如图2中所展示的那样,存储器120在逻辑上被划分为四个四分之一分区120a-120d。这些四分之一分区形成“带”,即(图1的)存储器120的地址空间的“循环顺序的”分区。在该例中,假定每个指令是32位字,组织为4个8位字节。按照字节编址的顺序指令示例(00,04,...)使用十六进制符号在每个四分之一分区120a-120d都有说明。如所展示的那样,每个四分之一分区包括四个连续字的“行”(十六字节,即128位),并且在每个四分之一分区中的那些地址是互相连续的。即,例如,分区120a包含地址00、04、08和0C处的字;下一组的四个字在地址10、14、18以及1C,它们位于下一个分区120b中。最后的分区包含地址30、34、38以及3C处的字,下一组的四个字在地址40、44、48以及4C,它们位于第一四分之一分区120a。术语“段”在后面代替“行”,用于表示从第一分区的第一存储器的存储单元到最后分区的最后存储器的存储单元的一个单一的一组连续的存储器的存储单元。即,例如,第一段与地址00-3F对应;下一段与字地址40-7F对应,等依此类推。

分区数以及每分区的字数是根据(图1的)处理器110的相对速度和存储器120的存取速度来确定的,从而使从该存存器的分区中加载N个指令的时间小于执行这N个指令所需要的时间。优选地,分区数和每分区的字数每个是2的幂,使得能够根据形成该存储器120中指令的地址的比特的子集来存取每个分区和每个指令。为了便于理解和参考,图2中的四个四分之一分区以及每分区四个字的结构的示例将在下面论述,但这样做并不是要把本发明的预期范围限制于这种划分方式。

指令锁存器220与四分之一分区120a-d中的每一个均关联。当处理器请求存取特定存储器地址的指令时,包含那个地址的四字组就能从恰当的四分之一分区120a-d中获得,然后把它们存储到相应的指令锁存器220中。该请求的指令随后就通过(图1的)的总线101从锁存器220提供给处理器110。如果锁存器220已经包含该请求的指令,这些指令是以前从存储器120中所加载的指令,那么该指令就能够直接从锁存器220中供应给处理器110,从而就能够避免存取存储器102。

给地址锁存器130提供四分之一分区120a-d中的每一个,以便存储来自总线101并与所请求的指令地址相对应的地址,它允许在该总线上生成流水线地址。在四个四分之一分区划分的示例中,每个四分之一分区包含四个字,即16个字节,地址的低四位,A[3:0],相当于16个字节;该地址的下两个高位,A[5:4],相当于特定四分之一分区;其它高位,A[M:6],此处M是该地址的长度,相当于每四个四组字中的具体段。在ARM的示例中,地址的长度是18位宽,并且段地址相当于A[17:6]。该地址被存储在已编址的四分之一分区的120a-d的地址锁存器130中。该四分之一分区地址A[5:4]用于启用与该已编址的四分之一分区对应的锁存器。当该已编址的四字组,A[17:4],被加载到相应的地址锁存器130中时,段地址,A[17:6]就被加载到指令地址锁存器(IAL)210中,该指令地址锁存器对应于地址锁存器130。该四分之一分区地址A[5:4]启用相应的指令锁存器220以及指令地址锁存器210以便分别接收该指令和段地址。

当地址A[17:2]的指令收到处理器110的请求时,相应IAL 210(已编址为A[5:4])的内容要和所请求的段地址A[17:6]相比较,该所请求的段地址由图2中菱形的判定块240所展示。如果在IAL 210所存储的段地址相当于所请求的段地址,则相应的指令锁存器220的内容就提供给字多路复用器230。该指令地址的低阶位,A[3:2],用于选择存储于指令锁存器220的四字组内的特定指令。已编址的字多路复用器230的输出是通过四分之一分区多路复用器250来选择,并且被放在总线101上。其它的多路复用和选择模式很显然是本领域的常用技术之一。如果存储于IAL 210的段地址与所请求的段地址不对应,那么所请求的段就从存储器120首先被加载到指令锁存器220中,然后该加载的段地址就加载到IAL 210中,并且锁存器220中的内容就要被加以选择以便如上面所描述的那样放到总线101上。

根据本发明,当要存取一个四分之一分区(120a、b、c、d)中的指令时,在下一个循环顺序的四分之一分区(120b,c,d,a)中的那些指令根据对这些指令的后续存取的预期被自动加载、或者预取到相应的锁存器220中。如上面所描述的,给每个段所分配的每个四分之一分区的字的数目N优选地要进行选择,要求处理器110执行这N个指令所消耗的时间要大于从存储器120中预取下一个四分之一分区中的指令所消耗的时间,使得当处理器110顺序前进到这些指令时,这些相应的指令就已包含于下一个循环顺序的指令锁存器220中。用这种方式,程序的连续顺序部分的执行除了在首次存取这第一组N个指令时会有延迟之外就不会因为存储器存取而造成延迟。从另一方面看,通过增加四分之一分区的宽度N,较慢一些并且不怎么贵的存储器120也能用在系统中。

如图2所展示的,提供预取增量器260以便当最后的四分之一分区120d是已编址的四分之一分区时,有助于从第一四分之一分区120a中预取各指令,从而在存取最后的四分之一分区时,实现对下一个四分之一分区的循环顺序存取。为了存取最后四分之一分区之外的其它四分之一分区,在下一个四分之一分区中指令的段数目就要和当前被编址的段数目相同。如果下一四分之一分区的指令锁存器220已经包含与已编址指令相关的下一个指令组,根据对该已编址的四分之一分区和段以前的存取,就可避免上面的预取过程。

在顺序指令和段循环的典型的流程中,指令锁存器220组的“稳定态”条件应该是这样的即,一个锁存器包含当前所存取的指令,并且至少一个锁存器包含下一个顺序指令组的内容,其它锁存器将包含当前所存取的指令之前的那些指令。在图2的实施例中,其中锁存器220被配置成包含最多达16个指令,如果一个程序循环包含的指令不超过9个,那么就可以保证在它的首次迭代之后它们已包含于锁存器220的指令组中,而不用关心该循环相对于四分之一分区边界的位置。类似地,如果该循环包含的指令超过12个,因为在首次迭代期间,当执行到该循环末尾时,在该循环末尾之后至少要有四个指令要加载道该锁存器220中所以就保证它们不包含于指令组220中。如果该循环包含指令为10-12个,它可能或者可能不完全包含于锁存器220中,这要根据该循环相对于四分之一分区之间边界的位置。因此,除了包含10-12个指令的循环之外,取决于存储器的存取时间的执行该循环所需要的时间,能够被确定而不需要关心该循环在存储器120中的实际位置。对于包含10-12个指令的循环,执行该循环所需要的时间也是可以确定的,但是它要仅在该程序已被分配给具体的存储器存储单元之后才能确定。从另一方面看,存储器的分区数目,即每分区宽度的指令N的数目是能够加以调整的,以便给特殊预期的循环长度提供有效的性能。

因为除了那些长度为10-12的指令的循环外,每个循环的性能仅取决于该循环的长度,所以用户能够有意的构造9个指令或更少指令的临界循环。同样地,若该循环不能够在12个指令范围实现,则用户知道在该循环中必然出现存储器存取延迟的情况下,可以有意判定该循环是否满足它的时间约束。包含10-12个指令的循环的性能可以相似确定,但是它要在该循环已分配到存储器,或者分配到是这样的存储器虚拟块之后才能得到确定,该存储器虚拟块与存储器四分之一分区120a-d的边界有已知的对应。值得注意的是,每循环的存储器存取延迟的最大数目是1,而不用关心长度。对于那些指令数小于9的循环以及有些长度为10-12个指令的循环,每循环的存取延迟数是0,对于其它循环,每循环的存取延迟数是1,因此,性能最差的情况会出现在13个指令的循环中;随着循环长度的增加,与13个指令的循环相比较,自动顺序预取就会不断地消除存储器存取的延迟,从而提高总体的存储器存取效率。

根据本发明的另一方面,由存储器加速器200所提供的加速程度能够得到控制,从而增加所需要的程序的判定性性质。在这个实施例中,锁存器220有选择地被配置成实现对前面所提到的存储器存取的全部、或者部分、或者没有的优化。自动预取是可以独立加以控制的,这用于检查判定所请求的指令是否已经包含在锁存器220中。每当碰到非顺序的程序指令序列时,另一种存取方式也要从存储器120强迫进行读取操作。即,在这一备选存取方式中,执行分支指令必然会引起存储器存取的延迟。提供的这些选择中的每一种允许在决定性和性能之间作出权衡,并且将会取决于用户选择的判定性和性能之间的平衡。在一种优选实施例中,所提供的应用程序把用户的选择转换成相应的配置设置或命令。

前面的说明仅展示了本发明的原理。因此,应当理解的是,那些熟悉本技术领域的技术人员能够设计出各种这样的装置,尽管这些装置在这里没有给予明确的描述或者展示,但是它们应能体现本发明的原理同时还要在本发明的要旨和范围之内。例如,并行的锁存器210和220组能够被配置成加速存储器存取那些包含于存储器120的数据。对这些数据的存取优选与对程序指令的存取隔离开来,从而在存储器120中的指令包含对同样地包含于存储器120中的数据项的参考时,能防止出现抖动。代替提供四个数据地址组和数据锁存器组以及代替从下一个顺序系列的数据中自动预取数据,一个数据地址和数据锁存器是能够被提供的以便仅用于缓冲存储当前所存取的四分之一分区。这样就减少缓冲存储数据项存取所需要的资源,但是这并没有减少数据存取的延迟,该数据存取延迟减少在存储器中的数据基本上是连续地或重复地被存取时才可以实现。以类似的方式,并行的锁存器210和220组也可以供给应用于存取不同级别或类型的存储器。例如,如果该系统包括内部和外部两种存储器,那么一组独立的锁存器可以供给用于这样的每个、每组锁存器,这些锁存器根据正在被加速的具体类型的存储器的性能和容量而加以配置,例如,通过使用较慢速存储器的较宽寄存器等。这些和其它系统配置和优化的特点通过对说明书的理解,对于本领域的普通技术人员是显而易见的,它们都包含在下述的权利要求中的范围中。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号