嵌入式处理器中写缓冲电路的设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

嵌入式处理器中写缓冲电路的设计
洪俊峰;张启晨;杨军
【摘要】为了减少CPU对主存进行写操作时的等待时间,提高嵌入式系统的整体效率,设计了一款含有8个数据缓冲槽和4个地址缓冲槽的写缓冲.该写缓冲采用特殊的移位控制电路和附加的标志位,实现数据、地址的自动移位和映射功能.利用HSIM仿真工具对电路进行了仿真和验证,结果表明,该写缓冲能正确快速地实现数据与地址的先进先出(FIFO)功能,有效地减少了CPU的等待时间,提高了系统的整体效率.
【期刊名称】《现代电子技术》
【年(卷),期】2007(030)022
【总页数】4页(P27-29,35)
【关键词】嵌入式处理器;写缓冲;先进先出;移位控制
【作者】洪俊峰;张启晨;杨军
【作者单位】东南大学,国家专用集成电路系统工程技术研究中心,江苏,南
京,210096;东南大学,国家专用集成电路系统工程技术研究中心,江苏,南京,210096;东南大学,国家专用集成电路系统工程技术研究中心,江苏,南京,210096
【正文语种】中文
【中图分类】TP332
1 写缓冲简介
当今嵌入式处理器速度的提高远远快于主存速度的提高,CPU在对主存进行写操作时,往往要花大量时间等待主存写完,这就导致系统效率下降。

减少存储器等待时间的方法是植入一个快速写缓冲,他写主存的同时,允许CPU能继续工作。

目前世界上对写缓冲的研究已经比较成熟,但还在不断改善。

一般而言,基于不同的写策略,就会有不同的缓冲结构,现代处理器中基本都会有一个写缓冲,有的还会有读缓冲。

不同系统的缓冲大小也是不一样的,这点在片上系统中尤其重要。

有的系统可能还会有多级写缓冲,如ARM1020E处理器等。

由于写缓冲中数据缓冲槽多于8个、地址缓冲槽多于4个时,其性能上的提高已经不明显了,而硬件开销较大,所以根据嵌入式处理器对面积、功耗和成本上的要求以及实际的工程需要,本论文将设计一个包含8个数据缓冲槽和4个地址缓冲槽的写缓冲,他可以缓冲8个32位的数据和4个32位的独立地址,每个地址可以对应一个或多个数据。

当8个数据缓冲槽满或4个地址缓冲槽满时,写缓冲向CPU发出full信号,使CPU停顿等待空槽。

2 写缓冲组成
写缓冲所要完成的功能是对CPU输出到片外存储器的数据和地址进行缓冲,然后输出到总线,再由总线送给片外存储器。

因此,从结构上分析,要完成上述功能,需要的硬件电路主要有:数据缓冲电路:对来自内部数据总线的数据进行锁存,实现存放数据的功能;数据移位控制电路:对依次存入的数据进行移位控制,实现快速的数据先进先出(FIFO)功能;数据选择电路(MUX):对来自写缓冲的数据和来自内部数据总线的数据进行选择,实现数据的缓冲写和非缓冲写;地址缓冲电路:对来自地址变换后备缓冲器(TLB)的物理地址进行锁存,实现存放地址的功能;地址移位控制电路:和数据移位控制电路功能相当,控制地址移位,实现快速的地址FIFO功能;地址自加电路:对来自地址缓冲电路的地址进行自加操作,实现连续地址的读写功能;总线接口单元:实现对外部数据总线的读写控制和对外部地址总
线的写控制;写缓冲控制逻辑电路:实现地址与数据之间的映射功能,并对写缓冲各部分进行协调控制。

图1 写缓冲的整体框架
3 写缓冲子电路设计
3.1 数据缓冲电路
数据缓冲电路必须可以存放8个32位的数据,因此整个电路需要33行×8列的
数据缓冲单元,其中第0行存储的一位用来指示数据与地址的映射关系。

当一个
地址映射多个数据(即对连续地址进行写操作),而该数据是其中一个时,则该位被置1。

整个电路结构如图2所示。

其中的数据缓冲单元(wbuf_cell)是一个带传输
门的锁存器,如图3所示。

图2 数据缓冲电路
为了防止数据倒流,图3中设计的导向器I1的驱动能力比I2的大得多,形成倒比管设计。

整个电路结构保证数据以FIFO队列方式输出,当第0列的数据移出缓冲后,第1列的数据就会移到第0列,第2列的数据就会移到第1列,如此类推,
缓冲电路中的数据就都能移出缓冲器。

3.2 数据移位控制电路
为了实现数据缓冲电路的FIFO功能,本文设计了如下的数据移位控制电路(见图4),他控制了数据缓冲电路的移位操作。

clear为清空信号,当clear信号有效时,a0,a1,a2,a3,a4,a5,a6都变为1,所有数据缓冲单元内的传输门都打开,数据被迅速清空。

WB_clk,addr36,ctr1为移位时钟控制信号,其中WB_clk为写缓冲的时钟信号;addr36为地址缓冲电路输出的最高位,用于指示地址与数据映射关系;ctr1控制信号由写缓冲控制逻辑电路给出。

当addr36和ctr1均为1时,移位电路就在写缓冲时钟信号控制下进行移位操作。

data_en为数据输入使能信号,有效时a7打开,把新数据送入数据缓冲电路。

full是反馈给CPU的状态信
号,为1时指示当前数据缓冲电路已满,不允许输入新数据,CPU需停顿。

ctr2,ctr3控制信号在可缓冲的新数据到来时置为高电平,这样就保证了只要full信号
为1,则或门被禁掉,即使data_en信号有效,a7也不打开,新数据不能被输入。

图3 数据缓冲单元
接下来阐述一下该电路的行为。

在clear信号清空缓冲器后,写缓冲中有8个数据可以输入。

当data_en信号变高时,a7信号变高,第7列的传输门打开,内部数据总线上的数据进入写缓冲;当信号data_en由高变低时,a7信号随之变低,总线上输入的数据被锁入第7列中,此时由于a6到a0都为1,第6列数据缓冲单元
到第0列数据缓冲单元的传输门都处在导通状态,第一个数据被迅速移到第0列
缓冲单元。

此时的data_en的下降沿导致dff输出瞬时置1,从而使a6经过门级延时迅速变为低电平,该低电平又导致a5变低,a6重新变高。

同时a5变低使
a4变低,a5重新变高。

这样一级一级往后移,直到a0变为低电平,此时数据就
会被锁在第0列缓冲单元,等待后级电路读取数据,这样第一个数据就完成了他
的输入。

同理,第二个数据输入数据缓冲电路时,数据被存入到第1列缓冲单元,第三个数据被存入第二列,如此顺序,只要数据缓冲电路中还有空槽,则数据依次存入。

当存满8个数据后,电路反馈给CPU一个full信号,让其停顿。

3.3 数据选择电路
数据选择器用来对来自数据缓冲电路的数据和来自内部数据总线的数据进行选择,实现缓冲写和非缓冲写。

该结构用传输门开关实现,如图5所示。

CLK控制信号
由地址缓冲电路最高位(即设计的标志位)给出。

这样,在数据、地址2个缓冲电路中设计的标志位就实现了对数据连续非连续、可缓冲非可缓冲的控制。

3.4 地址缓冲电路
地址缓冲器用来对TLB输出的物理地址进行缓冲。

本设计要实现对4个独立32位地址的缓冲,因此至少需要有32行4列的地址缓冲单元。

另外多留出5行数据缓
冲单元用来作数据与地址映射关系指示和总线状态指示,所以共有37×4列的地
址缓冲单元。

其中最高位置1表示允许缓冲写。

接下去4位指示总线状态,包括BLOK(读-锁-写序列指示信号),BWRITE(总线读写信号),BSIZE1,BSIZE0(指示
传送数据大小的信号)。

地址缓冲电路的结构和数据缓冲电路类似,这里不再赘述。

图4 数据移位控制电路
图5 数据选择电路
3.5 地址移位控制电路
地址移位控制电路的结构与数据移位控制电路类似,他控制了地址的移位,实现快速FIFO功能。

区别在于该电路多输出指示地址有无变化的状态信号,这个信号送给写缓冲控制逻辑电路,以便于控制对应数据的输出。

3.6 地址自加电路
地址自加电路对来自地址缓冲电路的地址进行自加操作,实现连续地址的读写功能。

地址自加的情况主要有2种:总线处于顺序周期(即对连续地址进行读写操作,一
个地址映射多个数据);cache行取,需连续读一行的数据。

地址自加电路对地址
缓冲电路送出的物理地址自动加2或加4,分别对应半字寻址和字寻址,由电路中的寻址控制位word来决定。

电路中还设计一个ctr信号来控制地址自加或地址输入更新。

3.7 总线接口单元
总线接口单元主要实现对外部数据总线的读写控制和对外部地址总线的写控制,用开关电路分别控制读写通路来实现。

他在控制信号的控制下,于适当的总线周期,把地址送到外部地址总线,并对外部数据总线进行读写。

3.8 写缓冲控制逻辑电路
写缓冲控制逻辑电路主要对写缓冲各部分进行协调控制。

他提供写缓冲时钟,控制写缓冲与总线的交互,并把写缓冲状态反馈给CPU。

同时控制了地址和数据的映
射,实现了连续非连续写、数据可缓冲非可缓冲的选择。

4 仿真结果
将本文所设计的写缓冲电路,与8 kB的指令数据统一Cache、内存管理单元和ARM公司提供的ARM7TDMI内核集成在一起,用HSIM仿真工具对其进行仿真和验证。

仿真结果如图6所示。

从图中可以看到,在data_en高电平时,把数据wb_datain[31:0]送入数据缓冲电路。

经过一段时间,当写缓冲获得总线权时,把数据依次送往外部数据总线Out_bd[31:0]。

在addr_en为高时,把地址addrbuf_in[31:0]送入地址缓冲电路。

经过一段时间,该地址出现在外部地址总线Out_ba[31:0]上,并在自加时钟selfadd_clk的上升沿进行自加。

在WB_clk的上升沿,写缓冲往总线送地址,下降沿把相应数据送出。

可以看出,写缓冲正确迅速地完成了数据与地址的FIFO功能。

此外,CPU并没有停滞下来等待总线把数据送给主存后才进行后续操作,也就是说CPU写主存时的等待时间被大大减少。

图6 仿真波形图
5 结语
在嵌入式处理器中加入写缓冲,可以显著地减少
CPU的等待时间,提高嵌入式系统的整体效率。

由仿真结果可以看出,本文设计的含有8个数据缓冲槽和4个地址缓冲槽的写缓冲能够正确快速地实现数据与地址的FIFO功能,适应嵌入式处理器对速度、面积、成本的要求。

今后的设计可以在功耗方面进行深入优化,使得整个嵌入式系统的性能得到更进一步的提高。

参考文献
[1] 马忠梅,马广云,徐英慧,等.ARM 嵌入式处理器结构与应用基础[M].北京:北京航空航天大学出版社,2002.
[2] [英] Steve Furber.ARM SoC 体系结构[M].2版.田泽,于敦山,盛世敏,译.北京:北京航空航天大学出版社,2003.
[3] William Stallings.计算机组织与体系结构——性能设计 [M].6版.张昆藏,译.北京:清华大学出版社,2005.
[4] 黄正瑾.计算机结构与逻辑设计[M].北京:高等教育出版社,2001.
[5] [美] Jan M.Rabaey,Anantha Chandrakasan.数字集成电路——电路、系统与设计[M].周润德,译.北京:电子工业出版社,2004.
[6] Pong P Chu,Ramana Gottipati.Write Buffer Design for On-chip Cache[C].IEEE International Conference,1994:311 -316.
[7] Skadron K,Clark D W.Design Issues and Tradeoffs for Write Buffers,High-Performance Computer Architecture[C].Third International Symposium,1997:144-155.
[8] Abraham Sugumar S G,R.A.Fast Efficient Simulation of Write-Buffer Configurations,System Sciences[C].Proceedings of the Twenty-Seventh Hawaii Internation Conference,1994(1):231 - 240.。

相关文档
最新文档