CN1227585C - 计算机系统 - Google Patents

计算机系统 Download PDF

Info

Publication number
CN1227585C
CN1227585C CNB018149650A CN01814965A CN1227585C CN 1227585 C CN1227585 C CN 1227585C CN B018149650 A CNB018149650 A CN B018149650A CN 01814965 A CN01814965 A CN 01814965A CN 1227585 C CN1227585 C CN 1227585C
Authority
CN
China
Prior art keywords
content
maintaining body
data
instruction
reflection
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
CNB018149650A
Other languages
English (en)
Other versions
CN1449521A (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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Publication of CN1449521A publication Critical patent/CN1449521A/zh
Application granted granted Critical
Publication of CN1227585C publication Critical patent/CN1227585C/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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/02Digital computers in general; Data processing equipment in general manually operated with input through keyboard and computation using a built-in program, e.g. pocket calculators
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明目的是提供一种容易实现高性能化,可以利用现有基于寄存器或者基于堆栈的处理器的机器语言所记述程序的计算机系统。该计算机系统包括:在各项目中写入数据的数据文件,在各项目中写入所述数据文件项目地址的前进映像文件和完成映像文件,作为存储执行等待操作内容的缓冲器的操作窗口,写入每个时钟周期的所述前进映像文件状态变更内容的状态变更队列,执行操作的功能单元组。其中,前进映像文件的内容变更,该变更的内容向状态变更队列的写入,以及操作组的内容向操作窗口的写入,分别在一个时钟周期内进行,另一方面,操作窗口中存储的未执行操作以无序的方式执行。

Description

计算机系统
技术领域
本发明涉及一种计算机系统,更具体来讲,本发明涉及一种通过实现高度的指令级并行性,得到的高性能的新型构造计算机方法。
背景技术
现有通用计算机的实用计算机方法主要有两种:基于寄存器的机器和堆栈机器。堆栈机器的程序的代码尺寸小,高速的中断处理和关联转换程序较好,但是很难高速化。另一方面,基于寄存器的机器较易高速化,但是其他方面很多地方比堆栈机器差。
基于寄存器的机器和堆栈机器相互间没有程序的互换性,此外如上所述,任意一种都没有绝对的优势。
发明内容
本发明的目的是,实现一种计算机方法,使基于寄存器的机器指令格式和堆栈机器的指令格式具有相似性,并且可以实现高性能化。
本发明的计算机方法,基本上和可无序执行的超量结构相同,采用比特长度较长的指令格式,其中记载了操作组的内容及假想的逻辑寄存器组或者操作数堆栈的状态变更的内容。
本发明的计算机系统,包括:各项目中写入数据的数据文件;存储未分配数据文件项目地址的空闲表;各项目中写入数据文件项目地址的前进映像文件和完成映像文件;作为存储执行等待操作内容的缓冲器的操作窗口;写入各个指令映像文件的状态变更内容的状态变更队列;执行各种操作的功能单元组。
本发明的计算机系统,一个时钟周期只发行一个指令,从而将操作组的内容写入操作窗口,进行前进映像文件的内容变更,并将变更的内容写入状态变更队列。进行产生结果数据的操作时,为存储结果数据将数据文件的项目重新分配,使其成为目的寄存器。此外,各操作中作为源寄存器的,是将地址存入前进映像文件所得到数据文件的项目,或者,是相同指令含有的操作中作为目的寄存器分配的数据文件的项目。
操作窗口中存储的未执行操作分别无序地通过任意一个功能单元组来执行。基于与状态变更队列前头部分内容相同指令的发行的操作全部正常完成后,基于状态变更队列前头部分的内容,应再现所述指令发行时前进映像文件的内容变更,进行完成映像文件的内容变更,从状态变更队列中将所述前头部分排除。
本发明的计算机系统,可以应用寄存器模式和堆栈模式两种模式进行动作。将用RISC或者CISC的基于寄存器的处理器的机器语言记述的程序转换为本发明计算机系统的指令格式并执行时,即为寄存器模式。另一方面,将用基于堆栈的处理器的机器语言记述的程序转换为本发明计算机系统的指令格式并执行时,即为堆栈模式。寄存器机器或者堆栈机器的多个指令可以简便地转换为本发明计算机系统中的一个指令,因而可以高速处理广泛的程序。
寄存器模式中,映像文件与基于寄存器的超量处理器的寄存器映像表等同使用。
堆栈模式中,映像文件用于保存一种堆栈。现有的堆栈机器中,操作数堆栈是...,word4,word3,word2,word1(右端是栈顶)的状态,对应着本发明计算机系统中,映像文件中保存的堆栈内容如果是...,d,c,b,a(右端是栈顶),项目地址是a,b,c,d的数据文件的各项目中分别保存word1,word2,word3,word4的状态。
附图说明
图1是表示了本发明相关理想的计算机系统基本构造的块状图;
图2是表示了本发明相关理想的计算机系统指令格式的概念图;
图3是表示了数据文件的项目构造的说明图;
图4是表示了后述操作队列的项目构造的说明图;
图5是表示了前进映像文件,完成映像文件,后述两个推进指针和底部指针以及填充标记文件之间关系的说明图;
图6~图12是具体表示了寄存器模式的一动作例中7点时,前进映像文件,完成映像文件,状态变更队列,操作队列,数据文件以及空闲表的内容的说明图;
图13~19是具体表示了堆栈模式的一动作例中7点时,前进映像文件,完成映像文件,状态变更队列,操作队列,数据文件以及空闲表的内容的说明图。
具体实施方式
下面将就本发明的较佳的计算机系统进行说明。
(1)基本构造
首先,就本实施例的计算机系统的基本构造进行说明。
图1是计算机系统的框图,10表示指令高速缓冲存储器,11表示数据高速缓冲存储器,12表示数据缓冲器,20表示指令取出单元,21表示指令发行单元,3a表示前进映像文件,3c表示完成映像文件,3f表示填充标记文件,3h表示前进映像履历文件,4表示状态变更队列,5表示操作队列,6表示数据文件,7表示空闲表,80和81分别表示运算单元0和1,80表示分支单元,83表示装入/存储单元。
本发明的计算机系统,必须具备作为保存待执行操作内容的缓冲器的操作窗口(window)。为实现操作窗口,基本上有集中型和分散型两种方法,本实施例的计算机系统采用集中型的操作队列。
本发明的计算机系统,可以通过寄存器模式和堆栈模式两种模式进行动作。将用RISC或者CISC的基于寄存器的处理器的机器语言记述的程序转换为本发明计算机系统的指令格式并执行时,即为寄存器模式。另一方面,将用基于堆栈的处理器的机器语言记述的程序转换为本发明计算机系统的指令格式并执行时,即为堆栈模式。
本发明计算机系统所具备的映像文件,是在各项目中写入数据文件项目的地址而构成,在寄存器模式中,与可无序地执行基于寄存器的超量处理器的寄存器映像表具有相同功能。本发明中,映像文件在堆栈模式中也具有相同功能。
(2)指令格式
图2是表示了本发明实施例的计算机系统指令格式的概念图。无论在寄存器模式中还是在堆栈模式中,各指令的格式基本上由格式信息字段101,操作字段102和状态变更字段103构成。
格式信息字段(FI字段)中,表示了该指令的长度,该指令包含的操作数等相关信息。
操作字段(Op字段)中,表示了算术逻辑运算及分支,装入/存储等所构成的操作组的内容。本实施例中,各操作记述为与RISC处理器中的指令相同的格式。本实施例中,一个指令最多包括四个操作(包括分支操作时,一个指令不必包括四个操作)
状态变更字段(SM字段)中,表示了映像文件内容的变更。即,在寄存器模式中表示了假定的寄存器组的状态变更的内容,堆栈模式中表示了假定的操作数堆栈的状态变更的内容。如下所述,状态变更字段内部的格式在寄存器模式和堆栈模式中并不相同。
进行产生结果数据的操作时,为存储结果数据将数据文件的项目重新分配,而其项目的逻辑定位通过SM字段的内容来表示。
本实施例的计算机系统,每一周期发行所述格式的一个指令。
(2-1)寄存器模式的指令格式
以下,就寄存器模式的指令格式进行说明。
本实施例计算机系统中数据文件的各项目,可以保存假定的寄存器机器的一个寄存器所保存的数据。映像文件的地址0,1,2,...的项目内容分别设置为r0,r1,r2,...时,项目地址为r0,r1,r2,...的数据文件的各项目中,应分别保存寄存器机器的寄存器R0,R1,R2,...的数据。
例如,从存储体中向寄存器组中输入变量A,B,X的数据,计算(A*X+B/X)*2,并将其结果作为变量Y存入存储体中的程序在寄存器中书写如下。
LOAD R1,100[R0];(R0内容+100)地址数据输入寄存器R1
LOAD R4,400[R0];(R0内容+400)地址数据输入寄存器R4
MUL R5,R1,R4;R5=R1*R4
LOAD R2,200[R0];(R0内容+200)地址数据输入寄存器R2
DIV R4,R2,R4;R4=R2/R4
ADD R5,R5,R4;R5=R5+R4
MUL R5,R5,2;R5=R5*2
STORE 500[R0],R5;将寄存器R5的内容存入(R0内容+500)地址
这里,存储体中变量A,B,X,Y的数据的存储区域的地址即为,分别在R0内容上加上100,200,400,500。
说明所述程序如何转换为本实施例计算机系统中的寄存器模式的指令。
所述程序分割为每四个指令构成的组,关于每个指令,当将操作内容和加到映像文件中的变更内容分开书写,则如下所述。
指令1a load f1,100[r0];1:f1
指令1b load f2,400[r0];4:f2
指令1c mul f3,f1,f2;5:f3
指令1d load f4,200[r0];2:f4
--------------------------------
指令2a div f1,r2,r4;4:f1
指令2b add f2,r5,f1;5:f2
指令2c mul f3,f2,2;5:f3
指令2d store 500[r0],f3
这里,使为存储结果数据重新分配的数据文件项目的地址,在各指令组中按顺序设置为f1,f2,...。本实施例中,f1,f2,...分别对应从各周期的空闲表中取出的地址。
指令1a的意义是,输入(对应r0的数据文件项目的数据+100)地址的数据,并将其写入对应f1的数据文件的项目中,使映像文件的地址1的项目内容转换为对应f1的数据文件项目的地址。命令1c的意义是,将分别对应f1和f2的数据文件项目的数据相乘,将该结果数据写入对应f3的数据文件的项目中,并将映像文件地址5的项目内容转换为对应f3的数据文件项目的地址。其他的指令也是如此。
对于两个指令组,综合四个指令的内容,将记述操作和映像文件的内容的变更分开记述,则为如下。
Op{load f1 100[r0];load f2,400[r0];mul f3,f1,f2;load f4,200[r0]}
SM{1:f1,2:f4,4:f2,5:f3}
-------------------------------
Op{div f1,r2,r4;add f2,r5,f1;mul f3,f2,2;store 500[r0],f3}
SM{4:f1,5:f3}
这些就是所述程序转换成本发明实施例的计算机系统的寄存器模式的指令格式的情况下的Op字段和SM字段的内容。转换为这两个指令时,映像文件地址5的项目内容的转换有两个,作为SM字段的内容仅残留最后的部分。这样,寄存器模式的指令格式中,列举有在SM字段中应变更内容的映像文件的项目地址和表示各个变更内容的符号组。
这里,Op字段的操作组中对应目的寄存器的f1,f2,f3,...,按顺序进行机械的分配,因此可以省略,而在本实施例中予以写明。
(2-2)堆栈模式的指令格式
以下就堆栈模式的指令格式进行说明。
本实施例的计算机系统中数据文件的各项目可以保存假定的堆栈机器操作数堆栈一个项目中保存的数据。即,映像文件中保存的堆栈内容设置为...,s3,s2,s1(右端为栈顶)时,项目地址为...,s3,s2,s1的数据文件各项目中可以分别保存的数据按顺序排列,从而,可以构成堆栈机器的操作数堆栈。
例如,计算A*X+B/X,并将其结果作为变量Y写入存储体中的程序在堆栈机器中书写如下。
LOAD<4>;将本地变量4的数据推入操作数堆栈
DUP    ;复制栈顶数据,并将其在堆栈中层叠
LOAD<1>;将本地变量1的数据推入操作数堆栈
MUL    ;将二变量部分的数据退栈,进行乘法运算,并推入结果
SWAP   ;在操作数堆栈中替换最顶端和其次的数据
LOAD<2>;将本地变量2的数据推入操作数堆栈
SWAP ;在操作数堆栈中替换最顶端和其次的数据
DIV  ;将二变量程度的数据退栈,进行相除运算,并推入结果
ADD  ;将二变量程度的数据退栈,进行相加运算,并推入结果
STORE;将栈顶的数据存入本地变量5
这里,变量A,B,X,Y的数据存储区域分别作为本地变量1,2,4,5。
说明所述程序如何转换为本实施例计算机系统的堆栈模式指令。
所述程序分割为两个指令组,关于每个指令,分开书写操作内容和映像文件中加入的变更内容,则如下所述。
指令1a load f1,<4>;+1:f1
指令1b add f2,f1,0;+2:f1,f2
指令1c load f3,<1>;+3:f1,f2,f3
指令1d mul f4,f2,f3;+2:f1,f4
指令1e (swap);+2:f4,f1
--------------------------------
指令2a load f1,<2>;+1:f1
指令2b (swap);+1:f1,s1
指令2c div f2,f1,s1;0:f2
指令2d add f3,s2,f2;-1:f3
指令2e store <5>,f3;-2:
这里,与寄存器模式的情况相同,使为存储结果数据而重新分配的数据文件项目的地址,在各指令组中按顺序设置为f1,f2,...。另外,关于加在映像文件中的变更,无论其保存的堆栈增长为何等项目程度的数量,都表示了加在栈顶附近的变更内容。
指令1a的意义是,输入本地变量<4>的数据,并将其写入对应f1的数据文件的项目中,使保存映像文件的堆栈增长一个项目程度,重新使作为栈顶的项目的内容成为对应f1的数据文件项目的地址。指令1b也相同,关于加到映像文件的变更,记述为还含有指令1a的变更内容。其他指令也相同。
关于两个指令组,综合其内容,如分开记述操作和映像文件的内容变更,则表示如下。
Op{load f1,<4>;add f2,f1,0;load f3<1>;mul f4,f2,f3}
SM{+2:f4,f1}
----------------------------------
Op fload f1,<2>;div f2,f1,s1;add f3,s2,f2;store<5>,f3}
SM{-2:}
这些就是所述程序转换为本发明实施例的堆栈模式的指令格式的情况下,Op字段和SM字段的内容。这样,堆栈模式的指令格式中,表示了SM字段中堆栈增长量,及表示更新后栈顶附近内容的符号系列。
这里,还描述了寄存器模式中的情况,Op字段的操作组中对应目的寄存器而表示的f1,f2,f3,...按顺序进行机械的分配,因而可以省略,而在本实施例中予以写明。
如上,说明了寄存器机器或者堆栈机器的程序,如何转换为本发明实施例计算机系统的指令格式。但是,本发明计算机系统中处理的程序,未必一定是从寄存器机器或者堆栈机器的程序转换而来。
例如,计算A+(B/2)*X+(C/3)*X*X,将其结果作为变量Y存入存储体中,同时将其系数A,B/2,C/3的值按顺序累积到操作数堆栈的堆栈模式程序书写如下。
Op{load f1,8[s2];load f2,16[s2];div f3,f2,2;load f4,24[s2]}
SM{+3:f1,f3,f4}
--------------------------------------------------------------------
Op{div f1,s1,3;load f2,200[s4];mul f3,f2,f2;mul f4,s2,f2}
SM{+2:f1,f4,f3}
--------------------------------------------------------------------
Op{mul f1,s3,s1;add f2,s5,s2;add f3,f2,f1;store 400[s6],f3}
SM{-2:}
这里,以存储体中的变量A,B,C数据的存储区域的地址作为假定的操作数堆栈开始最顶端的下一项目的内容分别加上8,16,24的所得,以变量X,Y数据的存储区域的地址作为假定的操作数堆栈开始最顶端的项目的内容分别加上200,400的所得。
(3)寄存器模式
(3-1)寄存器模式中动作所必需的功能和构造
这里,分别就本实施例计算机系统的各构成要件,在寄存器模式的动作中被利用的功能和构造进行说明。这些是也堆栈模式中必需的功能与构造。
(A)指令取出单元
指令取出单元具有未图示的程序计数器,用于从指令高速缓冲存储器取出指令,并交付给指令发行单元。并进行分支的预测和分支的执行。
(B)指令发行单元
指令发行单元,为发行从指令取出单元接收的指令,基于其内容产生各种信号,以进行前进映像文件和数据文件的操作,以及向操作队列和状态变更队列的写入。
(C)映像文件
映像文件,具有向其各项目中写入数据文件项目地址的构造。寄存器模式中,映像文件与基于寄存器的超量处理器的寄存器映像表等同使用。
本发明的计算机系统,具有前进映像文件(AMF;AdvancedMapping File)和完成映像文件(CMF;Completed Mapping File)两种映像文件。这两种映像文件格式相同,其各项目具有分别对应的关系。
本发明的计算机系统中,每次发行指令,前进映像文件(以下简称AMF)的内容对应该指令的内容而改变。即,前进映像文件反映了发行完成的全部指令的内容。
另一方面,完成映像文件(以下简称CMF)反映了按照程序上的顺序完成的全部指令的内容。本发明的计算机系统可以无序的执行发行完成指令中包含的操作,完成映像文件的存在,是为了保证正确地进行例外处理,并构成基于有序地完成全部指令的状态。
本实施例的计算机系统具有前进映像履历文件(以下简称「AMF履历文件」),以进行基于分支预测的推测执行。AMF履历文件的各项目中,写入了AMF的全部项目以及后述的寄存器PP-A的内容。
(D)数据文件(DF;Data File)
数据文件(以下简称DF)是由P00,P01,P02,...的物理寄存器构成。
图3是本实施例计算机系统中DF6的各项目6(i)的构造示意图。这里,i表示项目的地址。DF6的各项目6(i)由数据字段61(i)和写入完成标记(WCF;Write Completion Flag)字段62(i)构成。
实际的DF在硬件上的构造,是对所述各字段设置的寄存器文件的集合。
DF的各项目的数据字段的构造,是写入一单词程度的数据。
DF的各项目中,WCF字段,在数据字段中写入数据完成时写入1,未完成时写入0。
(E)空闲表(FL;Free List)
空闲表(以下简称FL),用于保存自由的,即未分配的DF的项目地址,在本实施例中由循环型的FIFO队列构成。
原始状态中,DF的全部项目的地址被登录到FL中。必须重新分配DF的项目时,就从FL中取出空闲的DF的项目地址。相反,如果DF的项目的分配被解除,则项目地址将被登录到FL中。
(F)操作队列(OQ;Operation Queue)
操作队列(以下简称OQ),是保存未完成的发行完成指令中包含的操作内容的缓冲器,由循环型的FIFO队列构成。
图4是本实施例计算机系统中,OQ5的各项目5(i)的构造示意图。这里,i是项目的地址。OQ5的各项目5(i)包括,操作字段50(i),目的寄存器字段51(i),第一操作数字段52(i),第一源寄存器字段53(i),第二操作数字段54(i),第二源寄存器字段55(i),指令边界(IB;Instruction Border)字段56(i),分支标记(BT)字段57(i),及执行状态(S;State)字段58(i)。
OQ的各项目的操作字段,写入操作码。
OQ的各项目的目的寄存器字段,写入作为操作的目的寄存器分配的DF的项目地址。
OQ的各项目的第一,第二操作数字段,分别写入操作中必需的操作数的值而构成。
OQ的各项目的第一,第二源寄存器字段,是分别写入作为操作的源寄存器分配的DF的项目地址而构成。
OQ的各项目中,IB字段,在写入发行的指令中含有的操作内容时,在队列最尾端的项目中写入1,在其他项目中写入0。
OQ各项目的BT字段,与基于分支预测的推测执行有关,在本实施例中,如后所述,BT字段中写入的分支标记与AMF履历文件的项目地址有一定关系。
OQ的各项目中,S字段,对应其项目中写入的操作的执行状态,写入未执行、正常完成、例外现象产生等信息。
OQ具有联想功能,其各项目的每一源寄存器字段中都具有比较电路,将DF项目的地址与各源寄存器字段的内容相比较,向与一致的源寄存器字段相对应的操作数字段中写入数据。
(G)状态变更队列(SMQ;State Modification Queue)
状态变更队列(以下简称SMQ),是用来保存未完成的发行完成指令中所包含映像文件的变更内容的缓冲器,由循环型的FIFO队列构成。本实施例中,SMQ的各项目分别对应各指令的SM字段。
(H)功能单元
本实施例的计算机系统,如图1所示,具有运算单元0和1,分支单元以及装入/存储单元(以下简称LSU)四个功能单元。这些可以相互独立同时动作。
(3-2)寄存器模式的动作
其次,本发明实施例的计算机系统中寄存器模式的动作说明。
本实施例的计算机系统中,指令分①指令取出,②指令发行,③操作执行,④指令完成四阶段进行处理。以下就每一阶段的动作内容进行说明。
①指令取出阶段
此阶段中,指令取出单元从指令高速缓冲存储器取出指令,同时,决定下一次取出指令的地址。其次,下一次指令的取出通常从下一个地址值开始,在预测取出的指令是包含无条件分支操作,或包含条件分支操作的分支的情况下,在分支预测偏离的情况下,或者产生例外的情况下,将变更取出的地址值。
②指令发行阶段
此阶段中,基于发行指令的Op字段的内容将指令中含有的操作内容写入操作队列(OQ),基于SM字段的内容变更前进映像文件(AMF)的内容,并将该变更的内容写入状态变更队列(SMQ)。此时,指令中的r0,r1,r2,...分别转换为变更前的AMF的地址0,1,2,...的项目内容,f1,f2,...分别转换为从空闲表(FL)按顺序取出的DF的项目地址。
写入了发行指令中包含的操作内容的OQ的项目中,队列的最尾端的项目中IB字段为1,其他项目中为0。OQ项目的BT字段中写入从指令发行单元送出的分支标记。
伴随着指令的发行(对应f1,f2,f3,...)重新分配的DF的项目中,WCF字段写入0。
装入/存储操作时,其内容写入OQ中的同时,与进行该写入的OQ的项目地址同时被发送到LSU。
分别对应从写入OQ源寄存器字段的r0,r1,r2,...中任意一个转换而来的DF项目地址的写入,在下一个周期中,读出该地址的DF项目内容,WCF字段为1时,将数据与DF的项目地址同时传送至OQ。OQ中,对照通过各源寄存器字段传送的DF的项目地址,向对应一致的源寄存器字段的操作数字段中写入数据。
③操作执行阶段
OQ中保存的未执行操作因其可执行而得到处理。从而,操作的执行顺序变得无序。
OQ中,具有将必需的源数据全部向适合的操作数字段中写入完毕的项目,处在可利用具有处理所述保存操作功能的功能单元的状态下时,同时将该项目内容及其地址传送到功能单元并执行。
关于产生读入操作及算术逻辑运算等的结果数据的操作,如果结果数据正常时,将结果数据写入作为目的DF项目的数据字段,WCF字段更改为1。另外,在OQ中,通过各源寄存器字段对照作为所述目的DF的项目地址,向对应一致的源寄存器字段的操作数字段中写入数据。
关于OQ的将装入/存储操作作为写入内容的项目,将相同内容发送到指令发行阶段的LSU。指令发行阶段中未确定的地址计算中所必需的操作数数据,在本实施例中,写入OQ的项目中之后,传送到LSU。
LSU中读入操作无序地执行。关于存储操作,地址计算在操作执行阶段无序地执行,而为保证正确的例外处理,存储的执行在指令完成阶段进行。从而,存储操作时,在存储数据和存储地址同时确定的阶段中,操作执行阶段中的动作可视为正常完成。
任何的操作如果其执行正常完成,则保存其操作内容的OQ项目的S字段就被变更为正常完成。
在某操作的处理中产生例外现象时,该信息将被写入保存该操作内容的OQ项目的S字段中,同时会将其通知到指令取出单元。
④指令完成阶段
指令的完成按照程序上的顺序进行。
OQ中从队列前端的项目到IB字段为1的开始项目范围内的项目中,保存着应该接着完成的一个指令中包含的全部操作的内容。所述范围内全部项目中,S字段为正常完成,或者这样时,该指令可以完成。指令的完成被执行时,在OQ中将所述范围的项目从队列中排除,并根据状态变更队列(SMQ)前端项目的内容来变更CMF的内容,在SMQ中将所述前端项目从队列中排除。这里,指令发行时相对AMF进行的内容变更在CMF中得到再现。
此外,伴随着指令的完成,应该解除分配的DF项目的地址分别登录到FL。寄存器模式中,应该解除分配的DF项目群的地址由以下两组构成。用于读出伴随着指令的完成,其内容被改写的CMF各项目变更前内容的地址、以及被写入从队列排除的OQ项目群的目的寄存器字段中,而不被写入从队列排除的SMQ的项目中(不进行向CMF的写入)的地址。本发明的计算机系统也可以是分配解除的DF项目的地址向FL的登录可以在指令完成以后的时间内进行的结构,而在本实施例中,是在指令完成的同时进行。
完成包含存储操作的指令的情况下,依赖LSU中存储的执行。这样,可以保证数据按照程序上的顺序存储。
接着,保存着应该完成的一个指令中包含的操作内容的OQ项目中,S字段有例外现象产生,或者在这种情况下,通过这时的CMF和DF,构成程序有序执行的情况下例外产生时的状态,因此可进行正确的例外处理。发生例外现象的指令以后发行的指令全部取消的情况下,作为应该取消的操作的目的寄存器分配的DF的项目地址分别返回到FL,对应OQ及SMQ中应该取消的指令组范围内的项目最好全部从队列中排除。
以上是本实施例计算机系统的寄存器模式中动作的概要。
(3-3)寄存器模式的动作例
下面,是关于具体动作例的说明。现在,通过本实施例的计算机系统,执行计算所述Y=(A*X+B/X)*2的由以下两指令构成的程序。
指令1
Op{load f1,100[r0];load f2,400[r0];mul f3,f1,f2;load f4,200[r0]}
SM{1:f1,2:f4,4:f2,5:f3}
指令2
Op{div f1,r2,r4;add f2,r5,f1;mul f3,f2,2;store 500[r0],f3}
SM{4:f1,5:f3}
图6~图12是本实施例计算机系统中处理所述程序时的状态按时间变化的示意图,下面将根据这些图进行详细的动作的说明。图6~图12中,DF6及OQ5的各项目的构造分别与图3和图4中相同。
开始的FL及AMF的内容如图6所示。这里表示,循环型的FIFO队列构造的FL7中,从队列前端开始的四个项目分别对应接着发行的指令中的f1,f2,f3,f4。AMF3a及CMF3c中,各项目中附加从上开始按顺序的0,1,2,...及地址,使其分别对应r0,r1,r2,...。写上p##处,写入了DF的任意项目的地址,但在本动作例的说明中没有必要特别注意。
计算机系统处于图6所示状态时,进行指令1的发行。
根据指令1的Op字段内容,指令中包含的操作内容写入OQ中,根据SM字段内容的AMF的内容被变更,该变更后的内容被写入SMQ。这时,指令中的r0转换为变更前(图6)AMF的地址0的项目内容p12,而f1,f2,f3,f4则分别转换为从空闲表按顺序取出的p26,p34,p42,p51。关于AMF内容的变更,对应r1,r2,r4,r5的项目分别转换为由f1,f4,f2,f3转换而来的p26,p51,p34,p42。表示图7的OQ中写入内容的四个项目中,最后的项目处在此时队列的最尾端,因而,IB字段为1,其他项目中为0。另外,这些OQ的四个项目的S字段作为表示未执行的0。
分别对应f1,f2,f3,f4并重新分配的DF的地址p26,p34,p42,p51的各项目中,WCF字段为0。(对应r0的DF的地址p12的项目中,WCF字段为1,并且已经写入了数据“1000”。)
另外,本动作例中,从指令发行单元发送0,作为始终分支标记。这个将写入到写入了操作内容的OQ各项目的BT字段中。
并且,指令1包含三个读入操作,因而这些内容在写入到OQ的同时,也传送到LSU。
这样,计算机系统就从图6的状态转化为图7所示的状态。
下一周期中,在指令1后接着进行指令2的发行。
和指令1的情况相同,根据指令2的Op字段内容,指令中含有的操作内容被写入OO中,根据SM字段内容,AMF的内容被变更,并将变更过的内容写入SMQ中。
分别对应f1,f2,f3重新分配的DF地址p16,p18,p57的各项目中,使WCF字段为O。
并且,指令2中包括一个存储操作,因而其内容被写入OQ的同时,还被传送到LSU。
另外,在前一周期的指令1发行过程中,OQ的源寄存器字段中写入从rO转换而来的p12,从而读出对应的DF的项目内容,WCF字段为1,因而读出的数据“1000”与DF的项目地址“p12”同时传送到OQ,OQ中,向对应通过相联功能写入“p12”的源寄存器字段的操作数字段中写入“1000”。
这样,计算机系统达到图8所示的状态。
OQ中保存的未执行操作因其可执行从而进行无序处理。
图9表示经过多个周期后,指令1以前发行的指令全部完成,并且指令1中包含的四个操作全部正常完成时的计算机系统的状态。保存指令1中包含的操作内容的OQ的四个项目中,分别将必需的操作数数据完全写入操作数字段中,S字段变为意味着正常完成的1,同时,向其目的寄存器字段所表示的DF的项目中写入数据,WCF字段为1。另外,此时CMF的内容与指令1发行之前(图6)的AMF的内容相同。从这种状态到指令1完成的执行如下所述。
图9的OQ中表示写入内容的八个项目中最顶端的项目位于此时队列的前端,因而将从此项目到IB字段为1的第四项目从队列中排除。图9的SMQ中表示写入内容的两个项目中最顶端的项目位于此时队列的前端,因而变更基于其内容的CMF的内容。即,CMF的地址1,2,4,5的项目内容分别变更为p26,p51,p34,p42。并且将SMQ中的所述前端的项目从队列中排除。
另外,伴随着指令1的完成,将应该解除分配的DF的项目地址加到FL的队列中。这时,读出内容被转换的CMF地址1,2,4,5各项目变更前的内容(p02,p10,p24,p60),并将其登录。(这时,没有被写入从队列中排除的OQ项目群的目的寄存器字段中,而不被写入从队列中排除的SMQ项目群中的内容。)这样,计算机系统达到图10所示的状态。
图11表示再经过多个周期后,指令2中包含的三个操作正常完成,并且关于存储操作,存储数据和存储地址同时确定完成时的计算机系统的状态。
从图11所表示时刻开始的一个周期内,指令2的完成与指令1的情况同等进行。这时,指令2含有存储操作,因而其存储的执行依赖LSU。另外,伴随着指令的完成,将应该解除分配的DF的项目地址加到FL的队列中。这时,读出内容被转换的CMF的各项目变更前的内容的p34,p42被登录到FL,并且,写入从队列排除的OQ项目群的目的寄存器字段中,而不写入从队列排除的SMQ项目中的p18也被登录到FL。这样,计算机系统达到了图12所示的状态。
如上,本实施例计算机系统中Y=(A*X+B/X)*2的计算已经完成。
(4)堆栈模式
(4-1)堆栈模式中动作所必需的功能和构造
堆栈模式中如(3-1)中所述的功能和构造同样是必需的。这里,就为堆栈模式的动作而追加的必需的功能和构造进行说明。这些主要是关于映像文件和装入/存储单元(LSU)。
(C+)映像文件和填充标记文件(FFF)
本发明实施例的计算机系统的堆栈模式中,通过映像文件和数据文件(DF),实质地构成操作述堆栈最顶端的部分。即,堆栈模式中,映像文件可用于保存一种堆栈。现有的堆栈机器中,操作述堆栈为...,word4,word3,word2,word1(右端为栈顶)的状态,对应着本发明的计算机系统中,映像文件中保存的堆栈内容为...,d,c,b,a(右端为栈顶)时,项目地址为a,b,c,d的数据文件的各项目中分别保存word1,word2,word3,word4的状态。操作数堆栈规模大时,剩余部分被收容到数据缓冲器和数据高速缓冲存储器中。
各映像文件具有循环型缓冲器功能,因此存在被称为推进指针和底部指针的两种寄存器。推进指针表示映像文件中保存的堆栈从最顶端开始向外侧一个的项目。底部指针表示映像文件中保存的堆栈最底部的项目。取出从底部指针的值到推进指针的值,就可以知道映像文件中哪个项目是空的。初期状态中,推进指针和底部指针的值都为0。
另外,本实施例的计算机系统,具有分别对应AMF/CMF各项目设置的项目中分别保存1位信息的填充标记文件(FFF;Fill FlagFile)。FFF的各项目中,AMF/CMF对应的项目中表示的DF的项目中写入从数据缓冲器填充的数据的情况下写入1,其他情况下写入0。
图5是说明本实施例计算机系统的两组映像文件和推进指针,底部指针以及填充标记文件之间关系的示意图。两映像文件AMF3a和CMF3c以及填充标记文件FFF3f具有同值的项目,并且各映像文件中各项目从上开始按顺序附加0,1,2,...和地址。实施纵线的AMF/CMF的项目用于保存DF项目的地址。如图5所示,推进指针分别相对AMF和CMF设置,并分别被称为PP-A和PP-C。另一方面,底部指针仅设置一个,被AMF和CMF共用,被称为BP。图中,AMF/CMF中保存的堆栈向下方发展。
(H-3+)装入/存储单元(LSU)和数据缓冲器是循环型缓冲器,向各项目中写入一个单词的数据。
堆栈模式中,LSU可以访问数据缓冲器和数据高速缓冲存储器。
本发明实施例计算机系统的堆栈模式中,通过映像文件和数据文件(DF)实质上构成操作数堆栈最顶端的部分,其下的部分收容在数据缓冲器中,更下的部分收容在数据高速缓冲存储器中。
LSU可以高速存储在数据缓冲器中,应该存储的变量数据在数据缓冲器中保存的比例很大,因而可以进行更加有效率的计算。另外,通过在数据缓冲器中蓄积适当词量的数据,可以有效地进行下述的DF-数据缓冲器-数据高速缓冲存储器之间的Spill/Fill动作。
LSU具有保存开始的本地变量指针的未图示的寄存器(vars寄存器)。本实施例的计算机系统中,开始的本地变量的收容区域在数据缓冲器或者数据高速缓冲存储器中,并且,在vars寄存器中写入与数据高速缓冲存储器相当的地址值。即,即使全部或者一部分本地变量的数据实际上保存在数据缓冲器中,其也对应各本地变量中假定全部的本地变量溢出数据高速缓冲存储器的情况下的数据高速缓冲存储器的地址值。装入/存储操作的处理中,LSU应用vars寄存器的值进行地址的计算,判断作为对象的本地变量的收容区域是数据缓冲器还是数据高速缓冲存储器,并且存取收容区域。
LSU,可以在执行程序中所示装入/存储操作的同时,为避免上溢/下溢,使由MF/CMF及DF构成的堆栈最底的数据在其与数据缓冲器之间自动地溢出/填充。
将一个单词的数据从DF溢出到数据缓冲器,必须满足以下两个条件(不满足时必须等待其满足),(a)AMF和CMF中,与BP中所示的项目内容一致,(b)与该一致的内容相同的DF的项目地址被写入任意源寄存器字段中的项目不存在于OQ所保存的队列中。关于条件(b),作为指令中包含的操作的源寄存器适用的DF的项目地址被保存在映像文件中的状态下残留的情况中设置一定的制约,从而可以经常满足该条件。指令系列中不设置这种制约时,计算机系统必须具有,OQ中通过各源寄存器字段对照作为所述一致内容的DF的项目地址,以对所述条件(b)进行检测的构造。满足所述两条件时,如AMF/CMF的BP中所示的项目内容中表示的DF项目中写入的一单词程度的数据可以溢出到数据缓冲器中。这时,在BP值中加上1,并将所述DF的项目地址登录到FL。
相反,从数据缓冲器将一单词程度的数据填充到DF中时,从数据缓冲器取出应该填充的一单词程度的数据,在其上分配空闲的DF的一个项目,并写入其数据字段中。WCF字段为1。并且,从BP值减去1,将所述分配的DF的项目地址写入到AMF和CMF中减去1的BP所示的项目中。这时,对应写入了DF项目地址的AMF/CMF的项目的FFF的项目为1。
数据缓冲器和数据高速缓冲存储器之间,对应数据缓冲器的空闲,进行适合的溢出/填充动作。
DF-数据缓冲器-数据高速缓冲存储器之间可以一次溢出/填充多个单词的数据,因而最好具有,将AMF和CMF的两个映像文件以及数据缓冲器和数据高速缓冲存储器交错分割,并在对应的分割部分之间进行与前述相同的动作的结构。这时,为进行Spill/Fill,AMF和CMF的两个映像文件以及数据缓冲器和数据高速缓冲存储器中,每个存储体必须具有一个读/写端口,并且,DF中必须具有交错分割数值的读/写端口。
以上,是堆栈模式中进行动作所必须追加的基本功能和构造。
(4-2)堆栈模式的动作
下面,是对本发明实施例计算机系统的堆栈模式中动作的说明。
本实施例的计算机系统中,堆栈模式与寄存器模式相同,其指令也分①指令取出,②指令发行,③操作执行,④指令完成四阶段进行处理。以下就每一阶段的动作内容进行说明。
①指令取出阶段
此阶段中,指令取出单元从指令高速缓冲存储器取出指令,同时,决定下一个取出的指令的地址。
②指令发行阶段
此阶段中,基于发行指令的Op字段内容将指令中含有的操作内容写入操作队列(OQ),基于SM字段的内容来变更前进映像文件(AMF)及其推进指针PP-A的内容,并将该变更过的内容写入状态变更队列(SMQ)中。这时,指令中的s1,s2,s3,...分别对应最顶端,第二,第三,...的堆栈项目,并分别转换为变更前的AMF所对应的项目内容,f1,f2,...分别转换为从空闲表(FL)按顺序取出的DF的项目地址。
填充标记文件(FFF)的项目群中各项目的内容为0,该填充标记文件(FFF)对应作为重新成为AMF栈顶的项目附近的内容变更对象的项目范围。
写入了发行指令中包含的操作内容的OQ的项目中,队列最尾端的项目中IB字段为1,而在其他项目中为0。OQ项目的BT字段中写入从指令发行单元送出的分支标记。
伴随着指令的发行(对应f1,f2,f3,...)重新分配的DF的项目中,WCF字段写入0。
装入/存储操作时,其内容写入OQ中的同时,与进行该写入的OQ的项目地址同时被发送到LSU。
分别对应从写入OQ源寄存器字段的r0,r1,r2,...中任意一个转换而来的DF的项目地址的写入,在下一个周期中,读出该地址的DF项目内容,WCF字段为1时,将数据与DF的项目地址同时传送至OQ。OQ中,对照通过各源寄存器字段传送的DF的项目地址,向对应一致的源寄存器字段的操作数字段中写入数据。
③操作执行阶段
与寄存器模式中相同,OQ中保存的未执行操作因其可执行而得到处理。
④指令完成阶段
指令的完成,除下述部分以外,和寄存器模式中相同,按照程序上的顺序进行。
首先,指令执行时对应AMF进行的内容变更在CMF中再现,是结合堆栈模式中指令的SM字段内部的格式,即状态变更队列(SMQ)的写入格式进行。
此外,伴随着指令的完成,应该解除分配的DF项目的地址分别登录到FL,堆栈模式中,应该解除分配的DF项目群的地址由以下两组构成。通过伴随着指令的完成的CMF及PP-C的内容变更从堆栈中排除的地址,以及,写入从队列中排除的OQ项目群的目的寄存器字段中,而不写入从队列中排除的SMQ的项目中的地址。
以上是本实施例计算机系统的堆栈模式中动作的概要。
(4-3)堆栈模式中的动作例
下面,是关于具体动作例的说明。现在,通过本实施例的计算机系统中,执行由计算所述Y=A*X+B/X的以下两指令构成的程序。
指令1
Op{load f1,<4>;add f2,f1,0;load f3<1>;mul f4,f2,f3}
SM{+2:f4,f1}
指令2
Op{load f1,<2>;div f2,f1,s1;add f3,s2,f2;store<5>,f3}
SM{-2:}
图13~图19是本实施例计算机系统中处理所述程序时的状态按时间变化的示意图,下面将根据这些图进行详细的动作的说明。图13~图19中,DF6及OQ5的各项目的构造分别与图3和图4中相同。
开始的FL及AMF的内容如图13所示。这里表示,循环型的FIFO队列构造的FL7中,从队列前端开始的四个项目分别对应接着发行的指令中的f1,f2,f3,f4。并且表示,AMF中,构成堆栈的从栈项开始的各项目分别对应按顺序排列的s1,s2,...。写上p##处,写入了DF的任意项目的地址,但在本动作例的说明中没有必要特别注意。另外,为使本动作例中的说明简单化,并不进行DF和数据缓冲器之间的溢出/填充动作。因而BP值不变。
计算机系统处于图13所示状态时,进行指令1的发行。
基于指令1的Op字段内容,指令中包含的操作内容被写入OQ中,基于SM字段内容,AMF和PP-A的内容被变更,该变更后的内容被写入SMQ。这时,指令中的f1,f2,f3,f4则分别转换为从空闲表按顺序取出的p26,p34,p42,p51。关于AMF内容的变更,分别由f1,f4转换而来的p26,p51,被按顺序写入增加两项目程度的堆栈最顶端的项目开始的项目中。表示图14的OQ中写入内容的四个项目中,最后的项目处在此时队列的最尾端,因而,其IB字段为1,而在其他项目中为0。另外,这些OQ的四个项目的S字段是意味着未执行的0。
分别对应f1,f2,f3,f4并重新分配的DF的地址p26,p34,p42,p51的各项目中,WCF字段为0。
另外,本动作例中,始终由分支标记,从指令发行单元发送0。这个将写入到写入了操作内容的OQ各项目的BT字段中。
并且,指令1包含两个读入操作,因而这些内容在写入到OQ的同时,也传送到LSU。
这样,计算机系统就从图13的状态转化为图14所示的状态。
下一周期中,在指令1后接着进行指令2的发行。
和指令1的情况相同,基于指令2的Op字段的内容,指令中含有的操作内容被写入OQ中,基于SM字段的内容,AMF和PP-A的内容被变更,并将变更过的内容写入SMQ中。这时,指令中的s1,s2被写入变更前(图14)的AMF分别对应的项目内容p26和p51中,f1,f2,f3,f4分别被写入从空闲表中按顺序取出的p16,p18,p57中。因为AMF的内容不仅仅表示SM字段中负的堆栈增长量,因而不需变更其内容。
分别对应f1,f2,f3并重新分配的DF地址p16,p18,p57的各项目中,WCF字段为0。
并且,指令2中包括一个读入操作和一个存储操作,因而其内容被写入OQ的同时,还被传送到LSU。
这样,计算机系统达到图15所示的状态。
OQ中保存的未执行操作因其可执行从而进行无序处理。
图16表示经过多个周期后,指令1以前发行的指令全部完成,并且指令1中包含的四个操作全部正常完成时的计算机系统的状态。保存指令1所包含操作内容的OQ的四个项目中,分别将必需的操作数数据完全写入操作数字段中,S字段变为意味着正常完成的1,同时,向其目的寄存器字段所表示的DF的项目中写入数据,WCF字段变为1。另外,此时CMF和PP-C的内容与指令1发行之前(图13)的AMF和PP-A的内容相同。从这种状态到指令1的完成执行如下。
图16的OQ中表示写入内容的八个项目中最顶端的项目位于此时队列的前端,因而将从该项目到IB字段为1的第四项目从队列中排除。图16的SMQ中表示写入内容的两个项目中最顶端的项目位于此时队列的前端,因而基于其内容变更CMF和PP-C的内容。即,在PP-C的值上加2,并将p26和p51按顺序写入从CMF的增长两个项目程度的堆栈最顶端的项目开始的项目中。并且将SMQ中所述前端的项目从队列中排除。
另外,伴随着指令1的完成,将应该解除分配的DF的项目地址加到FL的队列中。这时,将写入从队列中排除的OQ项目群的目的寄存器字段中,而不写入从队列中排除的SMQ项目群中的p34和p42登录到FL中。(这时,没有通过伴随着指令的完成的CMF和PP-C的内容变更,而被排除出堆栈的内容。)这样,计算机系统达到图17所示的状态。
图18表示再经过多个周期后,指令2中包含的三个操作正常完成,并且关于存储操作,存储数据和存储地址同时确定完成时的计算机系统的状态。
从图18所表示时刻开始的一个周期内,指令2的完成与指令1的情况同等进行。这时,指令2含有存储操作,因而其存储的执行依赖LSU。另外,伴随着指令的完成,将应该解除分配的DF的项目地址加到FL的队列中。这时,将通过伴随着指令完成的CMF和PP-C的内容变更从堆栈中排出的p51和p26,以及写入从队列中排除的OQ的项目群的目的寄存器字段中,而不写入从队列中排除的SMQ的项目中的p16,p18,p57登录到FL。这样,计算机系统达到图19所示的状态。
如上,本实施例计算机系统中Y=A*X+B/X的计算已经完成。
(5)推测的执行
本发明的计算机系统,可以根据分支预测实现推测的执行。AMF履历文件就是为进行推测的执行而具备的文件。发行的指令中含有条件分支操作时,AMF履历文件的一个项目中写入了AMF全部项目和PP-A的内容。以下是关于本实施例计算机系统中,基于分支预测的推测的执行如何进行的说明。
本实施例计算机系统,指令发行阶段中,从开始状态到包含开始的条件分支操作的指令执行为止发行的各指令中附加作为分支标记的0,并且该分支标记0被写入到写入指令中包含的操作内容的OQ的各项目的BT字段中。
包含开始的条件分支操作的指令被发行时,为保存分支时刻的状态,AMF的全部项目和PP-A的内容被写入AMF履历文件的地址0的项目中。基于以下的分支预测的指令的流动中,附加作为分支标记的1,并且写入OQ的BT字段中。
包含两个条件分支操作的指令被发行时,开始的条件分支未确定的情况下,或者确定并相当于预测的情况下,AMF的全部项目和PP-A的内容被写入AMF履历文件的地址1的项目中。基于两段的分支预测的指令的流动中,附加作为分支标记的2,并且写入OQ的BT字段中。
如果继续进行分支预测,则以后进行同样的处理,并按地址顺序进行向AMF履历文件的写入。另外,从向AMF履历文件的地址n的项目中进行写入到进行下一次写入之间发行的指令中,附加作为分支标记的n+1。
排除分支预测时,包含该条件分支操作的指令之后发行的指令全部取消,在FFF对应的项目为0的AMF各项目和PP-A中,包含该条件分支的指令被发行时AMF履历文件中写入的内容被复制,再从位置正确的指令开始发行。这里,寄存器模式中,FFF的各项目内容均为0。另外,某一指令以下发行的指令全部取消,作为应该取消操作的目的寄存器而分配的DF的项目的地址分别返回到FL,并且最好将对应OQ和SMQ中应该取消的指令组范围内的项目全部从队列中排除。
如上所述,本发明计算机系统中,通过应用AMF履历文件,可以再次构成包含条件分支操作的指令被发行的各时刻的AMF的实质内容,因此可进行基于分支预测的推测的执行。
(6)其他实施例
本发明的计算机系统并不仅限于上述实施例,还存在其它细微构造不同的各种各样的实施例。例如下述的各实施例。
(6-1)实施例A
本发明的计算机系统的构造也可以是,将基于现有基于寄存器的或者基于堆栈的处理器指令格式的程序储存在指令高速缓冲存储器中,执行时在指令发行阶段的前段,转换为依照(2)中所规定的指令格式。
(6-2)实施例B
本发明的计算机系统的构造也可以是,发行各指令时,将该指令完成时必须解除分配的DF的项目地址,或者决定其的信息预先记入状态变更队列或者专用队列中。
(6-3)实施例C
可以实现一种计算机系统,具有寄存器型前进映像文件,完成映像文件,堆栈型前进映像文件,完成映像文件,两个推进指针以及底部指针,可以表示指令的状态变更字段中,寄存器型的映像文件的内容变更和堆栈型的映像文件以及推进指针的内容变更。这时,必须具有可以写入各项目中寄存器型的前进映像文件,堆栈型的前进映像文件以及其推进指针内容的前进映像履历文件。
(6-4)实施例D
基于寄存器的超量结构中可考虑的各种各样的变形很多,都可以适用于基于本发明的计算机系统。例如以下所述。
①各功能单元输入段上分别设有专用位置从而实现操作窗口,并且设置重整缓冲器的。
②整数数据用/浮点用,或者32位数据用/64位数据用的按数据类型设有数据文件以及空闲表,功能单元组等的。
③设置有多组的前进映像文件,完成映像文件,以及填充标记文件的构造,并变更关联转换的前后应用的映像文件组的。
④设置有多组的前进映像文件,完成映像文件,填充标记文件,以及状态变更队列等,具有可进行多个串线并行处理结构的。
通过本发明可实现高性能的计算机系统。另外,现有的基于寄存器或者基于堆栈的处理器的机器语言所记述的程序,可以简便地转换为本发明计算机系统的指令格式。

Claims (9)

1.一种计算机系统的数据处理方法,所述计算机系统包括:在
各项目中写入数据的数据保持机构;
在各项目中写入所述数据保持机构项目地址的前进映像保持机构和完成映像保持机构;
作为保持待执行的操作内容的缓冲器的操作窗口;
写入每个时钟周期的所述前进映像保持机构状态变更内容的状态变更队列;
执行操作的功能单元组,
所述数据处理方法的特征在于:分别在一个时钟周期内进行所述前进映像保持机构的内容变更、将所述变更的内容向所述状态变更队列的写入、以及与所述前进映像保持机构的所述内容变更组合的操作组的内容向所述操作窗口的写入;
所述操作窗口中保持的未执行操作分别以无序的方式,通过所述功能部件群的任意一个来执行;
与所述状态变更队列前头部分的内容所示的该前进映像保持机构的内容变更组合的操作组中包含的操作全部正常完成后,根据所述状态变更队列的所述前头部分的内容,进行所述完成映像保持机构的内容变更,并从所述状态变更队列中将所述前头部分排除。
2.根据权利要求1所述的数据处理方法,其特征在于,为访问所述前进/完成映像保持机构而显示项目和地址。
3.根据权利要求1所述的数据处理方法,其特征在于,所述前进映像保持机构和完成映像保持机构用于保持堆栈,为访问所述前进/保持机构完成映像文件而表示从栈顶开始的相对位置。
4.一种计算机系统,包括:在各项目中写入数据的数据保持机构;
在各项目中写入所述数据保持机构项目地址的前进映像保持机构和完成映像保持机构;
作为保持待执行的操作内容的缓冲器的操作窗口;
写入每个时钟周期的所述前进映像保持机构状态变更内容的状态变更队列;
执行操作的功能单元组,
其特征在于:分别在一个时钟周期内进行所述前进映像保持机构的内容变更、将所述变更的内容向所述状态变更队列的写入、以及与所述前进映像保持机构的所述内容变更组合的操作组的内容向所述操作窗口的写入;
所述操作窗口中保持的未执行操作分别以无序的方式,通过所述功能部件群的任意一个来执行;
与所述状态变更队列前头部分的内容所示的该前进映像保持机构的内容变更组合的操作组中包含的操作全部正常完成后,根据所述状态变更队列的所述前头部分的内容,进行所述完成映像保持机构的内容变更,并从所述状态变更队列中将所述前头部分排除。
5.根据权利要求4所述的计算机系统,其特征在于,为访问所述前进/完成映像保持机构而显示项目和地址。
6.根据权利要求4所述的计算机系统,其特征在于,所述前进映像保持机构和完成映像保持机构用于保持堆栈,为访问所述前进/保持机构完成映像文件而表示从栈顶开始的相对位置。
7.一种计算机系统,包括:
在各项目中写入数据的数据保持机构;
在各项目中写入所述数据保持机构项目地址的前进映像保持机构和完成映像保持机构;
写入每个周期的所述前进映像保持机构的状态变更内容的状态变更队列;
无序处理已发行的操作的机构,
其特征在于:分别在一个时钟周期内进行所述前进映像保持机构的内容变更、将所述变更的内容向所述状态变更队列的写入、以及与所述前进映像保持机构的所述内容变更组合的操作组的发行;
与所述状态变更队列前头部分的内容所示的该前进映像保持机构的内容变更组合的操作组中包含的操作全部正常完成后,根据所述状态变更队列的所述前头部分的内容,进行所述完成映像保持机构的内容变更,并从所述状态变更队列中将所述前头部分排除。
8.根据权利要求7所述的计算机系统,其特征在于,基于项目和地址分别访问所述前进映像保持机构及所述完成映像保持机构。
9.根据权利要求7所述的计算机系统,其特征在于,所述前进映像保持机构和所述完成映像保持机构分别用于保持堆栈,并根据从栈顶开始的相对位置被分别访问。
CNB018149650A 2000-08-31 2001-08-29 计算机系统 Expired - Fee Related CN1227585C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2000263170 2000-08-31
JP263170/2000 2000-08-31
JP263170/00 2000-08-31

Publications (2)

Publication Number Publication Date
CN1449521A CN1449521A (zh) 2003-10-15
CN1227585C true CN1227585C (zh) 2005-11-16

Family

ID=18750755

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB018149650A Expired - Fee Related CN1227585C (zh) 2000-08-31 2001-08-29 计算机系统

Country Status (7)

Country Link
US (1) US7975127B2 (zh)
EP (1) EP1324192B1 (zh)
JP (1) JP3638584B2 (zh)
KR (1) KR100804107B1 (zh)
CN (1) CN1227585C (zh)
CA (1) CA2420785C (zh)
WO (1) WO2002019101A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2380003A (en) * 2001-07-03 2003-03-26 Digital Comm Technologies Ltd Method and apparatus for executing stack based programs using a register based processor
GB2377288A (en) * 2001-07-06 2003-01-08 Digital Comm Technologies Ltd Executing branch instructions of a stack based program on a register based processor
JP2004094533A (ja) * 2002-08-30 2004-03-25 Hajime Seki 計算機システム
US7310722B2 (en) * 2003-12-18 2007-12-18 Nvidia Corporation Across-thread out of order instruction dispatch in a multithreaded graphics processor
US7571302B1 (en) * 2004-02-04 2009-08-04 Lei Chen Dynamic data dependence tracking and its application to branch prediction
US8495613B2 (en) * 2005-12-22 2013-07-23 Microsoft Corporation Program execution service windows
US20090327661A1 (en) * 2008-06-30 2009-12-31 Zeev Sperber Mechanisms to handle free physical register identifiers for smt out-of-order processors
CN105427368B (zh) * 2015-11-17 2018-03-20 上海兆芯集成电路有限公司 数据单元的关联性检查方法以及使用该方法的装置
CN105243685B (zh) * 2015-11-17 2018-01-02 上海兆芯集成电路有限公司 数据单元的关联性检查方法以及使用该方法的装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5694564A (en) * 1993-01-04 1997-12-02 Motorola, Inc. Data processing system a method for performing register renaming having back-up capability
US5499352A (en) * 1993-09-30 1996-03-12 Intel Corporation Floating point register alias table FXCH and retirement floating point register array
US5841999A (en) * 1996-04-17 1998-11-24 International Business Machines Corporation Information handling system having a register remap structure using a content addressable table
US5903740A (en) * 1996-07-24 1999-05-11 Advanced Micro Devices, Inc. Apparatus and method for retiring instructions in excess of the number of accessible write ports
US6088786A (en) * 1997-06-27 2000-07-11 Sun Microsystems, Inc. Method and system for coupling a stack based processor to register based functional unit
US5961636A (en) * 1997-09-22 1999-10-05 International Business Machines Corporation Checkpoint table for selective instruction flushing in a speculative execution unit
US6009509A (en) * 1997-10-08 1999-12-28 International Business Machines Corporation Method and system for the temporary designation and utilization of a plurality of physical registers as a stack
US5974531A (en) * 1998-02-17 1999-10-26 Industrial Technology Research Institute Methods and systems of stack renaming for superscalar stack-based data processors
US6134573A (en) * 1998-04-20 2000-10-17 Ip-First, L.L.C. Apparatus and method for absolute floating point register addressing
US6237086B1 (en) * 1998-04-22 2001-05-22 Sun Microsystems, Inc. 1 Method to prevent pipeline stalls in superscalar stack based computing systems
US6502184B1 (en) * 1998-09-02 2002-12-31 Phoenix Technologies Ltd. Method and apparatus for providing a general purpose stack
US6256725B1 (en) * 1998-12-04 2001-07-03 Agere Systems Guardian Corp. Shared datapath processor utilizing stack-based and register-based storage spaces
US6564312B1 (en) * 1999-06-15 2003-05-13 Koninklijke Philips Electronics N.V. Data processor comprising an arithmetic logic unit
US6633970B1 (en) * 1999-12-28 2003-10-14 Intel Corporation Processor with registers storing committed/speculative data and a RAT state history recovery mechanism with retire pointer

Also Published As

Publication number Publication date
CA2420785C (en) 2012-07-17
CN1449521A (zh) 2003-10-15
CA2420785A1 (en) 2003-02-26
EP1324192B1 (en) 2012-11-07
EP1324192A1 (en) 2003-07-02
KR20030029867A (ko) 2003-04-16
KR100804107B1 (ko) 2008-02-18
WO2002019101A1 (fr) 2002-03-07
EP1324192A4 (en) 2006-03-22
JP3638584B2 (ja) 2005-04-13
US20030177337A1 (en) 2003-09-18
US7975127B2 (en) 2011-07-05

Similar Documents

Publication Publication Date Title
CN1107911C (zh) 文件管理装置和方法
CN1303536C (zh) 执行自高速缓存的快速推测式加载运算的微处理器及方法
CN1135468C (zh) 对存储设备中信号数据字执行数字信号处理的方法和装置
CN1103961C (zh) 协处理器的数据访问控制装置和方法
CN1280714C (zh) 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器
CN1120425C (zh) 存储器控制器和存储器控制方法
CN1253790C (zh) 指令调度方法和指令调度设备
CN1498367A (zh) 信息处理装置、存储器管理装置、存储器管理方法及信息处理方法
CN1910601A (zh) 限制条件解决方法、限制条件解决装置、以及限制条件解决系统
CN1916961A (zh) 可中断图形处理单元及其控制方法
CN1916962A (zh) 存储和回存状态上下文在图形处理单元的方法和装置
CN1517869A (zh) 处理器、运算处理方法和优先度决定方法
CN1641567A (zh) 自堆栈快取存储器进行快速推测性弹出操作方法及装置
CN1227585C (zh) 计算机系统
CN1532709A (zh) 数据存储器高速缓存装置及数据存储器高速缓存系统
CN1991798A (zh) 半导体存储装置
CN1022591C (zh) 信号处理装置的地址处理器
CN1178490C (zh) 数据处理方法、数据处理装置
CN1231740A (zh) 数据处理装置中的寄存器寻址
CN1107908C (zh) 汇编语言源程序生成方法和系统
CN1104679C (zh) 数据处理装置和数据处理方法
CN1491383A (zh) 使用协处理器的数据处理
CN1236382C (zh) 通过无序来处理栈基址的指令的计算机系统
CN1627252A (zh) 微处理机与随机存取快取记忆体的快速弹出装置及其方法
CN1226325A (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: 20051116

Termination date: 20200829

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