CN100559342C - 重新排序装置及方法 - Google Patents

重新排序装置及方法 Download PDF

Info

Publication number
CN100559342C
CN100559342C CNB2006101015067A CN200610101506A CN100559342C CN 100559342 C CN100559342 C CN 100559342C CN B2006101015067 A CNB2006101015067 A CN B2006101015067A CN 200610101506 A CN200610101506 A CN 200610101506A CN 100559342 C CN100559342 C CN 100559342C
Authority
CN
China
Prior art keywords
order
cis
memory location
input item
row
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.)
Expired - Fee Related
Application number
CNB2006101015067A
Other languages
English (en)
Other versions
CN101030133A (zh
Inventor
高桥卓尔
藏本昌宏
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of CN101030133A publication Critical patent/CN101030133A/zh
Application granted granted Critical
Publication of CN100559342C publication Critical patent/CN100559342C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/3802Instruction 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/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

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)
  • Complex Calculations (AREA)

Abstract

本发明提供一种重新排序装置。其中存储器装置存储多个待处理的输入项。矩阵信息的行号对应于存储器装置中的存储位置,而列号对应于输入项顺序中的顺位,并且对应于存储位置以及存储于此存储位置的输入项的顺位的每个矩阵信息元素都具有预定值。进行第一矢量信息和矩阵信息的每列之间的运算,并产生第二矢量信息,所述第一矢量信息指示可处理输入项的存储位置,所述第二矢量信息指示可处理输入项的顺位。然后,从第二矢量信息指示的可处理输入项的顺位中选择一个待处理的顺位,获得对应于所选择顺位的列中具有预定值的元素,并处理对应于该元素的存储位置中的输入项。

Description

重新排序装置及方法
技术领域
本发明涉及一种重新排序装置,该重新排序装置改变多个处理对象的处理顺序,该处理对象为信息处理装置中的指令、包收发装置中的包等。
背景技术
在由信息处理装置进行的指令处理过程中,可以进行重新排序控制,该重新排序控制以就绪指令先行发出的顺序发出指令,而不是以指令到达顺序发出指令。在此情况下,如图1所示,指令被从到达顺序重新排序为其中标为可发出(issuable)的指令在前的顺序。
在这种方式中,多个指令应该同时保持,但在其它先期到达指令不可发出时发出一个可发出的指令,可降低从到达到发出的平均等待时间(latency),因此缩短总执行时间。
如上所述的重新排序控制,通常实施于微处理器、磁盘设备、及磁带设备等中以优化指令处理(例如,参见以下专利文献1到3)。
专利文献1:日本公开专利申请第08-110901号
专利文献2:日本公开专利申请第2000-048549号
专利文献3:日本公开专利申请第2002-304823号
但是,在传统重新排序控制中,需进行一个复杂的操作来检索指令,即当指令以到达顺序排列时,检索可发出的指令,因此需要一段处理时间。但是,在多个指令同时就绪时,为了进一步缩短指令执行时间就需要快速、正确地决定发出哪个指令。
发明内容
本发明的目的在于快速准确地从多个处理对象中检索可被处理的处理对象(如信息处理装置中的指令),由此减少对处理对象进行重新排序所需的时间。
根据本发明,重新排序装置包括存储器装置、矩阵装置、矢量装置、以及控制装置。该重新排序装置保持多个输入项作为处理对象,并且将所述输入项的处理顺序从第一顺序改变为第二顺序。
该存储器装置在不同的存储位置分别存储多个待处理的输入项。该矩阵装置保持矩阵信息。在该矩阵信息中,存储器装置中的存储位置对应于行号而第一顺序中的顺位对应于列号。另外,在该矩阵信息中,与所述存储位置中的一个存储位置以及存储于此存储位置的输入项在第一顺序内的顺位相对应的元素具有预定值。该矢量装置保持第一矢量信息,所述第一矢量信息指示该存储器装置的存储位置中的一个或多个可处理输入项的存储位置。
该控制装置首先进行第一矢量信息与该矩阵信息的各列之间的逻辑运算。然后,该控制装置根据各列的运算结果产生第二矢量信息,所述第二矢量信息指示一个或多个可处理输入项在第一顺序内的顺位。接着,该控制装置从由所述第二矢量信息指示的一个或多个可处理输入项在第一顺序内的顺位中选择待处理的顺位,并获得与所选择的在第一顺序内的顺位相对应的列中具有所述预定值的元素。最后,该控制装置处理对应于所获得的元素的存储位置中的输入项,由此实现根据第二顺序进行处理。
根据本发明,一种重新排序方法,使计算机保持多个输入项作为处理对象并将所述多个输入项的处理顺序从第一顺序改变为第二顺序,其中该重新排序方法包括以下步骤:使该计算机在存储器装置的不同存储位置分别存储多个待处理输入项;使该计算机保持矩阵信息,在该矩阵信息中,该存储器装置中的存储位置对应于行号而第一顺序中的顺位对应于列号,并且与所述存储位置中的一个存储位置以及存储于该存储位置的输入项在第一顺序中的顺位相对应的元素具有预定值;使该计算机保持第一矢量信息,所述第一矢量信息指示该存储器装置的存储位置中的一个或多个可处理输入项的存储位置;使该计算机进行所述第一矢量信息与该矩阵信息的各列之间的逻辑运算,并根据各列的运算结果产生第二矢量信息,其中所述第二矢量信息指示一个或多个可处理输入项在第一顺序中的顺位;使该计算机从由所述第二矢量信息指示的一个或多个输入项在第一顺序中的顺位中,选择待处理的在第一顺序中的顺位;使该计算机获得与所选择的在第一顺序中的顺位相对应的列中具有所述预定值的元素;以及使该计算机处理与所获得元素相对应的存储位置中的输入项,由此实现根据第二顺序进行处理。
附图说明
图1为示出现有重新排序控制操作的示意图;
图2为本发明重新排序装置的原理图;
图3为示出第一位矩阵的示意图;
图4为示出第二位矩阵的示意图;
图5为示出第三位矩阵的示意图;
图6为示出第四位矩阵的示意图;
图7为示出第五位矩阵的示意图;
图8为示出第六位矩阵的示意图;
图9为示出位矩阵的初始值的示意图;
图10为微处理器的框图;
图11A为重新排序电路的框图(1);
图11B为该重新排序电路的框图(2);
图12为通信大规模集成电路(LSI)的框图;以及
图13为并行计算机的框图。
具体实施方式
以下参照附图详细说明本发明的优选实施例。
图2为本发明重新排序装置的原理图。图2中的重新排序装置包括存储器装置101、矩阵装置102、矢量装置103和控制装置104。重新排序装置保持多个输入项作为处理对象,并且将输入项的处理顺序由第一顺序改变到第二顺序。
存储器装置101在不同的存储位置分别存储多个待处理的输入项。矩阵装置102保持矩阵信息。在矩阵信息中,行号对应于存储器装置101中的存储位置,而列号对应于第一顺序中的顺位。另外,在矩阵信息中,与存储位置以及存储于此存储位置的各输入项的第一顺序内的顺位相对应的每个元素都有预定值。矢量装置103保持第一矢量信息,该第一矢量信息指示了一个或多个可处理输入项在存储器装置101内的存储位置中的存储位置。
控制装置104首先进行第一矢量信息和矩阵信息的各列之间的运算。然后,根据各列的运算结果,控制装置104产生第二矢量信息,该第二矢量信息指示一个或多个可处理输入项的第一顺序内的顺位。接着,控制装置104从由第二矢量信息指示的一个或多个输入项的第一顺序内的顺位中选择待处理顺位,并获得在与第一顺序内的所选择顺位相对应的列中具有预定值的元素。然后,控制装置104处理对应于所获得的元素的存储位置中的输入项,由此实现根据第二顺序的处理过程。
第一矢量信息和矩阵信息的各列之间的运算在第一矢量信息的所有元素与各列的所有元素之间并行进行,并将各列的运算结果都集成到第二矢量信息中。
如果第二矢量包括指示可处理输入项在第一顺序内的顺位的多个元素,则根据预定策略选择所述元素指示的第一顺序内的多个顺位之一,并根据与第一顺序内的所选择顺位相对应的矩阵信息的列获得具有预定值的元素。然后,获得对应于所述具有预定值的元素的存储位置,并处理存储于存储器装置101内的所获得的存储位置的输入项。
存储器装置101对应于例如以下说明的图3中的存储区201。矩阵装置102中的矩阵信息对应于例如位矩阵(bit matrix)203。矢量装置103的第一矢量信息对应于例如以下说明的图5中的位矢量205。控制装置104对应于例如以下说明的图11A和图11B中的重新排序电路或图13中的处理元素1301-1到1301-n。
根据本发明,仅通过指示可处理输入项存储位置的矢量信息与矩阵信息的各列之间的运算,即可简单快速地检索可处理输入项的顺序中的顺位。因此,重新排序多个处理对象所需的时间减少了。
在本实施例的重新排序控制操作中,通过使用位矩阵可快速准确地检索可发出的指令。重新排序控制操作概述如下:
(1)设置保存位矩阵的存储器装置。在此位矩阵中,行号对应于用以存储指令的存储区中的多个存储位置(地址),而列号指示指令到达顺序。
另外,所有待发出指令都分别存储于存储区的不同存储位置。指示指令的相应存储位置的位串依指令到达顺序排列,并存储于位矩阵的多个列中。在各位串中,逻辑值“1”或“0”作为预定值存储在与用以存储所述顺序的指令的存储位置相对应的位中。其它的逻辑值(“0”或“1”)存储在与其它存储位置相对应的位中。
此外,指示待存储指令的相应存储位置的位串依任意顺序排列于上述位串之后,并存储于位矩阵的余下的多个列中。在各位串中,逻辑值“1”或“0”作为预定值存储在与待存储指令的存储位置相对应的位中。其它的逻辑值(“0”或“1”)存储在与其它存储位置相对应的位中。因此,相当于存储区内所有存储位置的多个位串依次排列并保存在位矩阵中。
(2)所有待发出指令中的某一指令在到达顺序内的顺位对应于指示该指令存储位置的位串在位矩阵中的列号。利用该位矩阵确定待发出指令中的所有可发出指令在顺序中的顺位。然后,获得可发出指令中到达顺序最早的指令在顺序中的顺位。
(3)在位矩阵中,获得处于上述(2)中所获得的顺序中顺位的位串所指示的存储位置。该存储位置对应于所有可发出指令中到达顺序最早的指令的存储位置。
(4)发出位于上述(3)中所获得的存储位置的指令。然后,轮换(rotate andshift)指示已发出指令的存储位置的位串以及该位串列号之后的所有位串,使指示已发出指令的存储位置的位串排到最后一位。
(5)在上述(4)操作之后,指示余下的待发出指令的存储位置的多个位串以从位矩阵的首列开始的顺序中的连续顺位、按到达顺序排列。指示待存储指令的所有存储位置的多个位串排列在上述多个位串之后的顺序中的顺位。所以,上述(1)中的状态得以保持。
(6)新到达的指令存储于位矩阵中指示待存储指令存储位置的多个位串中、顺序最早的位串所指示的存储位置中。因此,上述(5)顺序中的连续顺位得以保持,同时上述(1)中的状态得以保持。
(7)为了快速执行上述(2)中的操作,可进行其中多个存储位置相互重叠的表现(expression)(如存储位置的位图),作为“指示存储位置的位串”的表现。
(8)为了快速执行上述(6)中的操作,保存指示位矩阵中多个位串之中顺序最早的位串在顺序中的顺位的指针,所述多个位串指示待存储指令的存储位置。当一个指令保存在存储区中时,该指针指示在顺序中的下一顺位,当一个指令由存储区发出时,该指针指示在顺序中的前一顺位。依此方式,该指针的值增加和减少。每当该指针的值升高或降低时,将下一到达指令存储在处于该指针所指示的顺序中顺位的位串所指示的存储位置。
接下来,参照图3到图9说明重新排序控制的实例,该重新排序控制在具有8个存储位置的存储区中注册指令,并依次发出可发出指令中的指令。在此情况下,将到达顺序中的顺位1到8分别分配给各存储位置,并且每当发出指令时改变所述顺序中的顺位。因此,使用8行8列的位矩阵。
图3显示了4个指令存储在存储区201时如上述的位矩阵203。位矩阵203的行号1到8分别对应于存储区201中#1到#8存储位置。列号1到8分别对应于指令的到达顺序1到8。
在位串的每列中,逻辑值“1”位表示等待发出指令(已注册指令)的存储位置或者等待存储指令的存储位置。逻辑值“0”位表示其它存储位置。此例中,到达顺序列1到4保持4个位串,其分别指示存储待发出指令的存储位置#6、#3、#5和#1。到达顺序列5到8保持4个位串,其分别指示待存储指令的存储位置#8、#7、#4和#2。
下一个存储位置的位矢量202对应于以上(8)中所述的指针。位矢量202中的逻辑值“1”位指示位矩阵203中的一列,该列保持指示下一到达指令的存储位置的位串。本实例中,到达顺序列5保持的位串指示的存储位置#8为下一存储位置。
用于到达顺序检索的位矢量204表示可发出指令的检索结果。位矢量204中的逻辑值“1”位指示位矩阵203中的一列,该列保持指示可发出指令的存储位置的位串。本实例中,尚无可发出指令,因此位矢量204的所有位都为逻辑值“0”。
在这种状态下,当一新指令到达时,检索到由位矢量202中的逻辑值“1”位所指示的到达顺序列5,从而获得对应于逻辑值“1”位的存储位置#8作为下一存储位置。此时,计算位矢量202和位矩阵203的每行位串的逻辑积(与(AND)运算)。
在此情况下,该与(AND)运算结果中的逻辑值“1”仅出现在存储位置#8的行。在其它存储位置的行中该与(AND)运算结果都为逻辑值“0”。存储位置#8由此作为检索结果而获得,所以,如图4所示,到达的指令存储于存储区201的存储位置#8。此时,位矢量202(逻辑值“1”位)的指针向右移动一位(方向朝着后到达顺序),因而到达顺序6的位值成为逻辑值“1”。
然后,当存储在存储区201的指令中存在可在发出指令时,检索该指令的到达顺序。例如,如果存储位置#1和#3中的指令处于可发出状态,则如图5所示,产生位矢量205,其中可发出指令的存储位置为逻辑值“1”,并且进行位矢量205和位矩阵203的每列位串的与(AND)运算。接着,在指示各列的该与(AND)运算结果的位矩阵中,计算各列的逻辑和(或运算(OR))并把结果保存在位矢量204中。
此时,在位矢量205的所有元素与每列位串的所有元素之间并行进行与(AND)运算。所以,可快速检索到可发出指令。
在此情况下,在到达顺序列2和4中,与(AND)运算结果包括逻辑值“1”,所以,或(OR)运算的结果为逻辑值“1”。由此,作为可发出指令的检索结果,获得到达顺序2和4。但是,在此阶段待发指令的存储位置仍未指定。
接着,因为到达顺序2为两个已获得的到达顺序中较早的,所以检索到达顺序2的指令存储位置。此时,如图6所示,将位矢量中的到达顺序4变为逻辑值“0”,并进行位矢量204与位矩阵203的每列位串的与(AND)运算,在位矢量204中只有到达顺序2的位值为逻辑值“1”。
在此情况下,逻辑值“1”仅包括在存储位置#3行中的该与(AND)运算结果中。其它存储位置行中的该与运算(AND)结果都为逻辑值“0”。存储位置#3由此作为检索结果而获得,所以,发出存储于存储区201的存储位置#3的指令。
当该指令发出后,轮换到达顺序列2至8使到达顺序列2位于位矩阵203的最后,如图7所示,同时删除存储位置3#中的指令。然后,位矢量202的指针向左移动1位,如图8所示,以使下一存储位置的到达顺序提前。
位矩阵203的初始值使用例如图9所示的值。此时,位矢量202的初始值指示到达顺序1,而且指令将会依到达顺序存储于存储位置#1到#8。选择位矩阵203的初始值,以使逻辑值“1”的位位置在列与列之间、行与行之间不会重复,但矩阵203的初始值并非仅限于图9所示值。
根据采用上述位矩阵的重新排序控制,可达到以下效果:
(a)只需通过在位矢量和位矩阵各列中的位串之间进行与(AND)运算即可快速准确地检索到可发出指令的到达顺序,在该位矢量中可发出指令的存储位置为逻辑值“1”。在上述实例中,可发出与其中与(AND)运算结果包括逻辑值“1”的列相对应的到达顺序的指令。
(b)即使有多个可发出指令时,只需通过产生相似位矢量,即可适用上述(a)中的同样操作,在该相似位矢量中,可发出指令的存储位置为逻辑值“1”。
(c)在检索待发出指令时,只需通过在位矢量和位矩阵各行中的位串之间进行与(AND)运算即可容易地获得待发出指令的存储位置,在该位矢量中待发出指令的到达顺序的位值为逻辑值“1”。
(d)即使当有多个可发指令时,只需通过根据到达顺序选择待发指令,即可适用上述(c)中的同样操作。
(e)通过轮换位矩阵中的列使已发送指令的到达顺序列位于位矩阵的到达顺序的最后一位,下一待发指令无需通过复杂计算(如重新排列存储区内的指令)即可得出。
(f)如果保持其中指示下一到达指令存储位置的列的到达顺序为逻辑值“1”的位矢量,则只需通过在该位矢量与位矩阵每行中的位串之间进行与(AND)运算即可容易地获得存储指令的存储位置。
(g)在上述(f)中的位矢量中,只需通过在指令到达时朝向后到达顺序方向进行移位(shift)操作及在指令已发出时朝向先到达顺序方向进行移位操作,即可容易地改变所指示的存储位置。该位矢量的移位操作与位矩阵的轮换分开进行。
以下将参照图10到图11B详细说明上述重新排序控制应用于中央处理器(CPU)中的指令处理的实例。
图10显示了微处理器配置实例,该微处理器通过无序(out-of-order)方法执行指令。微处理器901包括指令解码器911、指令获取装置(fetchmechanism)912、总线接口913、高速缓存914、保留站(RS)915、重新排序缓冲器(ROB)916、执行单元917和引退注册文件(RRF)918。
总线接口913通过处理器总线902存取外部存储器(图中未显示)。指令获取装置912从该存储器或高度缓存914中预先获得宏指令。指令解码器911将该宏指令转化为微指令串。
在准备执行无序操作时,该微指令的运算对象被引退注册文件918的输入项取代,同时进行注册重命名。此时进行注册重命名是为了使其运算对象是前一指令的执行结果的指令使用输入项作为运算对象,该输入项在前一指令被解码时作为执行结果存储目的地被预留。
由指令解码器911发出的指令被暂时输入保留站915中并等待相关的运算对象数据。保留站915中的调度器(scheduler)包括重新排序电路,并且在其运算对象数据已完全被接收的指令中从最早发出的指令(an oldestinstruction)开始依次发出指令。此时,该重新排序电路将微指令的顺序由到达顺序(有序)改变为可发出指令顺序(无序)。
但是,来自指令解码器911的有序(程序顺序)发出的微指令的执行结果需要有序反映在引退注册文件918中。所以,由执行单元917输出的无序执行结果被重新排序缓冲器916转化为有序。因此,当对指令进行解码时,重新排序缓冲器916的输入项作为执行结果存储目的地被预留。
图11A和图11B显示了保留站915内的重新排序电路的配置实例。该重新排序电路包括:释放顺位指示器1001,或(OR)电路1002-2到1002-n以及1104-1到1104-n,与(AND)电路1003-1到1003-n和1103-1到1103-n,闩锁电路1004-1到1004-n(C1-Cn),多路复用器1005、1006和1102,分配顺位指示器1007,释放请求矢量1101,反相器1105-2到1105-n,以及或非(NOR)电路1106-2到1106-n。
闩锁电路1004-1到1004-n分别为保持n位的位串的存储器电路(如触发器),并对应于图3中的位矩阵203。在此情况下,在闩锁电路1004-1到1004-n中保持n行n列的位矩阵,而且在闩锁电路1004-i中保持到达顺序列i(i=1到n)。
闩锁电路1004-1到1004-n在相应的不同顺位均仅保持一位逻辑值“1”,并作为选择器分别指示存储区(未显示)中的n个输入项存储位置之一。
释放顺位指示器1001对于图6中的位矢量204,保持n位的位矢量,该位矢量指示下一待发(释放)输入项(微指令)的顺位。但是,如果没有待释放的输入项,则所有位均为逻辑值“0”。
或(OR)电路1002-2输出释放顺位指示器1001的第一与第二位的逻辑和。或(OR)电路1002-i(i=3到n)输出或(OR)电路1002-(i-1)的输出与释放顺位指示器1001的第i位的逻辑和。
与(AND)电路1003-1输出释放指示脉冲P1与释放顺位指示器1001发送给闩锁电路1004-1的第一位的逻辑积。与电路(AND)1003-i(i=2到n)输出释放指示脉冲P1与或(OR)电路1002-i向闩锁电路1004-i的输出的逻辑积。
所以,如果在释放顺位指示器1001的第k(k=1到n)位为逻辑值“1”时释放指示脉冲P1为逻辑值“1”,则与电路1003-1到1003-(k-1)输出逻辑值“0”,而与(AND)电路1003-k到1003-n输出逻辑值“1”(闩锁指示信号)。
闩锁电路1004-i(i=k到n-1)输出n位的位串,并在与(AND)电路1003-i输出闩锁指示信号时闩锁由闩锁电路1004-(i+1)输出的位串。闩锁电路1004-n输出n位的位串,并在与(AND)电路1003-n输出闩锁指示信号时闩锁由多路复用器1005输出的位串。
多路复用器1005在由闩锁电路1004-1到1004-n输出的n个位串中选择由释放顺位指示器1001指示的第k个位串,并将所选择的位串输出至闩锁电路1004-n。
由此,利用由释放指示脉冲P1以及释放顺位指示器1001的位矢量产生的闩锁指示信号,闩锁电路1004-k到1004-n进行图7所示的轮换操作。此时,闩锁电路1004-1到1004-n保持分配顺序(到达顺序)不变。
分配顺位指示器1007对应于图3中的位矢量202。分配顺位指示器1007保持n+1位,其为n位的位矢量与满输入项(full-entry)时的保存(save)位(1位)的总和,该位矢量指示下一到达输入项在顺序中的顺位,并且分配顺位指示器1007总是只保持一位逻辑值“1”。该位矢量指示闩锁电路1004-1到1004-n中任意一个。
另外,分配顺位指示器1007通过位矢量和保存位中逻辑值“1”的位的顺位,监控已注册输入项存储位置的数量,并当输入项存储在所有存储位置时,输出满输入项信号S2作为逻辑值“1”。
当输入释放指示脉冲P1时,分配顺位指示器1007使位矢量朝向输入项减少的方向(左方向)移位,当分配指示脉冲P2输入时,分配顺位指示器1007使位矢量朝向输入项增多的方向(右方向)移位。但是,当两脉冲同时输入时不进行移位操作。
多路复用器1006在闩锁电路1004-1到1004-n输出的n个位串中选择分配顺位指示器1007指示的位串,并且输出所选择的位串作为存储分配指针S1。因此,下一个到达的输入项将被存储在由存储分配指针S1指示的存储位置中。
释放请求矢量1101对应于图5的位矢量205并保持n位的位矢量。各位表示各输入项的释放请求,且与被请求释放的输入项相对应的位的值保持为逻辑值“1”。因此,当多个输入项被请求释放时,多个位为逻辑值“1”。
闩锁电路1004-1到1004-n保持分配顺序不变。所以,通过比较释放请求矢量1101和这些位串,释放请求矢量1101中的信息可依分配顺序重新排序,并可提取最早输入项在顺序中的顺位。该操作可如下进行:
与(AND)电路1103-i(i=1到n)将由闩锁电路1004-i输出的位串与释放请求矢量1101的逻辑积输出到或(OR)电路1104-i。
或(OR)电路1104-1输出由与(AND)电路1103-1输出的n位的逻辑和(OR变换(reduction))。或(OR)电路1104-i(i=2到n)输出由与(AND)电路1103-i输出的n位和或(OR)电路1104-(i-1)的输出的逻辑和(OR变换)。
反相器1105-i(i=2到n)使或(OR)电路1104-i输出反相。或非(NOR)电路1106-i输出反相器1105-i的输出与或(OR)电路1104-(i-1)的输出的逻辑和的非值。
释放顺位指示器1001将或(OR)电路1104-1的输出保持为第一位,并将或非(NOR)电路1106-2到1106-n的输出保持为第二到第n位。
所以,如果第k个与(AND)电路1103-k(k<n)的输出包括逻辑值“1”,则或(OR)电路1104-k输出逻辑值“1”,而或非(NOR)电路1106-(k+1)到1106-n都输出逻辑值“0”。
由此,释放顺位指示器1001保持位矢量,在该位矢量中,仅有对应于被请求释放的多个输入项的顺位中最左端顺位的位为逻辑值“1”,而其它位为逻辑值“0”。此位矢量指示多个被请求释放输入项中最早输入项的顺位。
多路复用器U02从闩锁电路1004-1到1004-n输出的n个位串中选择由释放顺位指示器1001指示的位串,并输出所选择的位串作为释放输入项指针S3。因此,发出(释放)由释放输入项指针S3所指示的存储位置的输入项。
设置图11B中的电路以从释放请求矢量1101中获得释放输入项指针S3。但是,此外,该电路通常还用作用于对分配顺序进行重新排序的电路,如以分配顺序对分配信息和输入项信息间的匹配结果进行重新排序的操作。
根据如上所述的重新排序电路,最早的可发出指令在无须计算每个输入项的保持时间情况下即可存取。所以,能够更容易和更快速地以无序方法执行指令。
本发明的重新排序控制不仅可应用于CPU中的指令处理,还可应用于多种处理对象。例如,当处理对象为包收发装置中的包信息时,可改变多个包信息的处理顺序。
图12显示了应用于如上所述的包收发装置中的网络通信大规模集成电路(LSI)的配置实例。通信大规模集成电路1201包括总线接口1211、发送缓冲器1212、发送管理单元1213、以及发送接口1214。
当发送一个包时,上层程序经由装置内部总线1202将包发送请求传送给通信大规模集成电路1201。在接收到该包发送请求后,总线接口1211将包长度和包目的地传送给发送管理单元1213并请求发送缓冲器1212分配。
当分配请求可执行时,发送管理单元1213内部生成包控制信息输入项,将发送缓冲器1212的分配地址和所生成的输入项的号传送给总线接口1211,进行分配通知。在接到该通知后,总线接口1211开始将包数据写入发送缓冲器1212。
当完成写入包数据时,总线接口1211将可发送的已分配输入项的号传送给发送管理单元1213,向发送管理单元1213进行可发送通知。
如果存在可发送包,则发送管理单元1213将发送开始地址和发送包长度传送给发送接口1214并请求发送。接到该请求后,发送接口1214从发送缓冲器1212中读取包数据,并经由装置外部网络1203将读取的数据发送至目的地。在接收到来自发送接口1214发出的发送完成通知后,发送管理单元1213删除相应的输入项。
在如上所述的发送控制中,考虑到多个包,总线接口1211采取直接存储器存取(DMA)传送方式来并行写入这些包的数据,因此,发送管理单元1213需要同时保持多个输入项。此外,为了有效使用网络带宽,在目的地不同的包中,后分配的包需要在该包变为可发送的情况下发送,而输入项需要依不同于分配顺序的顺序释放。
所以,图11A和11B所示的重新排序电路设置于发送管理单元1213中,并对包进行重新排序控制。在此情况下,包控制信息作为输入项存储于存储区中,而且发送接口1214发出的发送完成通知也反映在释放请求矢量1101的位值中。
在传统的发送管理装置中,下一待发送包的输入项被连续检索,或需要安装具有转发(forwarding)功能的大型排序电路的硬件设备。另一方面,根据本发明的重新排序电路,检索过程可通过一个小型电路快速进行,因此,可重新排序并发送大量的短包。
在如图12所示的通信大规模集成电路1201中,将发送包信息作为处理对象进行重新排序。但是,重新排序同样可应用于将接收包信息作为处理对象的情况。
本发明的重新排序控制不仅可由硬件电路实施,而且可由进行并行处理的软件实施。例如,使用如图13所示的并行计算机,位矩阵的并行处理可由n个处理单元(PE)1301-1到1301-n进行。
在此情况下,具有n行n列的位矩阵的到达顺序i的列以及进行如图3到图8所示重新排序控制的程序都存储于PE1301-i(i=1到n)的存储器中。然后,PE单元1301-1到1301-n在与其它PE通信的同时执行程序,并行处理到达顺序1到n的各列,并进行重新排序控制。

Claims (11)

1.一种重新排序装置,其保持多个输入项作为处理对象并将所述多个输入项的处理顺序从第一顺序改变为第二顺序,该重新排序装置包括:
存储器装置,其在不同的存储位置分别存储多个待处理的输入项;
矩阵装置,其保持矩阵信息,在该矩阵信息中,该存储器装置中的存储位置对应于行号而第一顺序中的顺位对应于列号,并且与所述存储位置中的一个存储位置以及存储于该存储位置的每个输入项在第一顺序中的顺位相对应的元素具有预定值;
矢量装置,其保持第一矢量信息,所述第一矢量信息指示该存储器装置的存储位置中的一个或多个可处理输入项的存储位置;
控制装置,其进行所述第一矢量信息与该矩阵信息的各列之间的逻辑运算,根据各列的运算结果产生第二矢量信息,其中所述第二矢量信息指示一个或多个可处理输入项在第一顺序中的顺位,从由所述第二矢量信息指示的一个或多个可处理输入项在第一顺序中的顺位中,选择待处理的在第一顺序中的顺位,获得与所选择的在第一顺序中的顺位相对应的列中具有所述预定值的元素,并处理与所获得元素相对应的存储位置中的输入项,由此实现根据第二顺序进行处理。
2.如权利要求1所述的重新排序装置,其特征在于,在矩阵信息中,与待存储输入项的存储位置和分配给该存储位置的第一顺序中的顺位相对应的元素具有所述预定值。
3.如权利要求1所述的重新排序装置,其特征在于,该控制装置计算所述第一矢量信息的各元素与该矩阵信息各列的各元素的逻辑积,以产生作为各列运算结果的第三矢量信息,并计算各列的所述第三矢量信息中所有元素的逻辑和以产生所述第二矢量信息。
4.如权利要求2所述的重新排序装置,其特征在于,当处理与所获得元素相对应的存储位置中的输入项时,该控制装置轮换该矩阵信息的列,以使与所选择的在第一顺序中的顺位相对应的列被排到第一顺序中的最后一位。
5.如权利要求2所述的重新排序装置,还包括指针装置,该指针装置保持指针信息,该指针信息指示在分配给待存储输入项的多个存储位置的第一顺序中的顺位中、第一顺序中的首顺位,其中该控制装置获得在与由该指针信息指示的第一顺序中顺位相对应的列中具有所述预定值的元素,并在对应于所获得元素的存储位置中存储新输入项。
6.如权利要求5所述的重新排序装置,其特征在于,该控制装置更新该指针装置的指针信息,使得当新输入项存储在存储器装置时以及当存储在该存储器装置中的输入项被处理时,该指针信息指示第一顺序中的新的首顺位。
7.如权利要求1所述的重新排序装置,其特征在于,该矩阵装置使用输入项的到达顺序作为第一顺序。
8.如权利要求1所述的重新排序装置,其特征在于,该控制装置从所述第二矢量信息指示的第一顺序中的一个或多个顺位中选择第一顺序中的第一顺位,作为第一顺序中待处理的顺位。
9.如权利要求1所述的重新排序装置,其特征在于,该存储器装置存储多个指令作为多个待处理输入项,而该控制装置执行存储于该存储器装置中的指令的发出。
10.如权利要求1所述的重新排序装置,其特征在于,该存储器装置存储多个包信息输入项作为多个待处理输入项,而该控制装置处理存储于该存储器装置中的包信息输入项。
11.一种重新排序方法,使计算机保持多个输入项作为处理对象并将所述多个输入项的处理顺序从第一顺序改变为第二顺序,其中该重新排序方法包括以下步骤:
使该计算机在存储器装置的不同存储位置分别存储多个待处理输入项;
使该计算机保持矩阵信息,在该矩阵信息中,该存储器装置中的存储位置对应于行号而第一顺序中的顺位对应于列号,并且与所述存储位置中的一个存储位置以及存储于该存储位置的输入项在第一顺序中的顺位相对应的元素具有预定值;
使该计算机保持第一矢量信息,所述第一矢量信息指示该存储器装置的存储位置中的一个或多个可处理输入项的存储位置;
使该计算机进行所述第一矢量信息与该矩阵信息的各列之间的逻辑运算,并根据各列的运算结果产生第二矢量信息,其中所述第二矢量信息指示一个或多个可处理输入项在第一顺序中的顺位;
使该计算机从由所述第二矢量信息指示的一个或多个输入项在第一顺序中的顺位中,选择待处理的在第一顺序中的顺位;
使该计算机获得与所选择的在第一顺序中的顺位相对应的列中具有所述预定值的元素;以及
使该计算机处理与所获得元素相对应的存储位置中的输入项,由此实现根据第二顺序进行处理。
CNB2006101015067A 2006-02-27 2006-07-11 重新排序装置及方法 Expired - Fee Related CN100559342C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2006050798 2006-02-27
JP2006050798A JP4814653B2 (ja) 2006-02-27 2006-02-27 リオーダリング装置

Publications (2)

Publication Number Publication Date
CN101030133A CN101030133A (zh) 2007-09-05
CN100559342C true CN100559342C (zh) 2009-11-11

Family

ID=37025190

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006101015067A Expired - Fee Related CN100559342C (zh) 2006-02-27 2006-07-11 重新排序装置及方法

Country Status (6)

Country Link
US (1) US7509482B2 (zh)
EP (1) EP1826665B1 (zh)
JP (1) JP4814653B2 (zh)
KR (1) KR100780306B1 (zh)
CN (1) CN100559342C (zh)
DE (1) DE602006007799D1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8341360B2 (en) * 2005-12-30 2012-12-25 Intel Corporation Method and apparatus for memory write performance optimization in architectures with out-of-order read/request-for-ownership response
JP5531513B2 (ja) * 2009-09-01 2014-06-25 富士通株式会社 デスタッフ回路および伝送装置
US9524170B2 (en) * 2013-12-23 2016-12-20 Intel Corporation Instruction and logic for memory disambiguation in an out-of-order processor
JP6347681B2 (ja) * 2014-07-01 2018-06-27 キヤノン株式会社 情報処理システム、処理装置、画像処理装置、情報処理システムの処理方法及びプログラム
CN109823628B (zh) * 2019-01-24 2021-01-26 中国联合网络通信集团有限公司 物体排序整理箱及方法
WO2021200161A1 (ja) * 2020-03-31 2021-10-07 ソニーグループ株式会社 復号化装置、復号化方法、符号化装置、及び符号化方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4320466A (en) * 1979-10-26 1982-03-16 Texas Instruments Incorporated Address sequence mechanism for reordering data continuously over some interval using a single memory structure
US5684971A (en) 1993-12-27 1997-11-04 Intel Corporation Reservation station with a pseudo-FIFO circuit for scheduling dispatch of instructions
JPH08110901A (ja) 1994-10-12 1996-04-30 Nec Shizuoka Ltd マイクロプロセッサ
US6108771A (en) 1997-12-19 2000-08-22 International Business Machines Corporation Register renaming with a pool of physical registers
JP2000048549A (ja) 1998-08-03 2000-02-18 Fujitsu Ltd テープ装置
US6704856B1 (en) * 1999-02-01 2004-03-09 Hewlett-Packard Development Company, L.P. Method for compacting an instruction queue
US6185672B1 (en) * 1999-02-19 2001-02-06 Advanced Micro Devices, Inc. Method and apparatus for instruction queue compression
JP3558001B2 (ja) * 2000-05-24 2004-08-25 日本電気株式会社 命令バッファ及びバッファキュー制御
US6785802B1 (en) * 2000-06-01 2004-08-31 Stmicroelectronics, Inc. Method and apparatus for priority tracking in an out-of-order instruction shelf of a high performance superscalar microprocessor
JP3518510B2 (ja) 2001-01-10 2004-04-12 日本電気株式会社 リオーダバッファの管理方法及びプロセッサ
JP2002304823A (ja) 2001-04-10 2002-10-18 Fujitsu Ltd リオーダリングコントローラ、リオーダリング方法及び記憶装置
KR20030042289A (ko) 2001-11-22 2003-05-28 이용석 레지스터 리네이밍 방법을 사용하는 비순차적 명령어 이슈컴퓨터 시스템
JP2004135076A (ja) * 2002-10-10 2004-04-30 Fujitsu Ltd 断片パケットのリアセンブルおよびリオーダリング装置
KR20040082532A (ko) 2003-03-19 2004-09-30 주식회사 하이닉스반도체 조건부 명령 실행 방법 및 그 방법을 이용하는 비순차적컴퓨터 시스템
US7249230B2 (en) 2004-06-23 2007-07-24 Intel Corporation Queue structure with validity vector and order array

Also Published As

Publication number Publication date
EP1826665A2 (en) 2007-08-29
EP1826665A3 (en) 2008-05-28
EP1826665B1 (en) 2009-07-15
KR100780306B1 (ko) 2007-11-29
KR20070089026A (ko) 2007-08-30
US20070204136A1 (en) 2007-08-30
JP4814653B2 (ja) 2011-11-16
US7509482B2 (en) 2009-03-24
DE602006007799D1 (de) 2009-08-27
JP2007233457A (ja) 2007-09-13
CN101030133A (zh) 2007-09-05

Similar Documents

Publication Publication Date Title
CN100559342C (zh) 重新排序装置及方法
CN106415515B (zh) 使用不具有sfence的优化的pio写入序列来发送分组
CN106415513B (zh) 用于分组发送的优化的信用返回机制
US4320455A (en) Queue structure for a data processing system
CN100499565C (zh) 自由表和环形数据结构管理
RU2597520C2 (ru) Контроллер памяти и способ работы такого контроллера памяти
CN102934076B (zh) 指令发行控制装置以及方法
CN102306093B (zh) 实现现代处理器间接转移预测的装置及方法
KR920005852B1 (ko) 데이타 처리 시스템에 있어서 합성 디스크립터를 제공하는 장치 및 방법
CN102566976B (zh) 管理重命名寄存器的寄存器重命名系统和方法
CN101447911B (zh) 一种通过分布控制扩展访存队列容量的装置
US6272624B1 (en) Method and apparatus for predicting multiple conditional branches
JPH04270421A (ja) プロセサアーキテクチャ
CN102377682A (zh) 基于定长单元存储变长分组的队列管理方法及设备
CN105117202B (zh) 具有融合保留站结构的微处理器
JP7472277B2 (ja) マルチレベルマルチストライドを有するダイレクトメモリアクセスアーキテクチャ
GB2322718A (en) Dynamic classification and dispatch of instructions out of order
JPH0439759A (ja) バッファ記憶制御方法
CN106951215A (zh) 减少由加载队列满载引起的流水线推迟的处理器和方法
CN103984525B (zh) 指令处理系统及方法
CN100378650C (zh) 微处理机与随机存取快取记忆体的快速弹出装置及其方法
JP2013206095A (ja) データ処理装置及びデータ処理装置の制御方法
US8255623B2 (en) Ordered storage structure providing enhanced access to stored items
CN114528111B (zh) 用于数据召回的fpga芯片和数据召回方法
CN114546497B (zh) 乱序处理器中队列的访问方法及装置

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

Granted publication date: 20091111

Termination date: 20160711

CF01 Termination of patent right due to non-payment of annual fee