Method for buffering and issuing instructions for use in
high-performance superscalar microprocessors
    1.
    发明授权
    Method for buffering and issuing instructions for use in high-performance superscalar microprocessors 失效
    缓冲和发出用于高性能超标量微处理器的指令的方法

    公开(公告)号:US5819308A

    公开(公告)日:1998-10-06

    申请号:US807297

    申请日:1997-02-27

    IPC分类号: G06F9/38 G06F12/00

    摘要: An improved method and apparatus for buffering and issuing instructions for use with superscalar microprocessors are disclosed. The method comprises the steps of: (a) obtaining an instruction buffer comprising a plurality of entries, each entry comprising a random access memory (RAM) portion and a content addressable memory (CAM) portion for storing result data and source operand tag, respectively, wherein the CAM portion also contains means for linking with an associated RAM portion and the result data contains an instruction; (b) providing a result bus capable of transmitting the result data and a result tag; (c) matching the result tag in the result bus with the source operand tag in the CAM, and writing the result data into the RAM portion of an entry if the result tag in the result bus matches the source operand tag of an associated CAM portion; and (d) issuing ready instructions and changing the source operand tag in a corresponding CAM in such a manner that the entry containing the CAM will be identified as an empty entry so as to all new instruction to be written thereto. Because instructions are stored in the RAM in an out-of-order, a linear systolic array is provided so as to keep the sequence of instructions in order. The linear systolic array, which can be easily compressed, allows the prioritization of instructions for issue among ready instructions, and the handling branch mis-prediction and faults to be implemented.

    摘要翻译: 公开了一种改进的用于缓冲和发出与超标量微处理器一起使用的指令的方法和装置。 该方法包括以下步骤:(a)获得包括多个条目的指令缓冲器,每个条目分别包括用于存储结果数据和源操作数标签的随机存取存储器(RAM)部分和内容寻址存储器(CAM)部分 ,其中所述CAM部分还包含用于与相关联的RAM部分链接的装置,并且所述结果数据包含指令; (b)提供能够发送结果数据和结果标签的结果总线; (c)将结果总线中的结果标签与CAM中的源操作数标签进行匹配,如果结果总线中的结果标签与相关联的CAM部分的源操作数标签匹配,则将结果数据写入条目的RAM部分 ; 以及(d)以相应CAM的方式发出就绪指令并更改源操作数标签,使得包含CAM的条目将被识别为空条目,以便将所有新的指令写入。 由于指令以无序的方式存储在RAM中,因此提供了线性收缩阵列,以便按顺序保持指令序列。 可以容易地压缩的线性收缩阵列允许在准备指令之间发出指令的优先次序,以及要实现的处理分支误预测和故障。

    Apparatus and method for parallel decoding of variable-length
instructions in a superscalar pipelined data processing system
    2.
    发明授权
    Apparatus and method for parallel decoding of variable-length instructions in a superscalar pipelined data processing system 失效
    用于在超标量流水线数据处理系统中并行解码可变长度指令的装置和方法

    公开(公告)号:US5941980A

    公开(公告)日:1999-08-24

    申请号:US805660

    申请日:1997-02-27

    IPC分类号: G06F9/30 G06F9/318 G06F9/38

    摘要: A process is provided for determining the beginning and ending of each instruction of a variable length instruction. Data lines are stored in a first memory area which illustratively is an instruction cache. Each data line comprises a sequence of data words that are stored at sequential address in a main memory. The data lines contain multiple encoded variable length instructions that are contiguously stored in the main memory. Multiple indicators are stored in a second memory area, including one indicator associated with each data word of the data lines stored in the first memory area. Each indicator indicates whether or not its associated data word is the initial data word of a variable length instruction. A sequence of data words may be fetched from the cache. The fetched sequence of data words includes a starting data word and at least the number of data words in the longest permissible instruction. Plural indicators (i.e., a vector of indicators) are also fetched from the second memory area including one indicator associated with each of the data words of the fetched sequence. Using the indicators as delimiters of the sequence of to-be-decoded instructions, one or more non-overlapping subsequences of the sequence of data words are identified, wherein each subsequence of data words is comprised in a different, sequential to-be-decoded instruction. Each subsequence of data words is then decoded as a separate instruction.

    摘要翻译: 提供了用于确定可变长度指令的每个指令的开始和结束的处理。 数据线被存储在说明性地是指令高速缓存的第一存储器区域中。 每个数据线包括存储在主存储器中的顺序地址处的数据字序列。 数据线包含连续存储在主存储器中的多个编码的可变长度指令。 多个指示符存储在第二存储器区域中,包括与存储在第一存储器区域中的数据线的每个数据字相关联的一个指示符。 每个指示符指示其关联的数据字是否是可变长度指令的初始数据字。 数据字序列可以从缓存中取出。 所获取的数据字序列包括起始数据字和至少在最长允许指令中的数据字数。 还从第二存储区域取出多个指示符(即,指示符向量),包括与获取的序列的每个数据字相关联的一个指示符。 使用指示符作为待解码指令序列的定界符,识别数据字序列中的一个或多个非重叠子序列,其中数据字的每个子序列被包括在不同的,顺序的待解码的 指令。 数据字的每个子序列然后被解码为单独的指令。