带指令缓冲的总线接口装置及其访问外部存储器的方法

文档序号:6654288阅读:214来源:国知局
专利名称:带指令缓冲的总线接口装置及其访问外部存储器的方法
技术领域
本发明涉及处理器接口访问控制技术,具体涉及一种带指令缓冲功能的总线接口装置及其外部访问方法,尤其涉及通讯领域的基于ARM 7 TDMI核与AHB总线接口装置以及通过该接口装置访问外部存储器的方法。
ARM公司(Advanced RISC Machines Ltd)设计的ARM 7 TDMI核(以下简称“核”)以及由其提出的AHB(Advanced High-performanceBus的缩写,指先进的高性能总线)高速片内总线规范已经在当前众多嵌入式微处理器系统中使用。在此类系统中,核将通过AHB总线访问存储器系统以及各种外围设备。由于核的外部存储器访问信号和时序与AHB总线规范有所不同,所以需要设计特殊的ARM 7 TDMI(指由ARM公司提供的32位嵌入式RISC微处理器)核的AHB总线接口。核的外部存储器接口具有32位地址线、32位数据线和若干控制信号。核提出的访问指令和访问数据操作都通过该接口完成。在指令序列不发生转移的情况下,连续的取指操作往往会被长时间内部操作指令(例如乘法指令)和数据访问指令所打断。另外,由于微处理器上运行程序均具有的局部性原理,访问指令和访问数据具有不同的特点访问指令的存储器访问地址具有很好的连续性,但是访问数据存储器访问地址则表现出很强的随机性。
在一般的微处理器系统中,大多采用动态存储器器件作为外部存储器。这类存储器的一个重要特点就是启动一次存储器访问需要很长的时间(典型的时间是60~80ns),但是一旦启动后对连续后续地址访问的存储器请求(即突发方式)却能很快地完成(典型的时间是10ns)。所以,尽量采用突发方式访问动态存储器器件成为提高外部存储器系统带宽的重要技术。
在已有的ARM 7 TDMI的AHB总线接口设计中(例如ARM公司在EASY AHB系统中所设计的Wrapper部件),都是直接将ARM 7 TDMI提出的存储器访问请求信号转化为AHB总线上的传输命令,而没有充分考虑指令访问和数据访问的不同特点。虽然程序的运行中指令序列并没有发生转移,但是由于插入了访问数据操作或长时间的指令执行操作,使得连续的访问指令操作变得不再连续。被打断后访问指令操作的地址虽然和前次指令访问的地址保持连续,但是仍然需要花费大量的时间以重新启动外部的动态存储器器件,这样无疑会延长核等待访问指令操作的时间。由于高速微处理器系统的主频可能会超过100MHZ,这个问题就显得尤其严重。
本发明的目的是提供一种带指令缓冲的总线接口装置以及通过该装置进行外部存储器访问的方法,可以应用于ARM 7 TDMI核与AHB总线的访问接口,通过充分考虑访问指令操作和访问数据操作的不同特点,可以克服了现有技术中连续访问指令被打断的缺点,解决现有技术中存在的ARM 7 TDMI核取指访问外部存储器效率不高问题。
本发明的目的是这样实现的,构造一种带缓冲功能的总线接口装置,包括设有空闲、取指和数据访问三种状态的AHB总线接口,与所述AHB总线接口连接的多路控制器,分别与所述多路控制器连接的指令缓冲单元、数据缓冲单元以及整合单元,所述整合单元包括一个有限状态自动机,用于和所述多路控制器配合,控制所述AHB总线在所述指令缓冲单元和所述数据缓冲单元之间进行切换以确保在任何时候只有其中一个缓冲单元在工作。
在按照本发明提供的装置中,所述整合单元中的有限状态自动机与所述多路控制器配合实现以下状态迁移在空闲状态收到取指请求后,进入指令缓冲请求状态;在指令缓冲请求状态下,指令缓冲进行取指操作,同时禁止数据缓冲的运作,在进行取指操作的同时,如果检测到数据缓冲有操作请求,则进入指令缓冲请求保持状态;在指令缓冲请求保持状态,数据缓冲的请求将保持直到指令缓冲操作结束为止,一旦指令缓冲操作结束,立即进入数据缓冲请求状态;在数据缓冲请求状态,进行数据缓冲的读数或写数操作,同时禁止指令缓冲运作,在进行数据读写操作的同时,如果检测到指令缓冲有操作请求,状态机将进入数据缓冲请求保持状态;在数据缓冲请求保持状态下,指令缓冲的请求将保持直到数据缓冲操作结束为止,一旦数据缓冲操作结束,立即进入指令缓冲请求状态;如此循环,在没有请求后,系统自动返回初始状态。
在按照本发明提供的装置中,所述指令缓冲单元包括用于存放指令的指令缓冲寄存器组211;可判断ARM 7 TDMI核发出的取指地址是否在所述缓冲寄存器组中的地址命中判断部件212;还包括核读指令控制部件213,用于接收ARM 7 TDMT核发出的访存请求,并根据所述地址命中判断部件212的判断结果,控制所述指令缓冲寄存器组211输出相应的指令字到所述ARM 7 TDMT核数据总线上,并产生满足ARM 7 TDMI核规范的时序信号;以及产生AHB总线访存的时序信号,并根据其响应向指令缓冲寄存器组211的相应地址写入从AHB总线读入数据的AHB读指令控制部件214。
在按照本发明提供的装置中,其特征在于,所述指令缓冲单元21中的核读指令控制部件213根据ARM 7 TDMI核输出的取指地址,并基于所述地址命中判断部件212判断该地址是否命中,如果取指地址命中所述缓冲寄存器组211,则所述核读指令控制部件213将按照ARM 7 TDMT核的规范回应系统等待信号,并将缓冲中的指令字回送到ARM 7 TDMI核的数据线上。
本发明的另一目的是这样实现的,一种基于带指令缓冲功能的总线接口访问外部存储器的方法,在总线接口中设置有指令缓冲单元和数据缓冲单元,还设置有控制单元,用于将可能会用到的指令事先利用突发方式通过AHB总线从外部存储器系统中取到指令缓冲单元,在随后的访问指令操作中,只要指令已经存在于缓冲单元中,即使是被访问数据或长时间操作指令所打断的访问指令操作也可以直接从缓冲单元中获得指令而无需访问外部存储器。
在按照本发明提供的装置中,当数据缓冲单元请求进行数据访问时,如果所述指令缓冲单元正在利用突发方式进行指令预取操作,则所述数据缓冲单元将等待指令预取操作结束,其中,使数据缓冲单元等待的方法是设置该缓冲的AHB总线从设备准备好信号为低。
在按照本发明提供的方法中,所述指令缓冲是这样进行的根据ARM 7 TDMI核产生的第一次取指地址,自动按照递增方式产生后续存储器地址,并利用8字回卷突发方式(指令缓冲容量设定为8个字)在AHB总线上获得存储器中的指令,并将其存放到缓冲中;当ARM 7TDMI核发生后续取指地址,指令缓冲将首先检测它是否处于当前缓冲中有效地址范围之内,如果要访问的指令不在缓冲之内,则将中断可能正在进行的先前指令预取操作,并刷新缓冲;随后将进行新的指令预取操作;如果取指地址在当前缓冲中的有效地址范围内,则ARM7 TDMI核将从指令缓冲器中得到相应的指令。
在上述按照本发明提供的方法中,所述数据缓冲的读数和写数操作是这样进行的当ARM 7 TDMI核进行读操作时,数据缓冲将首先启动一次AHB单独读操作,如果不是单独读而是连续读,则随后在AHB上采用连续预读方式,在连续读结束前抛弃前2次读回的数据;当ARM 7 TDMI核进行写操作时,数据缓冲将首先接收头两次写入的地址和数据,才决定采取何种方式写入如果第二次为连续方式就采用连续突发方式写入;如果第二次为非连续方式就采用单个突发方式写入。
在上述按照本发明提供的装置和方法中,所述ARM 7 TDMI核接口的请求和所述AHB接口的操作是并行进行的。
实施本发明提供的带指令缓冲的总线接口装置及其访问外部存储器的方法,可以应用到ARM 7 TDMI核的AHB总线接口上,与现有技术相比,保持了ARM 7 TDMI核的访问指令操作的连续性,大大提高了外部DRAM存储器系统的访问效率。
结合附图和实施例,进一步说明本发明装置和方法的特点,附图中

图1是说明本发明方法过程的逻辑流程图;图2是按照本发明的总线接口装置的总体结构示意图;图3是指令缓冲的结构图;图4是数据缓冲的结构图;图5是指令缓冲数据输出控制的结构图;图6是指令缓冲AHB总线地址和内部缓冲地址产生结构图;图7是数据缓冲有限状态机。
如图1所示,在说明本发明方法原理的流程图中,在本发明装置及方法中,通过整合单元设置有多个状态,在机器开始11通过系统复位,整合单元中的状态机进入空闲状态12,在接收到ARM 7 TDMI核发出的取指请求后,进入指令缓冲请求状态13。在该状态下,系统进行取指操作,同时禁止数据缓冲的运作。在指令缓冲进行取指操作的同时,整合单元如果检测到数据缓冲有操作请求,状态机将进入指令缓冲请求保持状态14。在该状态下,数据缓冲的请求将保持直到指令缓冲操作结束为止,一旦指令缓冲操作结束,立即进入数据缓冲请求状态16。在该状态下,数据缓冲进行读数或写数操作,同时禁止指令缓冲的运作。在数据缓冲进行读写操作的同时,整合单元如果检测到指令缓冲有操作请求,状态机将进入数据缓冲请求保持状态15。在该状态下,指令缓冲的请求将保持直到数据缓冲操作结束为止,一旦数据缓冲操作结束,立即进入指令缓冲请求状态。在该状态下,指令缓冲进行取指操作,同时禁止数据缓冲的运作。如此循环,在没有请求后,系统自动返回初始状态。图1中状态翻转条件说明如下IREQ=1,表示指令缓冲有请求;IREQ=0,表示指令缓冲没有请求;IEND=1,表示指令缓冲请求结束;IEND=0,表示指令缓冲请求未结束;DREQ=1,表示数据缓冲有请求;DREQ=0,表示数据缓冲没有请求;DEND=1,表示数据缓冲请求结束;DEND=0,表示数据缓冲请求未结束。
在图2示出的本发明提供的总线接口整体结构图中,可以将带指令缓冲功能的ARM 7 TDMI核的AHB总线接口装置可以分成ARM 7 TDMI核接口和AHB接口两部分。其中,ARM 7 TDMI核接口部分可以接收取指和数据访问请求,AHB接口部分的状态也可以分成空闲、取指和数据访问三种。如图2所示,本发明的接口装置由三个主要单元组成,分别为系统整合单元22、指令缓冲单元21和数据缓冲单元23。指令缓冲21和数据缓冲23在AHB总线上的切换是由整合单元22中的有限状态自动机和多路控制器24实现的。其中,系统整合单元22协调指令缓冲和数据缓冲的工作,确保在任何时候只有一个缓冲在运作。当数据缓冲请求进行数据访问时,指令缓冲可能正在利用突发方式进行指令预取操作。在这种情况下,数据缓冲23将等待指令预取操作结束。另外,考虑到数据缓冲操作在AHB总线部分的延迟,取指操作也可能会因为数据访问操作而产生延迟。所以AHB接口部分充分考虑到指令缓冲和数据缓冲之间的切换,以及迫使相应的缓冲等待。指令缓冲和数据缓冲在AHB总线上的切换是由整合单元中的有限状态自动机和相应的多路开关完成,使缓冲进行等待的方法是设置该缓冲的AHB总线从设备准备好信号为低。
指令缓冲的工作原理是根据ARM 7 TDMI核产生的第一次取指地址,自动按照递增方式产生后续存储器地址,并利用8字回卷突发方式(指令缓冲容量设定为8个字)在AHB总线上获得存储器中的指令,并将其存放到缓冲中。当ARM 7 TDMI核发生后续取指地址,指令缓冲将首先检测它是否处于当前缓冲中有效地址范围之内,如果要访问的指令不在缓冲之内,则将中断可能正在进行的先前指令预取操作,并刷新缓冲。随后将进行新的指令预取操作。如果取指地址在当前缓冲中的有效地址范围内,则ARM 7 TDMI核将从指令缓冲器中得到相应的指令。
指令预取缓冲利用了ARM 7 TDMI核取指操作中地址顺序化的特点和AHB的流水特性,可以在下述三个方面提高性能- 当ARM 7 TDMI核执行较长时间指令(例如乘法指令)时,
虽然仍然按照时序顺序方式执行指令,但是它的连续取指操作将被中断,直至上述指令结束。指令预取缓冲可以利用这段时间访问存储器,并预取到下面的指令;- 当ARM 7 TDMI核执行访存指令时,虽然程序执行流程中的指令地址还是递增变化,但是它发出的连续取指操作地址被访存指令的发出地址打断而不再连续,使得突发连续读操作方式的效率下降(突发操作的效率和其突发传输长度成正比),而指令预取缓冲将能弥补这个地址变化过程带来的问题,能充分利用AHB的突发方式。
- 对于循环体都在指令缓冲中的小循环,转移指令的目标指令将在指令预取缓冲中多次使用,这将减少转移指令带来的开销,并减少所需的存储器带宽。
数据缓冲的工作原理是在读访问模式下时,由于ARM 7 TDMI核给出的地址不能明确后续访问序列是否连续,所以采用非连续读和连续预读相结合的方法,将ARM 7 TDMI核的访存请求转换为AHB的总线请求。具体说来,当数据缓冲接收到ARM 7 TDMI核的第一次访存请求后将采用非连续方式在AHB上访问存储器,如果后续访问的地址是连续地址,数据缓冲将启动AHB上的INCR突发方式进行预读,并同时处理ARM 7 TDMI核的读请求。当然,突发方式结束后数据缓冲器中将会有两个多余的数据,应由数据缓冲过滤掉。
在写访问模式下,由于不能事先确定ARM 7 TDMI核要写入的数据的个数,所以采用首先写入缓冲,在明确了要写入的数据和地址后,再根据缓冲中要写入数据的数目确定写入的方式。例如,在只有一个字的方式下将采用非连续方式写入,如果有多个字将采用首字非连续写,后续连续方式写入(后续只有一个字的情况下,则启动另外一个非连续写入)。由于在AHB总线上的写入过程将滞后于ARM 7 TDMI核的写入过程,所以数据缓冲在前条指令写入过程未完成的情况下将禁止后条指令的执行。
将ARM 7 TDMI核发出的连续写过程拆成非连续加连续过程,其主要原因有三个- 在接收到ARM 7 TDMI核的首次存储器访问请求时,不能确定是否是连续读写以及连续读写的次数。
- 非连续读写的频度应远高于连续读写,所以在大部分情况下这种读写方式应该是有效的。
- 采用这样的连续访问过程,其时间损失也是有限的。对于n字连续读请求,对ARM 7 TDMI核来说,其完成时间为n+4个周期,其总线占用时间为n+5个周期,对于n字连续写请求,对于ARM 7 TDMI核来说其完成时间为n个周期,其总线占用周期为n+3个周期,其性能损耗并不显著。
AHB总线规范中还要求突发方式的传输过程中,地址不能跨越1KB边界,但是ARM 7 TDMI核的连续读写地址序列却不能满足这个条件。我们解决这个问题的思路是这样的对于连续读操作,其后续地址的底10位将由缓冲中的递增器产生,当递增器的结果位全0时,则中断当前的AHB连续读过程,就象当前地址不再连续一样。对于写过程,处理的方式与之类似,只是需要针对ARM 7 TDMI核发出的地址进行判断。
在图3示出的本发明装置的指令缓冲单元的结构图中,指令缓冲采用类似高速缓存行的方式组织缓冲,图中各部分功能如下- 核读指令控制部件213的主要功能是接收ARM 7 TDMI核提出的访存请求,并根据地址命中的判断结果,控制指令缓冲寄存器中合适的指令字输出,并产生满足ARM 7 TDMI核规范的时序信号;- AHB读指令控制部件214的主要功能是产生AHB总线访存的时序信号,并根据其响应向指令缓冲中的合适位置写入从AHB上读出的数据;- 地址判断部件212的主要功能是判断ARM 7 TDMI核发出的取指地址是否在缓冲中;- 指令缓冲寄存器组211的主要功能是存放从存储器获得的指令。
在图4示出的本发明装置中的数据缓冲单元的结构示意图中,数据缓冲的总体结构包括有限状态自动机232;由核地址总线和AHB地址产生逻辑组成的数据缓冲地址产生部件231;由核数据总线、AHB数据总线和两条总线的时序转换逻辑组成的数据缓冲数据产生部件233,其中,数据缓冲地址产生部件231和数据缓冲数据产生部件233的控制信号由有限状态自动机232和外部输入信号共同决定。
在图5示出的本发明的指令缓冲数据输出控制结构示意图中,指令缓冲输出部分将根据ARM 7 TDMI核输出的取指地址,并基于地址命中判断单元34判断地址是否命中。如果取指地址命中缓冲,则输出部分将按照ARM 7 TDMI核的规范回应系统等待信号,并将缓冲32中的指令字回送到ARM 7 TDMI核的数据线上。
图中的缓冲使能信号为高电平有效的控制信号;地址寄存器35是带输入使能的寄存器,只有在取指操作时新的地址才打入该寄存器;基址寄存器36也是带输入使能的寄存器,只有在允许指令缓冲运作、地址寄存器35高27位与基址寄存器的值比较的结果不等并且AHB总线上从设备准备好的情况下才允许新的值打入。
图6为本发明的指令缓冲AHB总线地址和内部缓冲地址产生结构图。指令缓冲在进行存储器访问时,ARM 7 TDMI核发出的地址的高27位和低2位经过锁存后直接输出作为AHB地址总线的高27位和低2位,但是其第4到第2位地址按照循环增加的方式改变。图中的组合逻辑C0用来控制多路开关的输出,产生所需的AHB地址总线的第4到第2位地址。C0的逻辑参考表1。
由于AHB总线的流水特性,从AHB总线上读取数据的地址和正在发出的地址是不相同的,所以此处专门使用图6中的内部缓冲地址产生结构单元产生和保持写入地址。
值得注意的是,该单元将产生两个写入地址分别控制数据缓冲的输入使能、缓冲数据有效标志信号和系统等待信号的产生。其中输入使能信号由内部缓冲地址信号控制,缓冲数据有效标志信号和系统等待信号由内部缓冲地址锁存信号控制。这两者的区别在于后者比前者要慢一个周期。图中的组合逻辑C1用来控制多路开关的输出,产生所需的内部缓冲地址。C1的逻辑参考如下的表1。
表1组合逻辑C0和C1逻辑真值表
注上表中各栏的说明如下1. AHB总线传输类型栏-00空闲状态-10非连续传输方式-11连续传输方式2. AHB总线从设备准备好栏-1AHB总线从设备准备好-0AHB总线从设备没有准备好-X忽略AHB总线从设备的状态3. 高位地址比较结果栏-1结果不相等-0结果相等-X忽略比较的结果在图7示出的本发明的数据缓冲有限状态机中,当ARM 7 TDMI核进行读操作时,数据缓冲将首先启动一次AHB单独读操作,如果是单独读,则此次读操作就可以完成;如果是连续读,随后在AHB上采用连续预读的方式以提高性能,由于AHB的流水特性以及ARM 7 TDMI核到AHB总线上的一个周期延时,每次预读操作都将有两个字的浪费,所以在连续读操作结束前将抛弃2次读回的数据。当ARM 7 TDMI核进行写操作时,数据缓冲将首先接收头两次写入的地址和数据,才决定采取何种方式写入如果第二次为连续方式就采用连续突发方式写入;如果第二次为非连续方式就采用单个突发方式写入。另外,在ARM 7 TDMI核到AHB的数据总线之间构成了一个2级的流水线,也就是说ARM 7 TDMI核的数据需要两个周期才能写到AHB上,刚好与写命令发出的时间匹配。当ARM 7 TDMI核连续写结束时,缓冲中将还有两个数据等待写入,此时数据缓冲应有特殊的状态控制它们写入存储器中。
对图7中的状态说明如下-ST0空闲状态-ST1单个数据读状态。在该状态下,在AHB总线上发出单个数据读请求操作,该数据的地址和地址总线控制信号被放在AHB总线上-ST2单个数据读等待状态。在该状态,缓冲等待AHB总线返回的数据-ST3不定长突发方式数据读开始状态。在该状态下,在AHB
总线上以不定长突发方式发出读请求操作,第一个数据的地址和地址总线控制信号被放在AHB总线上-ST4不定长突发方式数据读状态。在该状态下,不定长突发方式中后续数据的地址和地址总线控制信号被放在AHB总线上,同时接收总线返回的数据-ST5抛弃第一次预读入的数据状态。
-ST6抛弃第二次预读入的数据状态。
-ST7接收Core写入的第一次数据状态。
-ST8单个数据写状态。在该状态下,在AHB总线上发出单个数据写请求操作,该数据的地址和地址总线控制信号被放在AHB总线上-ST9单个数据写等待状态。在该状态,缓冲等待将数据写入AHB总线-ST10不定长突发方式数据写开始状态。在该状态下,在AHB总线上以不定长突发方式发出写请求操作,第一个数据的地址和地址总线控制信号被放在AHB总线上-ST11不定长突发方式数据写状态。在该状态下,不定长突发方式中后续数据的地址和地址总线控制信号被放在AHB总线上,同时将数据写入AHB总线-ST12最后第二个数据写入状态-ST13最后一个数据写入状态-ST14读等待状态。在该状态下,由于指令缓冲占用AHB总线,所以数据缓冲读请求被保持-ST15写等待状态。在该状态下,由于指令缓冲占用AHB总线,所以数据缓冲写请求被保持图7中状态翻转条件说明-C01表示数据缓冲有单个读请求且AHB总线未被指令缓冲占用-C1表示AHB从设备没有准备好-C12表示AHB从设备准备好-C20表示AHB从设备准备好-C014表示数据缓冲有读请求但AHB总线被指令缓冲占用-C14表示AHB总线仍被指令缓冲占用-C141表示指令缓冲释放对AHB总线的占用-C03表示数据缓冲有连续读请求且AHB总线未被指令缓冲占用-C3表示AHB从设备没有准备好-C31表示地址跨越1K边界且AHB从设备准备好-C34表示地址没有跨越1K边界且AHB从设备准备好-C4表示AHB从设备没有准备好-C45表示数据缓冲撤销连续读请求且AHB从设备没有准备好-C5表示AHB从设备没有准备好-C56表示AHB从设备准备好
-C6表示AHB从设备没有准备好-C60表示AHB从设备准备好-C07表示数据缓冲有写请求且AHB总线未被指令缓冲占用-C015表示数据缓冲有写请求但AHB总线被指令缓冲占用-C15表示AHB总线仍被指令缓冲占用-C157表示指令缓冲释放对AHB总线的占用-C78表示上一个写请求为单个突发方式或地址跨越1K边界-C710表示上一个写请求为连续突发方式且地址没有跨越1K边界-C8表示AHB从设备没有准备好-C89表示AHB从设备准备好-C9表示AHB从设备没有准备好-C90表示AHB从设备准备好-C10表示AHB从设备没有准备好-C1011继续保持INCR突发方式且地址没有跨越1K边界,AHB从设备准备好-C1012连续突发方式结束-C11继续保持连续突发方式且地址没有跨越1K边界-C1112INCR突发方式结束且AHB从设备没有准备好-C1113INCR突发方式结束且AHB从设备准备好-C12表示AHB从设备没有准备好-C1213表示AHB从设备准备好
-C13表示AHB从设备没有准备好-C130表示AHB从设备准备好利用本发明提供的方法和装置,也可以作为其它类型的ARM处理器和AHB总线的接口装置;或ARM处理器与ARM公司的ASB总线、APB总线的接口装置。还可以运用在非SOC设计中,作为微处理器与片外高速存储器的接口装置。
权利要求
1.一种带指令缓冲功能的总线接口装置,包括设有空闲、取指和数据访问三种状态的AHB总线接口,与所述AHB总线接口连接的多路控制器,分别与所述多路控制器连接的指令缓冲单元、数据缓冲单元以及整合单元,所述整合单元包括一个有限状态自动机,用于和所述多路控制器配合,控制所述AHB总线在所述指令缓冲单元和所述数据缓冲单元之间进行切换以确保在任何时候只有其中一个缓冲单元在工作。
2.根据权利要求1所述装置,其特征在于,所述整合单元中的有限状态自动机与所述多路控制器配合实现以下状态迁移在空闲状态收到取指请求后,进入指令缓冲请求状态;在指令缓冲请求状态下,指令缓冲进行取指操作,同时禁止数据缓冲的运作,在进行取指操作的同时,如果检测到数据缓冲有操作请求,则进入指令缓冲请求保持状态;在指令缓冲请求保持状态,数据缓冲的请求将保持直到指令缓冲操作结束为止,一旦指令缓冲操作结束,立即进入数据缓冲请求状态;在数据缓冲请求状态,进行数据缓冲的读数或写数操作,同时禁止指令缓冲运作,在进行数据读写操作的同时,如果检测到指令缓冲有操作请求,状态机将进入数据缓冲请求保持状态;在数据缓冲请求保持状态下,指令缓冲的请求将保持直到数据缓冲操作结束为止,一旦数据缓冲操作结束,立即进入指令缓冲请求状态;如此循环,在没有请求后,系统自动返回初始状态。
3.根据权利要求1所述装置,其特征在于,所述指令缓冲单元包括用于存放指令的指令缓冲寄存器组(211);可判断ARM 7 TDMI核发出的取指地址是否在所述缓冲寄存器组中的地址命中判断单元(212);还包括核读指令控制单元(213),用于接收ARM 7 TDMI核发出的访存请求,并根据所述地址命中判断单元(212)的判断结果,控制所述指令缓冲寄存器组(211)输出相应的指令字到所述ARM 7 TDMI核数据总线上,并产生满足ARM 7 TDMI核规范的时序信号;以及产生AHB总线访存的时序信号,并根据其响应向指令缓冲寄存器组(211)的相应地址写入从AHB总线读入数据的AHB读指令控制单元(214)。
4.根据权利要求1所述装置,其特征在于,所述指令缓冲单元(21)中的核读指令控制单元(213)根据ARM 7 TDMI核输出的取指地址,并基于所述地址命中判断单元判断该地址是否命中,如果取指地址命中所述缓冲寄存器组,则所述核读指令控制单元将按照ARM 7 TDMI核的规范回应系统等待信号,并将缓冲中的指令字回送到ARM 7 TDMI核的数据线上。
5.一种基于带指令缓冲功能的总线接口访问外部存储器的方法,在总线接口中设置有指令缓冲单元和数据缓冲单元,还设置有控制单元,用于将可能会用到的指令事先利用突发方式通过AHB总线从外部存储器系统中取到指令缓冲单元,在随后的访问指令操作中,只要指令已经存在于缓冲单元中,即使是被访问数据或长时间操作指令所打断的访问指令操作也可以直接从缓冲单元中获得指令而无需访问外部存储器。
6.根据权利要求5所述方法,其特征在于,所述控制单元执行以下步骤在空闲状态收到取指请求后,进入指令缓冲请求状态;在指令缓冲请求状态下,指令缓冲进行取指操作,同时禁止数据缓冲的运作,在进行取指操作的同时,如果检测到数据缓冲有操作请求,则进入指令缓冲请求保持状态;在指令缓冲请求保持状态,数据缓冲的请求将保持直到指令缓冲操作结束为止,一旦指令缓冲操作结束,立即进入数据缓冲请求状态;在数据缓冲请求状态,进行数据缓冲的读数或写数操作,同时禁止指令缓冲运作,在进行数据读写操作的同时,如果检测到指令缓冲有操作请求,状态机将进入数据缓冲请求保持状态;在数据缓冲请求保持状态下,指令缓冲的请求将保持直到数据缓冲操作结束为止,一旦数据缓冲操作结束,立即进入指令缓冲请求状态;如此循环,在没有请求后,系统自动返回初始状态。
7.根据权利要求5所述方法,其特征于,当数据缓冲单元请求进行数据访问时,如果所述指令缓冲单元正在利用突发方式进行指令预取操作,则所述数据缓冲单元将等待指令预取操作结束,其中,使数据缓冲单元等待的方法是设置该缓冲的AHB总线从设备准备好信号为低。
8.根据权利要求5所述方法,其特征在于,所述指令缓冲是这样进行的根据ARM 7 TDMI核产生的第一次取指地址,自动按照递增方式产生后续存储器地址,并利用8字回卷突发方式(指令缓冲容量设定为8个字)在AHB总线上获得存储器中的指令,并将其存放到缓冲中;当ARM 7 TDMI核发生后续取指地址,指令缓冲将首先检测它是否处于当前缓冲中有效地址范围之内,如果要访问的指令不在缓冲之内,则将中断可能正在进行的先前指令预取操作,并刷新缓冲;随后将进行新的指令预取操作;如果取指地址在当前缓冲中的有效地址范围内,则ARM 7 TDMI核将从指令缓冲器中得到相应的指令。
9.根据权利要求5所述方法,其特征在于,所述数据缓冲的读数和写数操作是这样进行的当ARM 7 TDMI核进行读操作时,数据缓冲将首先启动一次AHB单独读操作,如果不是单独读而是连续读,则随后在AHB上采用连续预读方式,在连续读结束前抛弃前2次读回的数据;当ARM 7TDMI核进行写操作时,数据缓冲将首先接收头两次写入的地址和数据,才决定采取何种方式写入如果第二次为连续方式就采用连续突发方式写入;如果第二次为非连续方式就采用单个突发方式写入。
全文摘要
一种带指令缓冲的总线接口装置及其访问外部存储器的方法,包括设有空闲、取指和数据访问三种状态的AHB总线接口,与所述AHB总线接口连接的多路控制器,分别与所述多路控制器连接的指令缓冲单元、数据缓冲单元以及整合单元,所述整合单元包括一个有限状态自动机,用于和所述多路控制器配合,控制所述AHB总线在所述指令缓冲单元和所述数据缓冲单元之间进行切换以确保在任何时候只有其中一个缓冲单元在工作。
文档编号G06F11/00GK1368685SQ0110751
公开日2002年9月11日 申请日期2001年2月10日 优先权日2001年2月10日
发明者陈虎, 朱子宇, 黄海, 梁松海 申请人:深圳市中兴集成电路设计有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1