重排多个数据存取指令的方法与装置的制作方法

文档序号:72512阅读:418来源:国知局
专利名称:重排多个数据存取指令的方法与装置的制作方法
技术领域
本发明涉及一种存取计算机系统的存储装置的方法与相关装置,特别涉及一种重排多个用来存取数据处理系统上存储装置的数据存取指令的方法与相关装置。
背景技术
众所皆知,数据处理系统是用来运算、处理以及储存数据,而个人计算机系统与其相关子系统均可视为数据处理系统,请参阅
图1,图1为已知计算机系统10的示意图。计算机系统10包含有一中央处理器12,一北桥电路14,一南桥电路16,一显示控制电路18,一存储装置20,一输入/输出装置22,以及一硬盘24。中央处理器12是用来控制计算机系统10的整体运作,而北桥电路14是用来协调中央处理器12与高速外围装置(例如显示控制电路18与存储装置20)之间的信号传递。显示控制电路18则是用来处理影像数据,而存储装置20是用来处理与储存数据。另外,南桥电路16是用来协调北桥电路14与低速外围装置(例如输入/输出装置22与硬盘24)之间的信号传递,而输入/输出装置22(例如一键盘)是用来接收一使用者所输入的控制信号。一般来说,硬盘24是一非挥发性数据储存装置,然而,存储装置20则为一挥发性数据储存装置。存储装置20可包含有动态随机存取存储器以暂存处理中的程序代码与数据。举例来说,原先储存于硬盘24上的程序代码与数据被加载至存储装置20中,所以中央处理器12便可更迅速地存取该程序代码,然后,中央处理器12在处理该数据后将其回存至存储装置20中。
北桥电路14中设置有一内存控制电路26,用来控制存储装置20的数据存取操作。当一主控制器(master device),例如中央处理器12或显示控制电路18,输出数据存取指令(access request)至存储装置20时,存储装置20便会根据所接收的数据存取指令将相对应数据回复予该主控制器。若内存控制电路26启动一依序存取(in-order access)的机制,则存储装置20会根据所接收的数据存取指令的顺序来逐一地将相对应数据回复予该主控制器。举例来说,显示控制电路18依据一预定顺序来发出数据读取指令(readrequest)RA1、RA2、RA3、RA4、RA5以分别撷取存储装置20上所纪录的数据D1、D2、D3、D4、D5,然而,即使内存控制电路26不依循该预定顺序而随意地执行数据读取指令RA1、RA2、RA3、RA4、RA,内存控制电路26仍需将其所接收的数据D1、D2、D3、D4、D5依照该预定顺序而回传至显示控制电路18。
请参阅图2,图2为存储装置20的第一种已知数据存取操作的示意图。举例来说,中央处理器12依序产生多个数据读取指令RA1、RA2、RB1、RB2、RA3、RA4、RB3、RB4、RA5、RA6以便撷取储存在存储装置20上的数据DA1、DA2、DB1、DB2、DA3、DA4、DB3、DB4、DA5、DA6,此外,假设所有数据DA1、DA2、DA3、DA4、DA5、DA6均储存在一存储分页A,以及所有数据DB1、DB2、DB3、DB4、DB5、DB6均储存在另一存储分页B。如图2所示,内存控制电路26依据数据读取指令RA1、RA2、RB1、RB2、RA3、RA4、RB3、RB4、RA5、RA6的顺序来执行数据读取指令RA1、RA2、RB1、RB2、RA3、RA4、RB3、RB4、RA5、RA6。首先,内存控制电路26执行数据读取指令RA1以撷取数据DA1,存储装置20便经由一内存总线将数据DA1传递至内存控制电路26,然后,内存控制电路26便将数据DA1传递至中央处理器12以完成对应数据读取指令RA1的数据撷取操作。既然下一数据读取指令RA2所要撷取的数据DA2亦是记录在同一存储分页A上,所以存储装置20便采用一爆发存取模式(burst mode)来存取数据DA2,因此数据DA2即可迅速地被读取,并经由内存总线传递至内存控制电路26,然后,内存控制电路26便传输数据DA2至中央处理器12以完成对应数据读取指令RA2的数据撷取操作。
然而,数据读取指令RB1是用来撷取异于存储分页A的存储分页B上所纪录的数据DB1,所以,为了存取所要的存储分页B,存储装置20需要在启动存储分页B前,先预充电(precharge)目前已开启的存储分页A,所以内存控制电路26需连续输出一控制指令PreA以预充电存储分页A,以及输出一控制指令ActB以启动所要的存储分页B。当存储分页B已成功地开启后,内存控制电路26便可开始存取存储分页B中所纪录的数据,所以数据读取指令RB1、RB2便循序地被内存控制电路26执行以撷取相对应的数据DB1、DB2。然后,存储装置20便经由内存总线提供内存控制电路26所要的数据DB1、DB2。接着,内存控制电路26便传输接收的数据DB1、DB2至中央处理器12以完成对应数据读取指令RB1、RB2的数据撷取操作。由于下一数据读取指令是撷取存储分页A上的数据,由于数据DA3是位于存储分页A上,因此控制命令PreB、ActA便会依序地输出以预充电开启中的存储分页B与启动所要的存储分页A。
上述操作程序是不断地执行以切换存储分页A与存储分页B来撷取后续的数据DA3、DA4、DB3、DB4、DA5、DA6。如上所述,当两相邻数据读取指令是用来撷取位于不同分页上的数据时,存储装置20必须耗费额外时间来进行不同分页之间的切换操作。换句话说,预充电操作与启动操作会造成存储装置20的整体效能恶化,如图2所示,内存总线上的延迟时间L1会由于预充电操作与启动操作而产生,同样地,一主机总线(host bus)上的延迟时间L2亦因为延迟时间L1施加于内存总线而随之产生。
一般而言,当一主控制器(例如中央处理器12)存取存储装置20时,前述预充电操作与启动操作会恶化数据存取操作的执行效能,所以已知重排(reordering)机制便用来减轻预充电操作与启动操作的影响程度,请参阅图3,图3为存储装置20的第二种已知数据存取操作的示意图。中央处理器12连续地产生数据读取指令RA1、RA2、RB1、RB2、RA3、RA4、RB3、RB4、RA5、RA6以获得存储装置20所储存的数据DA1、DA2、DB1、DB2、DA3、DA4、DB3、DB4、DA5、DA6。然后,内存控制电路26便重排所接收的数据读取指令RA1、RA2、RB1、RB2、RA3、RA4、RB3、RB4、RA5、RA6,所以内存控制电路26便在执行数据读取指令RB1、RB2、、RB3、RB4之前先执行数据读取指令RA1、RA2、RA3、RA4、RA5、RA6,因此可降低切换两不同存储分页所耗费的时间。如图3所示,在数据读取指令RA6成功地执行后,控制命令PreA、ActB由内存控制电路26输出以预充电存储分页A与启动存储分页B,由于仅有执行一次切换存储分页的操作,所以对内存总线来说,仅有产生一次延迟时间L1,然而,内存控制电路26必须依据原先数据读取指令RA1、RA2、RB1、RB2、RA3、RA4、RB3、RB4、RA5、RA6的接收顺序来传递所接收的数据至中央处理器12,换句话说,内存控制电路26必须依序地将数据DA1、DA2、DB1、DB2、DA3、DA4、DB3、DB4、DA5、DA6回传至中央处理器12。即便存储装置20经由爆发读取模式已快速地读出数据DA1、DA2、DA3、DA4、DA5、DA6,主机总线在完成传输数据DA1、DA2后必须进入等待(wait)状态直到数据读取指令RB1已经自存储装置20读取数据RB1。请注意,由于数据DA3、DA4、DA5、DA6先前已成功地撷取并传递至内存控制电路26,所以在数据DB1传递至中央处理器12后,数据DA3、DA4便可立即地传输至中央处理器12,所以,对于主机总线而言,其仅会产生一延迟时间L2。
相较于图2所示的第一种已知数据存取操作,图3所示的第二种已知数据存取操作执行较少次切换存储分页的操作,然而,对于主机总线来说,第二种已知数据存取操作却会使主机总线产生较长的延迟时间L2。如上所述,虽然提升内存总线的效能,但是却必须牺牲主机总线的效能,若内存控制电路26重排所接收的数据读取指令后造成数据读取指令RB1的执行时间被严重地延迟,则增加的延迟时间L2便会大幅地恶化整体数据存取操作的效能,综合述,数据存取操作并不易由图3所示的数据读取指令的已知重排操作来达到整体数据存取效能的提升。

发明内容
因此本发明的主要目的在于提供一种重排存取数据处理系统上存储装置的数据存取指令的方法与相关装置,以解决上述问题。
根据本发明,提供了一种存取计算机系统的存储装置的方法,该存储装置是电连接于一内存控制电路,该内存控制电路是依据一主控制器依序输出的数据存取指令来逐一地响应该主控制器,该内存控制电路包含有一指令队列以及一延迟时间监控单元电连接于该指令队列,该方法包含有(a)使用该指令队列储存该主控制器输出的数据存取指令;(b)使用该延迟时间监控单元纪录多个延迟时间值,该多个延迟时间值是分别对应该指令队列所储存的数据存取指令;(c)使用该内存控制电路接收一第一数据存取指令,将该第一数据存取指令存入该指令队列,以及依据已储存于该指令队列的数据存取指令所对应的延迟时间值来设定该第一数据存取指令所对应的执行优先权;以及(d)依据该指令队列所储存的数据存取指令所对应的执行优先权,使用该内存控制电路来逐一地存取该存储装置。
本发明还提供一种经由内存控制电路存取计算机系统的存储装置的方法,该内存控制电路是依据一主控制器依序输出的数据存取指令来逐一地响应该主控制器,该方法包含有(a)储存该主控制器输出的数据存取指令于该指令队列中;(b)纪录多个延迟时间值,该多个延迟时间值是分别对应该指令队列所储存的数据存取指令;(c)接收一第一数据存取指令,将该第一数据存取指令存入该指令队列,以及依据已储存于该指令队列的数据存取指令所对应的延迟时间值来设定该第一数据存取指令所对应的执行优先权;以及(d)依据该指令队列所储存的数据存取指令所对应的执行优先权来逐一地存取该存储装置。
本发明还提供一种内存控制电路,用来存取一计算机系统的存储装置,该存储装置是电连接于该内存控制电路,该内存控制电路是依据一主控制器依序输出的数据存取指令来逐一地响应该主控制器,该内存控制电路包含有一指令队列,用来储存该主控制器输出的数据存取指令;一延迟时间监控单元,电连接于该指令队列,用来纪录多个延迟时间值,该多个延迟时间值是分别对应该指令队列所储存的数据存取指令;以及一重排控制单元,电连接于该指令队列,用来依据已储存于该指令队列的数据存取指令所对应的延迟时间值控制一第一数据存取指令存入该指令队列并对应一执行优先权。该存储装置是依据该指令队列所储存的数据存取指令所对应的执行优先权而依序地被存取。
本发明还提供一种存取计算机系统的存储装置的方法,其包含有接收多个数据存取指令以依据一第一预定顺序存取该存储装置;以及依据一第二预定顺序在一指令队列中重排该多个数据存取指令,以重新安置用来存取一存储分页的第一数据存取指令紧接于用来存取该存储分页的第二数据存取指令之后。若重新安置该第一数据存取指令会造成一第三数据存取指令的延迟时间值超过一预定限制值,则禁止重新安置该第一数据存取指令。
本发明还提供一种存取计算机系统的存储装置的方法,其包含有接收多个数据存取指令以存取该存储装置的一或多个存储分页;以及将存取同一存储分页的数据存取指令聚集在一或多个群组中来重排一指令队列中原本对应一预定顺序的多个数据存取指令。若聚集一数据存取指令会造成该指令队列中另一数据存取指令的延迟时间值超过一预定限制值,则禁止聚集该数据存取指令。
本发明重排数据存取指令的方法在聚集存取同一存储分页的数据存取指令时会避免违背所设定的最大可容许数值,换句话说,若插入一新接收的数据存取指令会十分严重地递延目前已储存在指令队列中的数据存取指令的执行时序,则本发明重排数据存取指令的方法仅将该新接收的数据存取指令如同往常一般地存入该指令队列而不重排储存在指令队列中的数据存取指令,因此,内存总线的效能与主机总线的效能便可取得一平衡点以最佳化数据处理系统的整体效能。
附图简述图1为已知计算机系统的示意图。
图2为存储装置的第一种已知数据存取操作的示意图。
图3为存储装置的第二种已知数据存取操作的示意图。
图4为本发明内存控制电路的功能方块示意图。
图5为本发明重排数据存取指令的操作流程图。
图6为存储装置在本发明重排数据存取指令执行后的运作示意图。
附图符号说明


具体实施方式
请参阅图4,图4为本发明内存控制电路30的功能方块示意图。内存控制电路30包含有一存储分页/存储库比较单元(page/bank comparing unit)32,一延迟时间控制单元(latency control unit)34,一重排控制单元(reorder decision-making unit)36,一指令队列选取单元(request queueselection unit)38,一指令队列(request queue)40,一延迟时间监控单元(latency monitoring unit)42,以及一内存存取状态机(memory accessstate machine)44。此外,指令队列40中设置有多个队列缓存单元(queueentry)46,亦即图4所示的Q1、Q2、Q3、Q4、Q5、Q6、Q7、Q8、Q9、Q10、Q11、Q12,而延迟时间监控单元42则设置有多个监控缓存器48,亦即图4所示的M1、M2、M3、M4、M5、M6、M7、M8、M9、M10、M11、M12,其分别对应指令队列40中的队列缓存单元Q1、Q2、Q3、Q4、Q5、Q6、Q7、Q8、Q9、Q10、Q11、Q12。每一监控缓存器M1、M2、M3、M4、M5、M6、M7、M8、M9、M10、M11、M12是用来记录相对应队列缓存单元的延迟时间值(latencyvalue)。队列缓存单元Q1是为指令队列40中第一个暂存区而具有最高的执行优先权(priority),而队列缓存单元Q1是为指令队列40中最后一个暂存区,所以队列缓存单元Q1便对应最低的执行优先权,换句话说,队列缓存单元Q1所储存的指令会是第一个被执行的指令。
当内存控制电路30接收到主控制器所输出的数据存取指令(accessrequest)时,该数据存取指令便会输入指令队列40。每一个数据存取指令包含内存地址信息、读取/写入信息,数据长度信息,以及其它必须的标记(flag),例如数据存取指令的执行优先权及快取数据写回(write-back)的指示等。请注意,本实施例中,主控制器可以是图1中所示的中央处理器12,显示控制电路18,硬盘24,或输入/输出装置22。
存储分页/存储库比较单元32是用来判别所接收的数据存取指令所要存取的存储分页,然后便将存储分页的相关信息进一步地告知重排控制单元36。延迟时间控制单元34是检测延迟时间监控单元42所输出的信号来决定监控缓存器48中所纪录的延迟时间值是否已到达一预定限制值(例如一最大可容许数值)。此外,若一监控缓存器48已记录该最大可容许数值,则延迟时间控制单元34会禁止重排控制单元36延迟对应该监控缓存器48的数据存取指令。重排控制单元36接收存储分页/存储库比较单元32与延迟时间控制单元34所提供的信息来决定数据存取指令在指令队列40中的位置,换句话说,存储分页/存储库比较单元32可判别目前开启中的存储分页,并推荐重排控制单元36适合指令队列40所纪录的数据存取指令的位置,然后重排控制单元36即输出一控制指令至指令队列选取单元38以调整指令队列40所纪录的数据存取指令的位置。所以,原先的数据存取指令便经由重排而储存在指令队列40中不同的队列缓存单元46,亦即数据存取指令在指令队列40中便对应新的位置。最后,内存存取状态机44便依据各队列缓存单元46所纪录的数据存取指令来逐一地存取图1所示的存储装置20。
请参阅图5,图5为本发明重排数据存取指令的操作流程图。本发明重排数据存取指令的操作详细地叙述如下,首先,内存控制电路30接收一第一数据存取指令,而存储分页/存储库比较单元32判别该第一数据存取指令是用来存取存储装置20中的第一存储分页(步骤100)。然后,内存控制电路26检查指令队列40是否为一空的队列,假若指令队列40目前并未储存任何数据存取指令,则重排控制单元36此时便不需执行重排数据存取指令的操作,所以内存控制电路26便直接地存入(push)所接收的第一数据存取指令至指令队列40中,此外,该第一数据存取指令会记录在队列缓存单元Q1中而对应最高的执行优先权,并且一初始值(例如0)会设定相对应监控缓存器M1所纪录的延迟时间值。另一方面,假若指令队列40目前已储存有数据存取指令,则执行步骤102来判断指令队列40中是否有数据存取指令也是存取该第一存储分页,若指令队列40中已储存的所有数据存取指令皆未存取该第一存储分页,则重排控制单元36此时便不需执行重排数据存取指令的操作,所以内存控制电路26便直接地存入所接收的第一数据存取指令至指令队列40中,此外,在指令队列40中已储存的所有数据存取指令中,第一数据存取指令则会对应最低的执行优先权。
然而,在执行步骤102时,若存储分页/存储库比较单元32在指令队列40中发现一第二数据存取指令是用来存取该第一分页,重排控制单元36便判断该第二数据存取指令是否为指令队列40的所有数据存取指令中,排列在最后的数据存取指令或者具有最低的执行优先权(步骤106)。若该第二数据存取指令对应最低的执行优先权,重排控制单元36便不需执行重排数据存取指令的操作,而内存控制电路26便直接地存入所接收的第一数据存取指令至指令队列40中(步骤104),换句话说,在指令队列40中已储存的所有数据存取指令中,第一数据存取指令此时便会对应最低的执行优先权。然而若该第二数据存取指令并非对应最低的执行优先权,则步骤108会执行以检查重排单元36是否需要开始重排数据存取指令以便将第一数据存取指令存入指令队列40,亦即若紧接该第二数据存取指令之后一第三数据存取指令的相对应延迟时间值因为先执行该第一数据存取指令而造成原本的延迟时间值增加一递增值,且增加后的延迟时间值大于最大可容许数值,则重排控制单元36便不会进行重排数据存取指令的操作以避免过度地延迟该第三数据存取指令的执行时序,因此该第一数据存取指令便如往常一般地直接存入指令队列40而具有最低的执行优先权。
回到步骤108,若增加后的延迟时间值此时并未超过最大可容许数值,则重排控制单元36便指示指令队列选取单元38将该第一数据存取指令插入该第二数据存取指令与该第三数据存取指令之间而储存在指令队列40中(步骤110)。此外,自该第三数据存取指令起的后续数据存取指令的延迟时间值均会因为该第一数据存取指令的插入而随之递增上述的递增值(步骤112)。请注意,该第一数据存取指令与该第二数据存取指令皆用来存取该存储装置40中同一第一分页,另外,该第二数据存取指令与该第三数据存取指令是已储存在指令队列40中,且该第二数据存取指令所对应的执行优先权是高于该该第三数据存取指令所对应的执行优先权。当该第一数据存取指令存入指令队列40时,同样地,前述的初始值(例如0)会设定对应该第一数据存取指令的监控缓存器48所记录的延迟时间值。
使用最大可容许数值的目的的用来避免主机总线的延迟时间被过度地增加而进一步地恶化整体数据存取效率。用来存取一预定存储分页的新接收数据存取指令会附加(annex)在存取同一预定存储分页的已储存数据存取指令之后,因此可降低切换不同存储分页所耗费的时间。然而,若插入新接收的数据存取指令后会造成原本的数据存取指令所对应的延迟时间值超过该最大可容许数值,则本实施例便不执行对应该新接收数据存取指令的重排操作。所以,主机总线的延迟时间便不会由于被过度地延长而最后造成整体数据存取效率不彰。
为了更清楚地描述本发明的技术特征,因此利用一操作范例来说明。假设最大可容许数值为2,以及因为数据存取指令的插入而用来调整被延迟数据存取指令的延迟时间值所使用的递增值为1,请注意,上述最大可容许数值与递增值是为可编程的(programmable),因此并未分别限定为2与1,亦即依据不同计算机系统的规划设计,最大可容许数值与递增值可使用不同数值来加以设定。若一主控制器(例如中央处理器12)连续地输出数据读取指令(read request)RA1、RA2、RB1、RB2、RA3、RA4、RB3、RB4、RA5、RA6以获取储存于存储装置20的数据DA1、DA2、DB1、DB2、DA3、DA4、DB3、DB4、DA5、DA6。请注意,数据DA1、DA2、DA 3、DA4、DA5、DA6均储存于存储装置20的存储分页A,以及数据DB1、DB2、DB3、DB4均储存于存储装置20的存储分页B。虽然本实施例是以数据读取指令的重排操作来说明数据存取指令的重排操作,然而,同样的操作原理亦可应用于数据写入指令(writerequest)的重排操作。
重排操作的相关参数(例如数据读取指令,指令队列的队列缓存单元,以及监控缓存器)则逐一表列如下数据读取指令{RA1,RA2,RB1,RB2,RA3,RA4,RB3,RB4,RA5,RA6}队列缓存单元{Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q12}监控缓存器{M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12}当一开始处理数据读取指令RA1时,由于目前没有任何数据读取指令正储存在指令队列46中,所以数据读取指令RA1便可直接存入指令队列46(步骤101、104),而数据读取指令RA1便记录在队列缓存单元Q1。此外,一初始值(例如0)便设定对应队列缓存单元Q1的监控缓存器M1所储存的延迟时间值。所以,重排数据读取指令的操作此时便产生下列结果数据读取指令{RA2,RB1,RB2,RA3,RA4,RB3,RB4,RA5,RA6,RB5,RB6}队列缓存单元{Q1(RA1),Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q12}监控缓存器{M1(0),M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12}两数据读取指令RA1、RA2均用来撷取同一存储分页A所储存的数据,且在指令队列40中,数据读取指令RA1是唯一且最后的读取指令,所以数据读取指令RA2便会直接地存入指令队列40(步骤106、104),而数据读取指令RA2是储存在队列缓存单元Q2中。此外,同一初始值便同样地设定对应队列缓存单元Q2的监控缓存器M2所储存的延迟时间值。所以,重排数据读取指令的操作此时便产生下列结果数据读取指令{RB1,RB2,RA3,RA4,RB3,RB4,RA5,RA6,RB5,RB6}队列缓存单元{Q1(RA1),Q2(RA2),Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q12}监控缓存器{M1(0),M2(0),M3,M4,M5,M6,M7,M8,M9,M10,M11,M12}此时,数据读取指令RB1与数据读取指令RA2是用来分别撷取不同存储分页A、B中所纪录的数据,而数据读取指令RB1会直接地存入指令队列40(步骤102、104),且数据读取指令RB1会储存在队列缓存单元Q3。此外,同一初始值亦同样地设定对应队列缓存单元Q3的监控缓存器M3所储存的延迟时间值。所以,重排数据读取指令的操作此时便产生下列结果数据读取指令{RB2,RA3,RA4,RB3,RB4,RA5,RA6,RB5,RB6}队列缓存单元{Q1(RA1),Q2(RA2),Q3(RB1),Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q12}监控缓存器{M1(0),M2(0),M3(0),M4,M5,M6,M7,M8,M9,M10,M11,M12}两数据读取指令RB1、RB2均用来撷取同一存储分页B所储存的数据,且在指令队列40中,数据读取指令RB1是为最后的读取指令,所以数据读取指令RB2便会直接地存入指令队列40(步骤106、104),而数据读取指令RB2系储存在队列缓存单元Q4中。此外,同一初始值便同样地设定对应队列缓存单元Q4的监控缓存器M4所储存的延迟时间值。所以,重排数据读取指令的操作此时便产生下列结果数据读取指令{RA3,RA4,RB3,RB4,RA5,RA6,RB5,RB6}队列缓存单元{Q1(RA1),Q2(RA2),Q3(RB1),Q4(RB2),Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q12}监控缓存器{M1(0),M2(0),M3(0),M4(0),M5,M6,M7,M8,M9,M10,M11,M12}数据读取指令RA2、RA3所要求的数据是储存在同一存储分页A(步骤102),此外,数据读取指令RA2并非指令队列40中排列在最后的数据读取指令(步骤104)。此外,监控缓存器M3的延迟时间值在增加该递增值后并未超过该最大可容许数值(步骤108),所以数据读取指令RB1、RB2便经由重新排列以便于队列缓存器Q2后储存数据读取指令RA3,亦即队列缓存器Q3此时会储存数据读取指令RA3而非数据读取指令RB1,而数据读取指令RB1、RB2的执行时序便被延迟而分别储存在队列缓存器Q4、Q5中。因为递延数据读取指令RB1、RB2的执行,所以对应数据读取指令RB1、RB2的延迟时间值亦需随之递增。此外,同一初始值便同样地设定对应队列缓存单元Q3的监控缓存器M3所储存的延迟时间值。所以,重排数据读取指令的操作便产生下列结果数据读取指令{RA4,RB3,RB4,RA5,RA6,RB5,RB6}队列缓存单元{Q1(RA1),Q2(RA2),Q3(RA3),Q4(RB1),Q5(RB2),Q6,Q7,Q8,Q9,Q10,Q11,Q12}
监控缓存器{M1(0),M2(0),M3(0),M4(1),M5(1),M6,M7,M8,M9,M10,M11,M12}数据读取指令RA4如同数据读取指令RA3,其是用来撷取同一存储分页A所纪录的数据(步骤102),此外,数据读取指令RA3并非指令队列40中最后的数据读取指令(步骤106)。明显地,监控缓存器M4的延迟时间值在调整后并不会超过该最大可容许数值(步骤108),所以,数据读取指令RB1、RB2便会因为插入数据读取指令RA4而被进一步递延其执行时序(步骤110),而队列缓存单元Q4此时便储存数据读取指令RA4而非数据读取指令RB1,此外,递延的数据读取指令RB1、RB2则分别储存在队列缓存单元Q5、Q6。因为数据读取指令RB1、RB2被延迟,所以相对应的延迟时间值亦需随之增加该递增值。此外,同一初始值便同样地设定对应队列缓存单元Q4的监控缓存器M4所储存的延迟时间值。所以,重排数据读取指令的操作此时便产生下列结果数据读取指令{RB3,RB4,RA5,RA6,RB5,RB6}队列缓存单元{Q1(RA1),Q2(RA2),Q3(RA3),Q4(RA4),Q5(RB1),Q6(RB2),Q7,Q8,Q9,Q10,Q11,Q12}监控缓存器{M1(0),M2(0),M3(0),M4(0),M5(2),M6(2),M7,M8,M9,M10,M11,M12}两数据读取指令RB2、RB3均用来撷取同一存储分页B所储存的数据,然而,在指令队列40中,数据读取指令RB2现在是为最后的读取指令,所以数据读取指令RB3便可直接地存入指令队列40(步骤106、104),而数据读取指令RB3是储存在队列缓存单元Q7中。此外,同一初始值便同样地设定对应队列缓存单元Q7的监控缓存器M7所储存的延迟时间值。所以,重排数据读取指令的操作便产生下列结果数据读取指令{RB4,RA5,RA6,RB5,RB6}队列缓存单元{Q1(RA1),Q2(RA2),Q3(RA3),Q4(RA4),Q5(RB1),Q6(RB2),Q7(RB3),Q8,Q9,Q10,Q11,Q12}监控缓存器{M1(0),M2(0),M3(0),M4(0),M5(2),M6(2),M7(0),M8,M9,M10,M11,M12}同样地,两数据读取指令RB3、RB4均用来撷取同一存储分页B所储存的数据,且在指令队列40中,数据读取指令RB3是为最后的读取指令,所以数据读取指令RB4便可直接地存入指令队列40(步骤106、104),而数据读取指令RB4是储存在队列缓存单元Q8中。此外,同一初始值便同样地设定对应队列缓存单元Q8的监控缓存器M8所储存的延迟时间值。所以,重排数据读取指令的操作便产生下列结果数据读取指令{RA5,RA6,RB5,RB6}队列缓存单元{Q1(RA1),Q2(RA2),Q3(RA3),Q4(RA4),Q5(RB1),Q6(RB2),Q7(RB3),Q8(RB4),Q9,Q10,Q11,Q12}监控缓存器{M1(0),M2(0),M3(0),M4(0),M5(2),M6(2),M7(0),M8(0),M9,M10,M11,M12}数据读取指令RA4、RA5所要求的数据是储存于同一存储分页A(步骤102),此外,数据读取指令RA4并非指令队列40中排列在最后的数据读取指令(步骤106)。若紧接于数据读取指令RA4后的数据读取指令RB1又被递延一次,则相对应的延迟时间值于增加该递增值后会成为3,亦即延迟时间值便会超过该最大可容许数值(步骤108)。所以,原本储存在指令队列40中的数据读取指令便不会重新排列来插入数据读取指令RA5,因此,本实施例中,数据读取指令RA5便会直接地存入指令队列40(步骤104),且数据读取指令RA5会储存在队列缓存器9而具有最低的执行优先权。此外,同一初始值便同样地设定对应队列缓存单元Q9的监控缓存器M9所储存的延迟时间值。所以,重排数据读取指令的操作便会产生下列结果数据读取指令{RA6,RB5,RB6}队列缓存单元{Q1(RA1),Q2(RA2),Q3(RA3),Q4(RA4),Q5(RB1),Q6(RB2),Q7(RB3),Q8(RB4),Q9(RA5),Q10,Q11,Q12}监控缓存器{M1(0),M2(0),M3(0),M4(0),M5(2),M6(2),M7(0),M8(0),M9(0),M10,M11,M12}两数据读取指令RA5、RA6均用来撷取同一存储分页A所储存的数据,且在指令队列40中,数据读取指令RA5的为最后的读取指令,所以数据读取指令RA6便会直接地存入指令队列40(步骤106、104),而数据读取指令RA6是储存在队列缓存单元Q10中。此外,同一初始值便同样地设定对应队列缓存单元Q10的监控缓存器M10所储存的延迟时间值。所以,重排数据读取指令的操作便产生下列结果数据读取指令{RB5,RB6}
队列缓存单元{Q1(RA1),Q2(RA2),Q3(RA3),Q4(RA4),Q5(RB1),Q6(RB2),Q7(RB3),Q8(RB4),Q9(RA5),Q10(RA6),Q11,Q12}监控缓存器{M1(0),M2(0),M3(0),M4(0),M5(2),M6(2),M7(0),M8(0),M9(0),M10(0),M11,M12}数据读取指令RB5如同数据读取指令RB4,其是用来撷取同一存储分页B所纪录的数据(步骤102),此外,数据读取指令RB4并非指令队列40中最后的数据读取指令(步骤106)。此时,监控缓存器M9所记录的延迟时间值仍为0,且其在增加该递增值后为1而不会超过该最大可容许数值(步骤108)。所以,数据读取指令RA5、RA6便可因为插入数据读取指令RB5而重排其在指令队列40中的位置(步骤110)。此外,队列缓存单元Q9此时纪录数据读取指令RB5而非数据读取指令RA5,而数据读取指令RA5、RA6则因为递延其执行时序而分别储存在队列缓存单元Q10、Q11中。由于数据读取指令RA5、RA6被延迟,所以相对应的延迟时间值亦需随之调整而增加该递增值。此外,同一初始值便同样地设定对应队列缓存单元Q9的监控缓存器M9所储存的延迟时间值。所以,重排数据读取指令的操作便产生下列结果数据读取指令{RB6}队列缓存单元{Q1(RA1),Q2(RA2),Q3(RA3),Q4(RA4),Q5(RB1),Q6(RB2),Q7(RB3),Q8(RB4),Q9(RB5),Q10(RA5),Q11(RA6),Q12}监控缓存器{M1(0),M2(0),M3(0),M4(0),M5(2),M6(2),M7(0),M8(0),M9(0),M10(1),M11(1),M12}数据读取指令RB6如同数据读取指令RB5,其是用来撷取同一存储分页B所纪录的数据(步骤102),此外,数据读取指令RB5并非指令队列40中最后的数据读取指令(步骤106)。明显地,监控缓存器M10的延迟时间值在调整后并不会超过该最大可容许数值(步骤108),所以,数据读取指令RA5、RA6便由于插入数据读取指令RB6而被进一步递延其执行时序(步骤110),而队列缓存单元Q10此时便储存数据读取指令RB6而非数据读取指令RA5,此外,递延的数据读取指令RA5、RA6则分别储存于队列缓存单元Q11、Q12。因为数据读取指令RA5、RA6又被延迟,所以相对应的延迟时间值亦需随之增加该递增值。此外,同一初始值便同样地设定对应队列缓存单元Q10的监控缓存器M10所储存的延迟时间值。所以,重排数据读取指令的操作最后便产生下列的结果
数据读取指令{}队列缓存单元{Q1(RA1),Q2(RA2),Q3(RA3),Q4(RA4),Q5(RB1),Q6(RB2),Q7(RB3),Q8(RB4),Q9(RB5),Q10(RB6),Q11(RA5),Q12(RA6)}监控缓存器{M1(0),M2(0),M3(0),M4(0),M5(2),M6(2),M7(0),M8(0),M9(0),M10(0),M11(2),M12(2))请参阅图6,图6为存储装置20在本发明重排数据存取指令执行后的运作示意图。如上所述,数据读取指令的最后执行顺序为RA1、RA2、RA3、RA4、RB1、RB2、RB3、RB4、RB4、RB5、RA5、RA6,而该最后执行顺序是不同于原本的执行顺序RA1、RA2、RB1、RB2、RA3、RA4、RB3、RB4、RA5、RA6。如图6所示,因为两次存储分页不吻合(page miss)而需触发两次存储分页的切换操作。所以,对于内存总线来说,切换存储分页的操作会造成该内存总线等待两次延迟时间L1,然而,对于主机总线来说,两次切换存储分页的操作仅会造成该主机总线等待一次延迟时间L2。相较于图2,图6显示本发明重排数据存取指令的操作可节省大量时间耗费于切换不同的内存分页,此外,主机总线的使用也更有效率。明显地,本发明重排数据存取指令的操作仅需较短的时间即可将主控制器所要的数据自存储装置撷取并传递至主控制器。另外,本发明内存控制电路30是设置于一北桥电路(northb ridge circuit)中,所以该北桥电路即可支持重排数据存取指令的功能,因此该北桥电路可视为一reorder-enabled的北桥电路。
相较于图2,图6亦清楚地显示延迟时间L2是大幅地减少,而由于主机总线具有较佳的利用率,因此整体数据存取效能也大幅地提升。在本实施例中,一最大可容许数值是用来避免主机总线的效能因为降低切换存储分页所耗费的时间而变差,由图6可知,内存总线上数据传输运作的结束时间趋近主机总线上数据传输运作的结束时间,亦即内存总线的使用与主机总线的使用达到一平衡状态而最佳化数据存取操作的效能。请注意,该最大可容许数值是为可编程的,以便可满足不同数据处理系统的需求来适当地平衡内存总线的效能与主机总线的效能。换句话说,经由适当最大可容许数值的设定,内存总线与主机总线可产生最佳的数据传输效能。
本发明重排数据存取指令的方法不仅只简单地聚集存取同一存储分页的数据存取指令,此外,本发明重排数据存取指令的方法在聚集存取同一存储分页的数据存取指令时会避免违背所设定的最大可容许数值。换句话说,若插入一新接收的数据存取指令会十分严重地递延目前已储存在指令队列中的数据存取指令的执行时序,则本发明重排数据存取指令的方法仅将该新接收的数据存取指令如同往常一般地存入该指令队列而不重排储存在指令队列中的数据存取指令。经由密切地监控储存在指令队列中的数据存取指令所对应的延迟时间值,主机总线的效能便不会如已知技术一般而大幅地恶化。综合上述,内存总线的效能与主机总线的效能便可取得一平衡点以达到最佳化数据处理系统的整体效能的目的。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明专利的涵盖范围。
权利要求
1.一种内存控制电路,用来存取一计算机系统的存储装置,该存储装置是电连接于该内存控制电路,该内存控制电路是依据一主控制器依序输出的数据存取指令来逐一地响应该主控制器,该内存控制电路包含有一指令队列,用来储存该主控制器输出的数据存取指令;一延迟时间监控单元,电连接于该指令队列,用来纪录多个延迟时间值,该多个延迟时间值是分别对应该指令队列所储存的数据存取指令;以及一重排控制单元,电连接于该指令队列,用来依据已储存在该指令队列的数据存取指令所对应的延迟时间值控制一第一数据存取指令存入该指令队列并对应一执行优先权;其中,该存储装置是依据该指令队列所储存的数据存取指令所对应的执行优先权而依序地被存取。
2.如权利要求
1所述的内存控制电路,其另包含有一存储分页/存储库比较单元,电连接于该重排控制单元与该指令队列,用来判断该第一数据存取指令是否用来存取该存储装置的第一存储分页,以及判断该指令队列是否已储存一第二数据存取指令与一第三数据存取指令分别用来存取该存储装置的第一分页与该存储装置的第二分页,其中,该第三数据存取指令是紧邻于该第二数据存取指令之后,且该第三数据存取指令所对应的执行优先权低于该第二数据存取指令所对应的执行优先权。
3.如权利要求
2所述的内存控制电路,其另包含有一延迟时间控制单元,电连接于该重排控制单元与该延迟时间监控单元,用来检测对应该第三数据存取指令的第三延迟时间值是否大于一最大可容许数值。
4.如权利要求
3所述的内存控制电路,其中,该最大可容许数值是可编程的。
5.如权利要求
2所述的内存控制电路,其中,该存储装置是为该计算机系统的主存储器。
6.如权利要求
5所述的内存控制电路,其中,该主存储器是为动态随机存取存储器。
7.如权利要求
1所述的内存控制电路,其中,该内存控制电路是设置在该计算机系统的北桥电路。
8.一种存取计算机系统的存储装置的方法,其包含有接收多个数据存取指令,以依据一第一预定顺序存取该存储装置;以及依据一第二预定顺序在一指令队列中重排该多个数据存取指令,以重新安置用来存取一存储分页的第一数据存取指令紧接在用来存取该存储分页的第二数据存取指令之后;其中,若重新安置该第一数据存取指令会造成一第三数据存取指令的延迟时间值超过一预定限制值,则禁止重新安置该第一数据存取指令。
9.如权利要求
8所述的方法,其中,在该第一数据存取指令存入该指令队列前,该第三数据存取指令在该指令队列中是紧接在该第二数据存取指令之后。
10.如权利要求
8所述的方法,其中,重新安置该第一数据存取指令的操作另包含有判别该第一数据存取指令与该第二数据存取指令均存取该存储分页;判断该第三数据存取指令是存取另一存储分页;以及在该指令队列中,插入该第一数据存取指令于该第二数据存取指令与该第三数据存取指令之间。
11.如权利要求
10所述的方法,其另包含有判别对应该第三数据存取指令的延迟时间值;在存入该第一数据存取指令至该指令队列前,检查该第三数据存取指令的延迟时间值是否会在插入该第一数据存取指令后增加而超过该预定限制值;以及在存入该第一数据存取指令至该指令队列后,使用一预定递增值增加该第三数据存取指令的延迟时间值。
12.如权利要求
11所述的方法,其中,该预定递增值是可编程的。
13.如权利要求
8所述的方法,其中,该预定限制值是可编程的。
专利摘要
本发明提供一种重排多个用来存取数据处理系统上主存储器的数据存取指令的方法与装置。该方法包含有接收多个数据存取指令以依据一第一预定顺序存取一存储装置,以及依据将存取一存储分页的第一数据存取指令排列在存取同一存储分页的第二数据存取指令之后的方式重排一指令队列所接收的数据存取指令以使其对应一第二预定顺序来提高数据存取效能。此外,若一第三数据存取指令在重排后会造成一延迟时间值超过一预定限制值,则禁止执行该重排操作。
文档编号G06F12/00GKCN1252605SQ200410001891
公开日2006年4月19日 申请日期2004年1月15日
发明者林瑞霖, 吴胜宗, 蔡日兴, 黄祥毅, 张维昀, 刘国平, 何桓蓁 申请人:威盛电子股份有限公司导出引文BiBTeX, EndNote, RefMan
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1