CN101447911A - 一种通过分布控制扩展访存队列容量的装置 - Google Patents
一种通过分布控制扩展访存队列容量的装置 Download PDFInfo
- Publication number
- CN101447911A CN101447911A CNA2007100943000A CN200710094300A CN101447911A CN 101447911 A CN101447911 A CN 101447911A CN A2007100943000 A CNA2007100943000 A CN A2007100943000A CN 200710094300 A CN200710094300 A CN 200710094300A CN 101447911 A CN101447911 A CN 101447911A
- Authority
- CN
- China
- Prior art keywords
- access
- queue
- instruction
- access instruction
- platform
- 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.)
- Granted
Links
Images
Landscapes
- Advance Control (AREA)
Abstract
本发明公开了一种超标量微处理器中通过分布控制扩展访存队列容量的装置,即在所述微处理器的指令流水线中,在寄存器重命名站台设置访存队列分配器,在指令发射站台设置访存指令发射控制器。访存队列分配器为每一条访存指令分配访存队列条目号时,检查当前待分配的新条目号与发射队列中访存指令携带的访存队列条目号是否匹配,如果不匹配,则分配新条目,并将访存指令发送到发射队列;如果匹配,则不分配新条目,将访存指令阻塞在寄存器重命名站台。访存指令发射控制器准备发射访存指令时,在常规的指令发射条件的基础上增加一项判断条件,即检查该访存指令携带的访存队列条目号与已发射但还未退出的访存指令携带的访存队列条目号是否匹配,如果不匹配,则允许发射,将该访存指令发送到执行部件;如果匹配,则阻止发射,将该访存指令继续保留在发射队列中。该装置在访存指令退出之前将这些访存指令占用的访存队列条目预先分配给年轻的访存指令,并缓存在已有的发射队列中,在保证访存队列信息不被覆盖的前提下,增加了流水线上访存指令的数量,间接扩展了访存队列的容量,弥补了常用访存队列控制方法中的性能损失。
Description
技术领域
本发明涉及一种在乱序发射的超标量微处理器中管理访存队列的装置,可通过分布式控制来间接扩展访存队列容量。
背景技术
在超标量微处理器中,访存指令处理通常包括取指、译码、寄存器重命名、发射、读寄存器、地址计算、地址代换、访存操作、指令退出等几个流水线站台,其中访存操作的延迟不确定,可能需要多个周期。为了提高性能,微处理器需要支持指令乱序发射、乱序执行和顺序退出。为此,微处理器需要设置专门的访存队列,存放从地址代换到指令退出之间飞行的访存指令状态,并通过指令重排序缓冲处理指令的顺序退出。访存队列通常包括装入队列和存储队列两部分,装入队列用于保留存储器读指令的相关信息,存储队列用于保留存储器写指令的相关信息。设置访存队列主要是在保证存储器访问行为正确的基础上,缓解因访存延迟带来的性能瓶颈,因此,访存队列的条目数与微处理器性能密切相关。但是由于访存队列管理复杂,条目数的增加直接影响硬件开销和工作频率,因此条目数受到一定限制,进而如何有效地利用有限的条目成为本专利研究的重点。
在重命名站台之前,指令都是顺序处理,进入发射站台后指令可以被乱序执行。为保证访存指令乱序执行的正确性,访存指令在访存队列中的位置必须遵从程序中的顺序,所以通常在寄存器重命名站台为访存指令分配访存队列的条目号。另外,还在寄存器重命名站台为所有指令按程序分配重排序缓冲的条目号,即指令序列号,以便在指令飞行过程中登记特征信息,保证乱序执行后的指令按程序顺序退出。在指令进入发射队列的同时,进入重排序缓冲。发射站台分派访存指令,在访存指令经过地址代换后,只需根据已分配的条目号进入访存队列相应的条目。
在寄存器重命名站台,为访存指令分配访存队列条目号时,需要判断访存队列是否有空闲条目,常用的策略是将访存队列作为头尾相连的循环队列,在寄存器重命名站台设置头尾指针管理访存队列的分配和回收。初始时,头尾指针相同,都指向条目0。当寄存器重命名站台遇到一条访存指令时,将头指针所指的条目分配给该访存指令,头指针循环加1。当一条访存指令退出时,尾指针循环加1。在发生转移预测失败或其它异常时,需要对访存队列的头指针进行修复,将错误路径上分配出去的条目回收。这样,从尾指针到头指针循环减1之间的条目表示已分配的条目,从头指针到尾指针循环减1之间的条目表示空闲的条目。这种方法可以准确地控制访存队列满的情况,但它有两个缺陷:一是访存队列的条目数等于寄存器重命名到指令退出之间飞行的访存指令数,造成地址代换后到指令退出之间飞行的访存指令数小于访存队列的条目数,不能充分利用访存部件资源;二是访存指令在寄存器重命名站台会因为访存队列满阻塞非访存指令进入发射队列,减弱乱序发射和乱序执行的粒度,降低执行部件资源的利用率。
为此,本专利提出了一种全新的方法,调整了访存队列的分配策略,在重命名站台和发射站台分布控制访存指令的分派,使得访存队列的条目数等于指令发射到指令退出之间飞行的访存指令数,从而有效地提高了访存队列的利用率,弥补了常用的访存队列分配策略带来的性能损失。该方法在不增加访存队列容量的基础上,利用已有的发射队列扩展了访存队列的容量,提高了微处理器的性能。
发明内容
本发明要解决的技术问题是提供一种通过分布控制扩展访存队列容量的装置,在不增加访存队列实际条目数的基础上,通过分布控制访存队列的分配原则和访存指令的发射原则,间接地扩展访存队列的容量。
为解决上述技术问题,本发明的通过分布控制扩展访存队列容量的装置采用如下技术方案实现:该装置包括在微处理器的寄存器重命名站台设置访存队列条目分配器,在微处理器的发射站台设置访存指令发射控制器。其中,在所述微处理器的寄存器重命名站台中,访存队列条目分配器的操作为:当需要为访存指令分配访存队列条目号时,只看当前发射队列中访存指令携带的访存队列条目号是否与即将分配的新条目号相同,如果不同则该访存指令可获得新的访存队列条目号,如果相同则该访存指令被阻塞在寄存器重命名站台,直到具有相同访存队列条目号的访存指令从发射队列中分派出去为止;在所述微处理器的发射站台中,访存指令发射控制器的操作为:如果发射的是访存指令,在满足其它发射条件下,还要看后续所有站台中飞行的访存指令携带的访存队列条目号是否与即将发射的访存指令携带的访存队列条目号相同,如果都不相同则该条访存指令允许发射,如果其中一个相同则该条访存指令继续保留在发射队列。
采用本发明的通过分布控制扩展访存队列容量的装置,在不增加访存队列条目数的基础上,通过调整访存队列的分配策略,在重命名站台和发射站台分布控制访存指令的分派,充分利用发射队列缓冲来增加飞行中的访存指令数量,间接扩展了访存队列的容量,提高了微处理器性能。
附图说明
下面结合附图与具体实施方式对本发明作进一步详细的说明:
图1是本发明中访存指令的流水线处理示意图。
具体实施方式
本专利的装置包括在微处理器的寄存器重命名站台设置访存队列条目分配器,在发射站台设置访存指令发射控制器。其中,在所述微处理器的寄存器重命名站台设置的访存队列条目分配器包括:将访存队列作为循环队列,为装入队列和存储队列分别设置一个头指针,复位后,头指针都为“0”,表示即将分配第0个条目给对应的访存指令。当寄存器重命名站台中遇到装入指令时,先查询当前发射队列中所有装入指令携带的装入队列条目号与装入队列头指针所指的条目号是否相同,如果其中一个相同,则不能给该条装入指令分配新条目,必须在寄存器重命名站台等待,直到具有相同装入队列条目号的装入指令从发射队列中分派出去为止。对于存储指令,处理方式与装入指令相同,这里不再细述。每条指令流向后续站台时都将携带装入队列条目号和存储队列条目号,并按程序顺序存放在重排序缓冲中。当发生转移预测失败或异常时,读出重排序缓冲中相应的装入队列条目号和存储队列条目号,对寄存器重命名站台中当前的装入队列头指针和存储队列头指针进行修复。
本专利在所述微处理器的发射站台中设置的访存指令发射控制器包括:访存队列条目号缓冲,用于存放访存指令从发射到进入访存队列之间每个站台中访存指令所携带的访存队列条目号。每个缓冲包括一位有效位、一位类型位和多位访存队列条目号。其中,有效位为“1”表示对应站台中的访存指令有效;类型位为“0”表示装入指令,为“1”表示存储指令。在本专利所述的微处理器中,从发射到进入访存队列之间存在3个站台,所以需要设置3个缓冲,分别标记为缓冲0、缓冲1和缓冲2,在每个周期,缓冲0中输入新发射指令的信息,缓冲1接收缓冲0的信息,缓冲2接收缓冲1的信息。访存指令发射控制器将当前装入队列和存储队列中所有条目的有效位作为输入,并为访存指令增加一个发射条件。当准备发射装入指令时,如果其装入队列条目号与3个缓冲中任一有效的装入队列条目号相同或装入队列对应条目有效,则该条装入指令不能发射;同样,当准备发射存储指令时,如果其存储队列条目号与3级缓冲中任一有效的存储队列条目号相同或存储队列对应条目有效,则该条存储指令不能发射。如果发射站台成功地发出了一条装入指令,则将其装入队列条目号记入缓冲0中,置有效位为“1”,置类型位为“0”;如果发射站台成功地发出了一条存储指令,则将其存储队列条目号记入缓冲0中,置有效位为“1”,置类型位为“1”;如果发射了一条非访存类指令,则置缓冲0的有效位为“0”。
本装置中访存队列的管理方法与常用的访存队列管理方法的区别在于:在寄存器重命名站台,为一条访存指令分配一个访存队列条目时,如果原来分配该条目的访存指令还没有退出,常用的方法不允许给年轻的访存指令分配相同的条目号,直到年老的访存指令退出为止,而本装置允许给年轻的访存指令分配相同的条目,并让该条访存指令进入发射队列中等待,但不允许进入发射站台之后的流水线中。由此可见,常用的方法中,访存队列条目数等于寄存器重命名到指令退出之间飞行的访存指令数;而本装置中,访存队列条目数等于指令发射到指令退出之间飞行的访存指令数,而从寄存器重命名到指令退出之间允许飞行的访存指令数将大于访存队列数,间接扩展了访存队列的容量,提高了微处理器的访存性能。同时,寄存器重命名站台因访存指令阻塞的概率下降,更多非访存指令可进入发射队列,从而充分发挥乱序发射的优势,进一步提高了微处理器的性能。
Claims (3)
1、一种超标量微处理器中通过分布控制扩展访存队列容量的装置,包括在超标量微处理器的寄存器重命名站台设置访存队列分配器,在发射站台设置访存指令发射控制器,其特征在于:所述的访存队列分配器为每一条访存指令分配访存队列条目时,按程序顺序进行分配,并且根据当前流水线发射站台中所有访存指令占有访存队列条目的情况决定是否将该访存指令发送到发射站台;所述的访存指令发射控制器准备发射访存指令时,则根据后续站台中飞行的访存指令占有访存队列条目的情况决定是否将该条访存指令发送到执行部件。
2、如权利要求1所述的通过分布控制扩展访存队列容量的装置,其特征在于:所述的访存队列分配器,设置在所述的微处理器的寄存器重命名站台,将访存队列作为循环队列进行管理,从条目0开始进行循环分配,为装入队列和存储队列分别设置头指针,复位结束后,头指针都指向条目0;当遇到访存指令时,如果头指针所指条目号与所述的微处理器的发射队列中所有访存指令的访存队列条目号不相同,则为该条访存指令分配访存队列条目,否则将该访存指令阻塞在寄存器重命名站台,直到具有相同访存队列条目号的访存指令从发射队列中分派出去才停止阻塞。
3、如权利要求1所述的通过分布控制扩展访存队列容量的装置,其特征在于:所述的访存指令发射控制器,设置在所述的微处理器的发射站台,如果从发射站台到访存指令进入存储队列或装入队列之间有n个站台,则设置n个缓冲,分别标记为缓冲0、缓冲1、……、缓冲n—1,这些缓冲用于记录当前n个站台中访存指令的访存队列条目号,当准备发射访存指令时,除了检查常规的发射条件以外,还要增加一项检查,即判断该访存指令携带的访存队列条目号与n个缓冲中的访存队列条目号是否相同,而且还要判断对应的访存队列条目是否有效,如果不同并且无效,则允许发射该条访存指令,否则阻塞该条访存指令的发射,发射完访存指令后,将其访存队列条目号记录在缓冲0中,缓冲0中原有值传递给缓冲1,缓冲1中原有值传递给缓冲2,类似依次传递直到缓冲n—1,缓冲n—1中原有值被覆盖。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007100943000A CN101447911B (zh) | 2007-11-27 | 2007-11-27 | 一种通过分布控制扩展访存队列容量的装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007100943000A CN101447911B (zh) | 2007-11-27 | 2007-11-27 | 一种通过分布控制扩展访存队列容量的装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101447911A true CN101447911A (zh) | 2009-06-03 |
CN101447911B CN101447911B (zh) | 2010-12-15 |
Family
ID=40743329
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007100943000A Active CN101447911B (zh) | 2007-11-27 | 2007-11-27 | 一种通过分布控制扩展访存队列容量的装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101447911B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103514177A (zh) * | 2012-06-20 | 2014-01-15 | 盛趣信息技术(上海)有限公司 | 数据存储方法及系统 |
CN104035748A (zh) * | 2013-03-08 | 2014-09-10 | 三星电子株式会社 | 包括打包源字段和目的地字段的微操作 |
CN104391680A (zh) * | 2014-11-25 | 2015-03-04 | 上海高性能集成电路设计中心 | 一种超标量微处理器中实现存储指令流水提交方法 |
WO2015165017A1 (zh) * | 2014-04-28 | 2015-11-05 | 华为技术有限公司 | 一种数据处理装置及方法 |
CN105426160A (zh) * | 2015-11-10 | 2016-03-23 | 北京时代民芯科技有限公司 | 基于sprac v8指令集的指令分类多发射方法 |
US10592300B2 (en) | 2012-06-15 | 2020-03-17 | Intel Corporation | Method and system for implementing recovery from speculative forwarding miss-predictions/errors resulting from load store reordering and optimization |
CN111221579A (zh) * | 2018-11-27 | 2020-06-02 | 展讯通信(上海)有限公司 | 预测Load指令执行延迟的方法及系统 |
CN111857830A (zh) * | 2020-06-05 | 2020-10-30 | 上海赛昉科技有限公司 | 一种提前转发指令数据的通路设计方法、系统及存储介质 |
CN111966406A (zh) * | 2020-08-06 | 2020-11-20 | 北京微核芯科技有限公司 | 乱序处理器中乱序执行队列的调度方法和装置 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101818967B1 (ko) | 2012-06-15 | 2018-01-16 | 인텔 코포레이션 | 명확화 없는 비순차 load store 큐 |
KR101826080B1 (ko) * | 2012-06-15 | 2018-02-06 | 인텔 코포레이션 | 통합된 구조를 갖는 동적 디스패치 윈도우를 가지는 가상 load store 큐 |
WO2013188460A2 (en) | 2012-06-15 | 2013-12-19 | Soft Machines, Inc. | A virtual load store queue having a dynamic dispatch window with a distributed structure |
EP2862068B1 (en) | 2012-06-15 | 2022-07-06 | Intel Corporation | Reordered speculative instruction sequences with a disambiguation-free out of order load store queue |
WO2013188696A2 (en) | 2012-06-15 | 2013-12-19 | Soft Machines, Inc. | An instruction definition to implement load store reordering and optimization |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5996066A (en) * | 1996-10-10 | 1999-11-30 | Sun Microsystems, Inc. | Partitioned multiply and add/subtract instruction for CPU with integrated graphics functions |
CN100399299C (zh) * | 2005-10-28 | 2008-07-02 | 中国科学院计算技术研究所 | 一种高速缓存失效的处理器访存指令处理方法 |
US7447879B2 (en) * | 2006-02-09 | 2008-11-04 | International Business Machines Corporation | Scheduling instructions in a cascaded delayed execution pipeline to minimize pipeline stalls caused by a cache miss |
-
2007
- 2007-11-27 CN CN2007100943000A patent/CN101447911B/zh active Active
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10592300B2 (en) | 2012-06-15 | 2020-03-17 | Intel Corporation | Method and system for implementing recovery from speculative forwarding miss-predictions/errors resulting from load store reordering and optimization |
CN103514177A (zh) * | 2012-06-20 | 2014-01-15 | 盛趣信息技术(上海)有限公司 | 数据存储方法及系统 |
CN104035748A (zh) * | 2013-03-08 | 2014-09-10 | 三星电子株式会社 | 包括打包源字段和目的地字段的微操作 |
CN104035748B (zh) * | 2013-03-08 | 2018-03-09 | 三星电子株式会社 | 包括打包源字段和目的地字段的微操作 |
CN105308557A (zh) * | 2014-04-28 | 2016-02-03 | 华为技术有限公司 | 一种数据处理装置及方法 |
WO2015165017A1 (zh) * | 2014-04-28 | 2015-11-05 | 华为技术有限公司 | 一种数据处理装置及方法 |
CN105308557B (zh) * | 2014-04-28 | 2018-06-15 | 华为技术有限公司 | 一种数据处理装置及方法 |
CN104391680B (zh) * | 2014-11-25 | 2017-04-19 | 上海高性能集成电路设计中心 | 一种超标量微处理器中实现存储指令流水提交方法 |
CN104391680A (zh) * | 2014-11-25 | 2015-03-04 | 上海高性能集成电路设计中心 | 一种超标量微处理器中实现存储指令流水提交方法 |
CN105426160A (zh) * | 2015-11-10 | 2016-03-23 | 北京时代民芯科技有限公司 | 基于sprac v8指令集的指令分类多发射方法 |
CN105426160B (zh) * | 2015-11-10 | 2018-02-23 | 北京时代民芯科技有限公司 | 基于sprac v8指令集的指令分类多发射方法 |
CN111221579A (zh) * | 2018-11-27 | 2020-06-02 | 展讯通信(上海)有限公司 | 预测Load指令执行延迟的方法及系统 |
CN111221579B (zh) * | 2018-11-27 | 2022-04-26 | 展讯通信(上海)有限公司 | 预测Load指令执行延迟的方法及系统 |
CN111857830A (zh) * | 2020-06-05 | 2020-10-30 | 上海赛昉科技有限公司 | 一种提前转发指令数据的通路设计方法、系统及存储介质 |
CN111857830B (zh) * | 2020-06-05 | 2023-09-22 | 上海赛昉科技有限公司 | 一种提前转发指令数据的通路设计方法、系统及存储介质 |
CN111966406A (zh) * | 2020-08-06 | 2020-11-20 | 北京微核芯科技有限公司 | 乱序处理器中乱序执行队列的调度方法和装置 |
CN111966406B (zh) * | 2020-08-06 | 2021-03-23 | 北京微核芯科技有限公司 | 乱序处理器中乱序执行队列的调度方法和装置 |
US11989561B2 (en) | 2020-08-06 | 2024-05-21 | Beijing Vcore Technology Co., Ltd. | Method and apparatus for scheduling out-of-order execution queue in out-of-order processor |
Also Published As
Publication number | Publication date |
---|---|
CN101447911B (zh) | 2010-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101447911B (zh) | 一种通过分布控制扩展访存队列容量的装置 | |
CN101819518B (zh) | 在事务内存中快速保存上下文的方法和装置 | |
US8645617B2 (en) | Memory device for concurrent and pipelined memory operations | |
CN100504814C (zh) | 闪存的区块管理方法 | |
CN105468298B (zh) | 一种基于日志结构合并树的键值存储方法 | |
CN103946803A (zh) | 具有高效工作排队的处理器 | |
US9898334B1 (en) | Method and apparatus for scheduling processing tasks in a pipelined engine | |
US8583873B2 (en) | Multiport data cache apparatus and method of controlling the same | |
CN106959893A (zh) | 加速器、用于加速器的内存管理方法以及数据处理系统 | |
CN103201725A (zh) | 用于在多个处理器之间共享的存储器的存储器访问设备及其访问方法 | |
CN104765575A (zh) | 信息存储处理方法 | |
CN106445405A (zh) | 一种面向闪存存储的数据访问方法及其装置 | |
CN104503923B (zh) | 一种非对称磁盘阵列高速缓存调度方法 | |
CN105335306B (zh) | 一种内存控制方法和装置 | |
US9477412B1 (en) | Systems and methods for automatically aggregating write requests | |
US9176820B2 (en) | Disk logging method applicable to storage medium and electronic device, storage medium using the same and electronic device using the same | |
CN101158893A (zh) | 数据处理系统中的寄存器重命名 | |
CN104765574A (zh) | 数据云端存储方法 | |
CN101135998A (zh) | 用于调度总线上的命令的方法和装置 | |
CN101201735A (zh) | 用于以通过式存储模式操作分级缓存系统的方法和设备 | |
CN105630413B (zh) | 一种磁盘数据的同步回写方法 | |
CN105528195A (zh) | 一种支持同时多线程指令乱序发射的飞行记分牌处理方法 | |
CN104657145B (zh) | 用于微处理器的重发停靠的系统和方法 | |
CN103634230B (zh) | 一种基于动态预测的网络驱动层数据包接收方法和系统 | |
CN103207776B (zh) | 一种gene乱序发射处理器内核 |
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 |