CN1507587A - 可避免写后读的危险的存储器指令的发出和执行 - Google Patents

可避免写后读的危险的存储器指令的发出和执行 Download PDF

Info

Publication number
CN1507587A
CN1507587A CNA018232337A CN01823233A CN1507587A CN 1507587 A CN1507587 A CN 1507587A CN A018232337 A CNA018232337 A CN A018232337A CN 01823233 A CN01823233 A CN 01823233A CN 1507587 A CN1507587 A CN 1507587A
Authority
CN
China
Prior art keywords
instruction
memory
storer
data
processor
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
Application number
CNA018232337A
Other languages
English (en)
Other versions
CN100385389C (zh
Inventor
G
G·比拉尔迪
P·C·帕特耐克
��ɵº�ķ
K·埃卡纳德汉姆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1507587A publication Critical patent/CN1507587A/zh
Application granted granted Critical
Publication of CN100385389C publication Critical patent/CN100385389C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Complex Calculations (AREA)

Abstract

一种用于发出及执行计算机系统中的存储器指令的方法和装置,以使发出至一高度流水线式存储器的请求数目最大化,以及避免在至存储器(10)的相应写入之前,从存储器(10)中读取数据。存储器划分为数个区域,每一区域与一栅栏计数器(18)相关联,该栅栏计数器在每次发出目标为该存储器区域的存储器指令时增加,并在每次有对该存储器区域的写入时减少。当发出一栅栏指令后,如果用于栅栏指令中所指定的存储器区域的计数器值超出一阈值,则不发出进一步的存储器指令(23)。当执行了足够数量的未完成的发出的指令后,该计数器值将减少到低于该阈值,然后可以发出进一步的指令。

Description

可避免写后读的危险的存储器指令的发出和执行
技术领域
本发明涉及一种用于在计算机系统中发出及执行指令的方法和装置。
背景技术
现今处理器的很大一部分复杂性可归因于试图掩饰存储器访问的等待时间。多线程、非顺序处理、预取存储器数据、预测执行皆为这种例子。技术发展趋势表明存储器速度无法赶上处理器速度。尽管现在的存储器设计提供了有限的流水线处理及层次结构,但本申请人于一共同未决申请中揭示一种在恒定带宽下具有线性等待时间函数的可伸缩式流水线层次结构。与本申请同时提交的共同未决申请、IBM公司文档编号YOR920010439US1、标题为“可伸缩式存储器”,其全部内容作为参考资料并入本申请。然而,现在的处理器无法利用此种不受限制的流水线结构,因为这些处理器倾向于记忆未完成的存储器请求。因为处理器仅具有有限的资源,这使存储器流水线的利用受到极大的限制。该些资源包含有限数量的缓冲器,该些缓冲器存储与一标记相关的指令的信息。以IBM公司的Power PC处理器为例,其至多能具有8至16个未完成的存储器操作,而其它竞争厂商的处理器受更大的限制。此项限制的存在,是因为处理器具有专用资源以记忆待处理的存储器请求,并于数据到达后指明数据的下一步处理。举例而言,当一针对已发出的存储器指令之响应从计算机系统的存储器返回时,该响应将只包含由存储器获取之数据及存储器标记。为执行该发出的指令,使用该标记以获取存储在处理器的缓冲器中的操作码及目标地址。另一限制为处理器中的寄存器数量有限,及处理器不能对任何不存在于寄存器中的数据进行操作。现今的处理器仅当在处理器的寄存器中存在操作数时才能执行,因此寄存器数量限制了可同时执行的指令数目。
发明内容
根据本发明的一方面,提供了一种处理器,该处理器能发出可以流水线方式处理的、不限数量的存储器请求。此一方面的实现是通过组织所有指令来处理来自存储器的数据,并以足够的信息来封装存储器请求,以便独立地处理返回的数据。该方面将处理器的指令发出部件及执行部件分开,且任一该部件维持极少量的状态信息,并以近似“无状态”的方式运行。该极少量状态信息包含一程序计数器及一些栅栏计数器(fence counter)。
本发明的另一方面是在相应的写至存储器之前,避免从存储器中读取数据,即避免已知的写后读之危险。此方面在处理器发出大量指令的时候尤其重要,其中所有发出的指令尚未执行,即存在大量尚未完成的写入至存储器的操作。在使用上文提及的共同未决申请中公开的线性存储器时可能发生上述大量指令,该共同未决申请及本申请皆转让给相同的受让人。
本发明通过维持一栅栏计数器或者说用于存储器中若干区域中的每一个区域的计数器,来防止写后读的危险,其中使用该计数器值来控制处理器发出进一步的指令。依据本发明,当发出一指定某一特定存储器区域的栅栏指令时,若该特定存储器区域的计数器值超过一阈值时,将不再发出进一步的指令。每一存储器区域的计数器值于每次发出一其目标位置位于该区域内的指令时增加;在每次执行一指令以写入该存储器区域时减少。该阈值通常设置为零。
附图说明
图1所示为根据本发明的可伸缩式处理器的示意图;
图2所示为当一相应的写入操作之前提交一读取操作时,所发生的写后读之危险的示意图;
图3所示为根据本发明的处理器中的发出单元及执行单元的算法;
图4所示为可与本发明之处理器一起使用的线性存储器系统的示意图;
图5所示为控制器中用以传递对请求的响应至处理器的逻辑的流程图;及
图6所示为一状态图,其中每一状态指出存储于一控制器di中的各缓冲器中的响应的数目。
具体实施方式
图1所示为可伸缩式处理器系统100的一般示意图。该系统使用先前提及的IBM公司文档编号YOR920010439中揭示的线性存储器16。为方便起见,本申请的发明人将该存储器扩展成具有用于读取请求的一端口3及用于写入请求的两端口4。此种作法纯粹用以匹配能在每一周期中传送两结果的线性存储器16。两个执行单元17独立耗用这些结果14,及独立地提交写入请求。此种组织确保该些线12上的请求不会相互干扰。
向上路径分割为三个并行的路径11-12,其中一路径11传送读取请求至存储器中,而其它两路径12传送写入请求至该存储器中。此种作法纯粹为方便起见,而不会以任何方式增加输入带宽。
读取请求传送两个目标地址x及y。该读取请求首先行进至较早位置以收集数据,并进一步在向上路径中向上行进到达第二位置,以收集第二部分数据。其结果在向下路径13行进,传送被请求的一对数据项。此种方式导致在该些路径上的等待时间的恒定增加,但不会以任何方式改变带宽要求。
指令格式
处理器将不具有寄存器,并对其所有数据使用一线性存储器层次结构-最低级表示寄存器。指令的一般形式为op(x,y.z),其中x、y、z为存储器位置的地址,且其语义为对来自位置x及y的数据执行操作(op)并将结果存储至位置z。对于一元操作,可省略第二操作数。一经常使用的一元指令为move(x,z)指令,该指令复制位置x的数据至位置z。
指令发出及执行
参见图1,处理器9包含发出指令50的单一发出单元19及两个执行单元17,当获得数据时上述任一执行单元都能执行任何操作。数个发出及执行单元能在单一硬件芯片上以硬件实现。一指令经历两个阶段,即发出阶段及执行阶段。在发出阶段中,一个双操作数取被提交至线性存储器10中。操作码及目的地信息被附加于请求上,并与数据一同返回。当存储器返回该双操作数数据时,执行阶段开始。每一执行单元接收操作数数据14、执行操作及提交写入请求至存储器10以存储结果。各指令以与其在程序中的排列次序相同的次序发出。因为除了这些指令所指定的外,存储器不会有任何其余的数据移动,程序得以充分控制存储器,并在需要数据时经由发出移动指令迫使数据更接近处理器,藉此显性地进行存储器管理。存储器的流水线性质便于在执行其它指令时,同时移动数据。典型地,当使用本发明时,程序设计者在处理器需要数据时,会使用移动指令迫使数据更接近该处理器。
写后读之危险
因为发出单元及执行单元并行执行,必须保证对一位置的写入操作的提交应发生在一相应的对该位置的读取操作被提交之前。参阅图2的说明。对于指令op(x,y,z)而言,在发出与执行该指令的时间间隔中,写入至z的请求被称为未完成的。如下文中说明的,可经由追踪未完成的至存储器的诸区域的写入,来防止写后读的危险。图2中的实线路径说明移动指令21如何执行。当该移动指令发出时,位置y被读取,并且数据流动至执行单元17。在该执行单元执行时,该结果被送至并存储在位置x。然而,发出单元并行地进行,并在发出上述指令之后发出其它指令。ADD指令22是一随后指令的例子,该指令使用位置x且其路径以虚线11a说明。若该ADD法指令在先前的储存至位置x发生之前发出,将会有危险。
栅栏计数器
处理器配置有一组有限数目的栅栏计数器。每一栅栏计数器与存储器的一区域相关。通过将这些区域的大小选择为2的乘方,则需要logN个栅栏计数器,这样,在实践上维持logN计数器并不是严重的限制。参考图3,当每次发出如op(x,y,z)的一指令时(步骤31),与包含z的范围相关的栅栏计数器值会增加(步骤36),并且将一请求送至存储器,以读取例如位置x及y中的数据。参考图3中的步骤37。然后,例如将获得的数据(数据1,数据2)传送至执行单元,如图3中的步骤38所示。当执行单元完成该操作(步骤33),亦即op(数据1,数据2,z),并提交一写入至位置z的请求(步骤33),相应的栅栏计数器值(图1中的18)会减少(步骤34)。因此,栅栏计数器包含未完成的至其相关范围中的位置的写入的数量。栅栏设置是通过程序(按释放一致性模型的方式),以在合适处插入一形式为“fence(存储器区域)”的特殊指令而显性地完成。参考图2中的步骤23。当发出单元32遇到一栅栏指令时,该发出单元等候(步骤35)直到相应的栅栏计数器值变为零。程序可利用此种机制,来防止读-写危险,并且可以通过以明智的方式选择栅栏操作的范围及位置而更具效率。典型地,计数器是硬件实现的。
极端的例子是在每个操作之后,继以该操作目标位置上的一栅栏指令。尽管这可以正确地工作,其程序执行却几近顺序的方式。程序能被组织为积累尽可能多的写入一区域中的指令,并随后在对该区域的任何位置进行访问前发出一栅栏指令。能开发编译技术以明智地选择用于栅栏操作的位置。
图4说明可伸缩式处理器系统100的一般示意图。该处理器系统使用线性存储器16。为方便起见,本发明人对存储器进行了扩展以具有用于读取请求的一端口3及用于写入请求的两端口4。此种作法纯粹用以匹配能在每一周期中传送两结果的线性存储器16。两执行单元17独立耗用这些结果14及提交写入请求。此种组织确保该些线12上的诸请求不会相互干扰。
读取请求携有两个目标地址x及y。该读取请求首先行进至较早位置,收集数据并进一步在向上路径中向上行进到达第二位置以收集第二部分数据。结果在向下路径13行进,传送该请求的一对数据项。
建议的存储器系统10的结构如图4所示。为方便说明起见,系统显示为具有以一维排列的构建块序列。该些块以位于处理器的L1开始编号,并随着远离该处理器而增加编号。每一第i个构建块Li具有单位存储器,以mi表示,及两个控制器,以ui及di表示。所有的控制器ui经由单一链路5相连而形成“向上路径”,其传递由处理器发出的请求至存储器单元。控制器di经由一对链路7相连而形成“返回路径”,并传递来自存储器单元的响应至处理器。此设计方式能在向上路径上支持每一单位时间中来自处理器的一请求,但要求处理器能沿着返回路径在每一单位时间中接收多至两个响应。因此,此种设计要求输出带宽为输入带宽的两倍。此外,显示了单一处理器9也连接至此存储器系统。如一相关申请中描述的处理器能与本发明之存储器系统一同使用,该相关申请是本申请的受让人与本申请同时提交的。存储器请求指定一目标存储器单元地址、操作(读取/写入)以及数据(如果为写入操作时)。就尺寸为n的存储器而言,目标地址为介于1至n的任一整数。而任一大于n的数字能用来模拟一无操作(亦即处理器不提交任何真正的请求)。
请求及响应也携有存储器不解释的附加信息。举例而言,如处理器执行op(x,z)形式的指令,其中x及z为存储器位置的地址,则其语义为在来自存储器位置x的数据上执行操作(op),及将结果存储至存储器位置z。对于此指令,提交的该存储器请求的形式为[read,x,no-data,<op,z>]。而对此请求的响应的形式为[read,x,data,<op,z>],其中“data”为从位置x所取得的数据。此响应于返回路径中通过一系列的第二控制器而传送到处理器。在所显示的例子中,当处理器接收到该响应时,在数据上执行操作,以取得一结果,比如说w。而后,另一请求由处理器通过一系列位于向上路径的第一控制器传送,以将结果w存储在存储器位置z。该请求的格式可以象[write,z,w,no-info],其意味着在位置z存储数值w。
每一具有目标地址i之请求于向上路径中行进,且其副本到达每一层级的存储器单元。存储器单元mi根据操作来读取或存储数据,并将数据传送至控制器di。写入操作于此处终止,不产生任何响应,而读取操作使该请求转换成一响应,该响应沿着返回路径行进直至到达处理器。若我们假设在通信链路上行进的单位时间及读取存储器的单位时间,则对于目标地址i之读取请求于行进期间并无阻塞的情况下花费2i+1单位时间。控制器设计成处理阻塞,并确保请求或响应流符合前节所述的需求。参考图5,用于ui、mi、及di的详细逻辑于下文中说明:
每一周期中的操作
见图4
●对于ui所接收的每一请求而言,一副本传送至mi,且另一副本被传送至ui+1。于顶点时(i为n时)简单地舍弃该第二副本。
●对于一读取操作把数据从存储器复制至请求中、或对于一写入操作把数据从请求复制至存储器中之后,mi总是传送请求至di
●如图4所示,di具有三个以FIFO(先进先出)队列组织的内部缓冲器6。
每一周期开始时,di将任何现存于始自di+1的两个链路上的对请求的响应传送至其内部缓冲器中。而后,使用下列算法(见图5的流程图)以将响应放置在至di-1的两个外出链路上:
1.如果来自mi的请求是对位置i的读取,则将该请求转换为一响应并放置在于外出链路上。此外,来自di的内部缓冲器的一个响应(如果有的话)被移除,并放置在外出链路上(参见图5中的51)。
2.如果来自mi的请求是写入至位置i(52),或请求之目标为一更高位置,则多至两个来自di的诸内部缓冲器的响应(如果有的话)被移除,并放置在外出链路上(54)。
3.如果来自mi的请求是对一更低位置的(55),则来自di的诸内部缓冲器的一个响应(如果有的话)被移除,并置放在外出链路上(56)。
模型的特性
现在说明伸缩性所需的两特性:每一单元中的恒定缓冲器大小,及线性的存取等待时间:
●任何di的内部缓冲器大小永远不会超过3。图6为用于xi的可能转换,其中xi为每一周期后di中的已填充的缓冲器数目。状态xi=3的不变性表明在该状态下,最多一个响应可以通过进入的链路而进入,而这确保了xi永远不会超过3。为显示此不变性,我们考查两种可能的向状态xi=3的转换:考虑向状态xi=3的第一种转换。该转换发生在这样的时候,此时初始xi=2,及在来自di+1之链路上的两进入的弧线(参见图4中的7)都携有响应,且对mi之请求是对于位置I的或更低。此方式确保在下一周期中,在来自di+1的进入的弧线上,至多具有一响应。这是因为mi+1将在下一周期中处理mi在此周期中处理的相同响应的副本,因而di+1执行上述算法之第三项,只输出一个响应(参见图5中的55及56)。现在考虑向状态xi=3的第二种转换。此转换发生于这样的时候,此时初始xi=3,及存在来自di+1的一个进入的请求,且针对mi之请求是对于位置i的或更低。此方式再次确保在下一周期中,在来自于di+1的进入的弧线上至多具有一响应。
●对位置i的读取请求将于4i+1个周期内返回一相应响应至处理器。对读取请求的响应在i+1个周期后到达di,因为其路径长度为i+1且于这些路径上并无延迟。当控制器di执行算法之第一项时,立即将其放置在外出的弧线上。依据该算法,所有缓冲器皆以FIFO顺序清空,并在每一周期中至少移除来自一缓冲器的一响应。因而,来自di的响应在其到达处理器之前最大能经历3i单位的延迟。因此于向上路径中传送一请求及于返回路径中传送相应响应至处理器的总延迟至多为4i+1。
我们观察到本发明设计能维持每一位置上的存储器操作次序,而未指定不同位置上完成操作的次序。此推荐的存储器系统能以并入存储器芯片中的标准存储器逻辑加以执行。

Claims (10)

1.一种处理计算机系统中的指令的方法,该方法包括:
确定从该处理器发出的、目标为一指定存储器区域的未完成的写入指令的数目是否超出一阈值;以及
发出一指定该存储器区域的栅栏指令,这样,直到目标为该指定区域的未完成写入指令的数目低于该阈值时,才由该处理器发出进一步指令。
2.一种处理计算机系统中的指令的装置,该装置包括:
一发出单元,用于确定从该处理器发出的未完成的写入指令的数目是否超过一阈值,并且用于发出指定存储器区域的栅栏指令,这样,直到至该指定区域的写入指令的数目低于该阈值时,才由该处理器发出进一步指令。
3.一种处理指令的系统,该系统包括:
一存储器,用于存储数据;
一发出单元,用于响应若干指令中的每一指令,从该存储器中获取操作数数据,且传送该每一指令的操作码及该每一指令的目标位置,而不将其存储于该存储器或该发出单元中;以及
一执行单元,用于根据该操作码对该数据进行操作,以执行该若干指令中的每一指令,并且用于将对该数据的该操作结果存储至该存储器中由该目标位置指定的一位置,其中该目标位置、该操作码及该操作数数据是由该执行单元接收的。
4.一种处理计算机系统中指令的方法,该方法包括:
响应于若干指令中的每一指令:
从一存储器中获取一操作数数据,并且传送该操作数数据、一操作码及一目标位置至与该系统相关的一执行单元中;以及
根据该操作码对该操作数数据进行操作,以执行每一指令,并且将对该操作数数据的该操作的结果存储至该存储器中由该目标位置指定的一位置。
5.一种处理计算机系统中的存储器指令的方法,该方法包括:
响应于若干存储器指令中的每一指令:
从一存储器中获取一操作数数据,并且传送该操作数数据、一操作码及一目标位置至与该系统相关的一执行单元中,并且根据该操作码对该操作数数据进行操作,以执每一指令,并且将对该操作数数据的该操作的结果存储至该存储器中由该目标位置指定的一位置;以及
发出指定一存储器区域的栅栏指令,这样,直到至该指定区域的写入指令数目低于该阈值时,才由处理器发出进一步指令。
6.一种处理指令的系统,该系统包括:
一存储器,用于存储数据;
一发出单元,用于响应若干存储器指令中的每一存储器指令,从该存储器中获取操作数数据、该每一存储器指令的一操作码及该每一存储器指令的一目标位置;
一执行单元,用于根据该操作码对该数据进行操作,以执行该若干存储器指令中的每一指令,并且将对该数据的该操作的结果存储至该存储器中由该目标位置指定的一位置,其中该目标位置、该操作码及该操作数数据由该执行单元通过该存储器从该发出单元接收;以及
该发出单元还发出用于指定存储器区域的栅栏指令,这样,对于每一该指定区域,直到至该每一区域的未完成写入指令的数目低于一相应阈值时,才发出进一步指令。
7.一种处理计算机系统中指令的方法,该方法包括:
当该系统的一处理器发出一存储器指令时,增加与一存储器区域相关的一计数器值,该存储器区域包含该发出的指令的一目标位置所指定的一存储器位置,每一存储器指令用于读取一存储器中的数据或写入数据至一存储器中;
当该系统的一处理器执行一存储器指令时,减少与一存储器区域相关的计数器值,该存储器区域包含该执行的指令的一目标位置所指定的一存储器位置;以及
发出一指定存储器区域的栅栏指令,这样,直到与该指定区域相关的该计数器值低于一阈值时才发出进一步指令。
8.一种处理计算机系统中指令的装置,该装置包括:
当该系统的一处理器发出一存储器指令时,增加与一存储器区域相关的一计数器值,该存储器区域包含该发出的指令的一目标位置所指定的一存储器位置,每一存储器指令用于读取一存储器中的数据或写入数据至一存储器中;
当该系统的一处理器执行一存储器指令时,减少与一存储器区域相关的一计数器值,该存储器区域包含该执行的指令的一目标位置所指定的一存储器位置;以及
发出一栅栏指令,这样,直到与该指定区域相关的该计数器值低于一阈值时才发出进一步指令。
9.一种处理计算机系统中指令的方法,该方法包括:
当该系统的一处理器发出一指令时,增加与一存储器区域相关的一计数器值,该存储器区域包含该发出的指令的一目标位置所指定的一存储器位置,每一指令用于读取一存储器中的数据或写入数据至一存储器中;
当该系统的一处理器执行一存储器指令时,减少与一存储器区域相关的一计数器值,该存储器区域包含该执行指令的一目标位置所指定的一存储器位置,其中每一发出的指令包含由该存储器取得的数据、一操作码及目标位置;以及
发出一指定存储器区域的栅栏指令,其中直到与该指定区域相关的该计数器值低于一阈值时才发出进一步指令。
10.一种处理计算机系统中指令的装置,该装置包括:
当该系统的一处理器发出一指令时,增加与一存储器区域相关的一计数器值,该存储器区域包含该发出指令的一目标位置所指定的一存储器位置,每一指令用于读取一存储器中的数据或写入数据至一存储器中;
当该系统的一处理器执行一指令时,减少与一存储器区域相关的一计数器值,该存储器区域包含该执行指令的一目标位置所指定的一存储器位置,其中每一发出的指令包含由该存储器取得的数据、一操作码及目标位置,因而每一发出的指令的执行可以独立于不包括在该每一发出的指令中的任何信息;以及
发出指定一存储器区域的栅栏指令,其中直到与该指定区域相关的该计数器值低于一阈值时才发出进一步指令。
CNB018232337A 2001-05-11 2001-12-21 可避免写后读的危险的存储器指令的发出和执行 Expired - Fee Related CN100385389C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/854,243 2001-05-11
US09/854,243 US6978360B2 (en) 2001-05-11 2001-05-11 Scalable processor

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CNB2006100825029A Division CN100489770C (zh) 2001-05-11 2001-12-21 处理指令的系统和方法

Publications (2)

Publication Number Publication Date
CN1507587A true CN1507587A (zh) 2004-06-23
CN100385389C CN100385389C (zh) 2008-04-30

Family

ID=25318133

Family Applications (2)

Application Number Title Priority Date Filing Date
CNB018232337A Expired - Fee Related CN100385389C (zh) 2001-05-11 2001-12-21 可避免写后读的危险的存储器指令的发出和执行
CNB2006100825029A Expired - Fee Related CN100489770C (zh) 2001-05-11 2001-12-21 处理指令的系统和方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CNB2006100825029A Expired - Fee Related CN100489770C (zh) 2001-05-11 2001-12-21 处理指令的系统和方法

Country Status (10)

Country Link
US (1) US6978360B2 (zh)
EP (1) EP1388053A4 (zh)
JP (1) JP3752224B2 (zh)
CN (2) CN100385389C (zh)
CA (1) CA2447425C (zh)
CZ (1) CZ20032948A3 (zh)
HU (1) HUP0400049A3 (zh)
PL (1) PL364643A1 (zh)
TW (1) TW567435B (zh)
WO (1) WO2002093362A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101853150A (zh) * 2009-05-29 2010-10-06 威盛电子股份有限公司 非循序执行的微处理器及其操作方法

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4434534B2 (ja) * 2001-09-27 2010-03-17 株式会社東芝 プロセッサ・システム
US7730282B2 (en) 2004-08-11 2010-06-01 International Business Machines Corporation Method and apparatus for avoiding data dependency hazards in a microprocessor pipeline architecture using a multi-bit age vector
US7603544B2 (en) * 2004-12-23 2009-10-13 Intel Corporation Dynamic allocation of a buffer across multiple clients in multi-threaded processor without performing a complete flush of data associated with allocation
US8271765B2 (en) * 2009-04-08 2012-09-18 International Business Machines Corporation Managing instructions for more efficient load/store unit usage
CN102789439B (zh) * 2012-06-16 2016-02-10 北京忆恒创源科技有限公司 控制数据传输过程中的中断的方法与存储设备
US9026720B2 (en) * 2013-02-07 2015-05-05 Apple Inc. Non-volatile memory monitoring
US10489158B2 (en) 2014-09-26 2019-11-26 Intel Corporation Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores
GB2549239A (en) * 2014-11-13 2017-10-18 Advanced Risc Mach Ltd Context sensitive barriers in data processing
US10095637B2 (en) * 2016-09-15 2018-10-09 Advanced Micro Devices, Inc. Speculative retirement of post-lock instructions
US11151042B2 (en) 2016-09-27 2021-10-19 Integrated Silicon Solution, (Cayman) Inc. Error cache segmentation for power reduction
US11386010B2 (en) 2016-09-27 2022-07-12 Integrated Silicon Solution, (Cayman) Inc. Circuit engine for managing memory meta-stability
US11048633B2 (en) * 2016-09-27 2021-06-29 Spin Memory, Inc. Determining an inactive memory bank during an idle memory cycle to prevent error cache overflow
US11119936B2 (en) 2016-09-27 2021-09-14 Spin Memory, Inc. Error cache system with coarse and fine segments for power optimization
US11119910B2 (en) 2016-09-27 2021-09-14 Spin Memory, Inc. Heuristics for selecting subsegments for entry in and entry out operations in an error cache system with coarse and fine grain segments
US11074075B2 (en) * 2017-02-24 2021-07-27 Advanced Micro Devices, Inc. Wait instruction for preventing execution of one or more instructions until a load counter or store counter reaches a specified value
US11132145B2 (en) * 2018-03-14 2021-09-28 Apple Inc. Techniques for reducing write amplification on solid state storage devices (SSDs)
CN110209597B (zh) 2019-05-24 2021-10-15 北京百度网讯科技有限公司 处理访问请求的方法、装置、设备和存储介质
WO2021072370A1 (en) * 2019-10-10 2021-04-15 Spin Memory, Inc. Error cache system with coarse and fine segments for power optimization
US11720360B2 (en) * 2020-09-11 2023-08-08 Apple Inc. DSB operation with excluded region
US11868287B2 (en) * 2020-12-17 2024-01-09 Micron Technology, Inc. Just-in-time (JIT) scheduler for memory subsystems
WO2023235003A1 (en) * 2022-06-02 2023-12-07 Micron Technology, Inc. Command fencing for memory-based communication queues

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4646237A (en) * 1983-12-05 1987-02-24 Ncr Corporation Data handling system for handling data transfers between a cache memory and a main memory
JPH0776917B2 (ja) * 1984-12-29 1995-08-16 ソニー株式会社 マイクロコンピユ−タ
US6006325A (en) * 1996-12-19 1999-12-21 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for instruction and data serialization in a computer processor
US6092158A (en) * 1997-06-13 2000-07-18 Intel Corporation Method and apparatus for arbitrating between command streams
US6108737A (en) 1997-10-24 2000-08-22 Compaq Computer Corporation Method and apparatus for reducing latency of inter-reference ordering in a multiprocessor system
US6163821A (en) * 1998-12-18 2000-12-19 Compaq Computer Corporation Method and apparatus for balancing load vs. store access to a primary data cache
US6647489B1 (en) * 2000-06-08 2003-11-11 Ip-First, Llc Compare branch instruction pairing within a single integer pipeline
US6671747B1 (en) * 2000-08-03 2003-12-30 Apple Computer, Inc. System, apparatus, method, and computer program for execution-order preserving uncached write combine operation

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101853150A (zh) * 2009-05-29 2010-10-06 威盛电子股份有限公司 非循序执行的微处理器及其操作方法
CN101853150B (zh) * 2009-05-29 2013-05-22 威盛电子股份有限公司 非循序执行的微处理器及其操作方法

Also Published As

Publication number Publication date
JP2004527054A (ja) 2004-09-02
HUP0400049A3 (en) 2004-07-28
US20020169947A1 (en) 2002-11-14
EP1388053A1 (en) 2004-02-11
US6978360B2 (en) 2005-12-20
PL364643A1 (en) 2004-12-13
CN100489770C (zh) 2009-05-20
HUP0400049A2 (hu) 2004-04-28
CZ20032948A3 (cs) 2004-01-14
JP3752224B2 (ja) 2006-03-08
CN1855033A (zh) 2006-11-01
CA2447425C (en) 2008-09-09
WO2002093362A1 (en) 2002-11-21
EP1388053A4 (en) 2008-04-16
TW567435B (en) 2003-12-21
CN100385389C (zh) 2008-04-30
CA2447425A1 (en) 2002-11-21

Similar Documents

Publication Publication Date Title
CN100385389C (zh) 可避免写后读的危险的存储器指令的发出和执行
US8516280B2 (en) Parallel processing computer systems with reduced power consumption and methods for providing the same
KR100422491B1 (ko) 내장형 프로세서 복합체, 네트워크 프로세싱 시스템 및인스트럭션 실행 제어 방법
CN1149489C (zh) 提供流水线存储器控制器的设备
CN1238793C (zh) 分布式存储器控制和带宽优化
CN101430652B (zh) 片内网络以及片内网络软件流水线操作方法
CN101320360B (zh) 用于并行集成电路结构的消息排队系统和相关操作方法
CN112740190A (zh) 网关上的主机代理
US8972699B2 (en) Multicore interface with dynamic task management capability and task loading and offloading method thereof
CN1161689C (zh) 在超标量处理器中处理装入指令的方法和电路
US20070174560A1 (en) Architectures for self-contained, mobile memory programming
CN100414517C (zh) 异构体系结构中的覆盖生成、管理的方法和设备
US7107399B2 (en) Scalable memory
US20220197533A1 (en) Moving Data in a Memory and Command for Memory Control
CN112639738A (zh) 通过网关的数据
CN101290591B (zh) 一种嵌入式操作系统中切换任务的方法和单元
CN101290590A (zh) 一种嵌入式操作系统中切换任务的方法和单元
JP7406539B2 (ja) ストリーミングエンジン
CN202033745U (zh) 基于星型互联架构的片上异构多核系统
Huang et al. SERICO: Scheduling Real-Time I/O Requests in Computational Storage Drives
JP3182279B2 (ja) データ転送方法
Wang et al. RTL-IO: An Extension of RTLinux I/O

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
C19 Lapse of patent right due to non-payment of the annual fee
CF01 Termination of patent right due to non-payment of annual fee