KR100632317B1 - Method and system for buffering instructions in processor - Google Patents
Method and system for buffering instructions in processor Download PDFInfo
- Publication number
- KR100632317B1 KR100632317B1 KR1019990018393A KR19990018393A KR100632317B1 KR 100632317 B1 KR100632317 B1 KR 100632317B1 KR 1019990018393 A KR1019990018393 A KR 1019990018393A KR 19990018393 A KR19990018393 A KR 19990018393A KR 100632317 B1 KR100632317 B1 KR 100632317B1
- Authority
- KR
- South Korea
- Prior art keywords
- instruction
- decode stage
- counter
- count
- instructions
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 16
- 230000003139 buffering effect Effects 0.000 title claims abstract description 7
- 239000000872 buffer Substances 0.000 claims abstract description 47
- 238000001514 detection method Methods 0.000 claims 1
- 230000004044 response Effects 0.000 claims 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical group [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 229910052710 silicon Inorganic materials 0.000 description 8
- 239000010703 silicon Substances 0.000 description 8
- 230000006870 function Effects 0.000 description 3
- 230000004075 alteration Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
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)
Abstract
본 발명의 일 실시예에 따르면, 디코드 스테이지를 포함하는 파이프라인을 갖는 프로세서에서 명령어들을 버퍼링하는 방법은 디코드 스테이지의 스톨링을 검출하고, 디코드 스테이지의 스톨 상태가 해제될 때까지 메모리내의 명령어에 대한 사전 페치를 재발행하고, 디코드 스테이지의 스톨 상태가 해제된 후에 상기 페치된 명령어를 명령어 버퍼 내에 기록하는 것을 포함한다.According to one embodiment of the invention, a method of buffering instructions in a processor having a pipeline comprising a decode stage detects stalling of the decode stage, and for instructions in the memory until the stall state of the decode stage is released. Re-issuing the prefetch and writing the fetched instructions into the instruction buffer after the stall state of the decode stage has been released.
파이프라인, 디코드 스테이지, 명령어 버퍼, 프로그램 카운터, 메모리 위치Pipeline, decode stage, instruction buffer, program counter, memory location
Description
도 1은 본 발명의 교시에 따른 컴퓨터 시스템의 블럭도.1 is a block diagram of a computer system in accordance with the teachings of the present invention.
도 2는 파이프라인이 스톨 상태가 아닌 예로서, 도 1에 도시된 파이프라인의 여러 스테이지들에 대하여 도 1의 컴퓨터 시스템의 프로그램 메모리로부터 얻어진 명령어들의 위치를 도시하는 타이밍도.2 is a timing diagram illustrating the location of instructions obtained from the program memory of the computer system of FIG. 1 with respect to the various stages of the pipeline shown in FIG. 1 as an example where the pipeline is not stalled;
도 3은 파이프라인이 간헐적으로 스톨 상태가 되는 예로서, 도 1에 도시된 파이프라인의 여러 스테이지들에 대하여 도 1의 컴퓨터 시스템의 프로그램 메모리로부터 얻어진 명령어들의 위치를 도시하는 타이밍도.3 is a timing diagram illustrating the location of instructions obtained from the program memory of the computer system of FIG. 1 with respect to the various stages of the pipeline shown in FIG. 1 as an example where the pipeline is intermittently stalled.
도 4는 도 1에 도시된 프로세서의 프리페치 스테이지 및 페치 스테이지를 추가적으로 상세하게 도시하는 블럭도.4 is a block diagram illustrating additional details of the prefetch stage and fetch stage of the processor shown in FIG.
<도면의 주요 부분에 대한 부호의 설명><Explanation of symbols for the main parts of the drawings>
10 : 컴퓨터 시스템10: computer system
12 : 프로세서12: processor
14 : 메모리 시스템14: memory system
16 : 프로그램 메모리16: program memory
20 : 파이프라인20: pipeline
24 : 프리페치 스테이지24: prefetch stage
26 : 페치 스테이지26: fetch stage
28 : 디코드 스테이지28: decode stage
30 : 판독 스테이지30: reading stage
32 : 실행 스테이지32: execution stage
34 : 저장 스테이지34: storage stage
본 발명은 일반적으로 프로세서에 관한 것으로, 특히 프로세서 내에서 명령어를 버퍼링하기 위한 방법 및 그 시스템에 관한 것이다.The present invention relates generally to a processor, and more particularly, to a method and a system for buffering instructions within a processor.
보다 큰 효율성을 갖기 위해 지금의 대다수 프로세서는 프로세서 내에서 파이프라인을 이용한다. 파이프라인을 사용하여, 태스크(task)는 여러개의 순차 서브태스크로 나누어진다. 태스크의 순차 서브태스크로의 분할은 주어진 시간에 많은 프로그램 명령어들을 페칭하고, 디코딩하여 실행할 수 있도록 한다. 그러므로, 어떤 특정한 시간에, 파이프라인에서의 여러 스테이지에서 몇 개의 명령어들이 처리될 수 있다. 이와 같은 많은 프로세서들은 디코드 스테이지가 있는 파이프라인을 포함한다. 파이프라인의 디코드 스테이지에서, 프로그램 메모리로부터 얻어진 명령어는 실행될 수 있도록 디코드된다. 명령어가 디코드된 후에는, 프로세서 내에 명령어를 저장할 필요는 없다. 그러나, 명령어가 디코드될 때까지, 프로그램 메모리로부터 얻어진 명령어는 저장되어야 한다. 명령어가 디코드될 때까지 저장하기 위하여, 대다수 프로세서는 명령어 버퍼를 이용한다.To be more efficient, most modern processors now use pipelines within the processor. Using a pipeline, tasks are divided into sequential subtasks. The division of tasks into sequential subtasks allows a large number of program instructions to be fetched, decoded and executed at any given time. Therefore, at any particular time, several instructions can be processed at various stages in the pipeline. Many such processors include a pipeline with a decode stage. At the decode stage of the pipeline, the instructions obtained from the program memory are decoded for execution. After the instructions are decoded, there is no need to store the instructions in the processor. However, until the instructions are decoded, the instructions obtained from the program memory must be stored. In order to store instructions until they are decoded, most processors use instruction buffers.
종래의 명령어 버퍼는 디코드 스테이지에 이르기까지의 스테이지와 같은 개수의 명령어를 저장하기에 충분한 레지스터들을 포함한다. 예를 들어, 파이프라인이 처음 3개의 스테이지로서 프리페치, 페치 및 디코드 스테이지를 같는다면, 관련된 명령어 버퍼는 이 3개의 명령어를 저장하기 위한 3개의 레지스터를 가질 것이다. 이와 같이, 디코드 스테이지가 스톨(stall) 상태라고 판단되는 경우에 획득중인 명령어들을 명령어 버퍼 내의 상기 개수의 레지스터들이 보존할 수 있기 때문에 종래와 같은 방식으로 사용된 것이다.Conventional instruction buffers contain enough registers to store the same number of instructions as the stage up to the decode stage. For example, if the pipeline has the same prefetch, fetch, and decode stages as the first three stages, the associated instruction buffer would have three registers to store these three instructions. As such, when the decode stage is determined to be in a stall state, since the number of registers in the instruction buffer can be stored, the instructions being obtained are used in a conventional manner.
명령어 버퍼의 사용은 정보를 손실하지 않고 처리를 재개할 수 있도록 하지만, 이것은 문제점을 수반한다. 예를 들어, 공통 명령어 페치(common instruction fetches) 크기가 증가하기 때문에, 명령어 버퍼 내의 각 레지스터가 크기면에서 증가되며, 추가적인 실리콘 영역을 필요로 하게 된다.The use of an instruction buffer allows for resumption of processing without losing information, but this involves a problem. For example, as the common instruction fetches increase in size, each register in the instruction buffer increases in size, requiring additional silicon regions.
따라서, 프로세서에서 명령어를 버퍼링하기 위한 향상된 방법 및 그 시스템에 대한 필요가 발생되었다. 본 발명은 종래의 시스템과 방법의 단점을 해결하려는 목적으로 프로세서에서 명령어를 버퍼링하기 위한 시스템 및 방법을 제공한다.Thus, there is a need for an improved method and system for buffering instructions in a processor. The present invention provides a system and method for buffering instructions in a processor for the purpose of solving the disadvantages of conventional systems and methods.
본 발명의 일 실시예에 따르면, 디코드 스테이지를 갖는 파이프라인이 있는 프로세서에서 명령어를 버퍼링하는 방법은 디코드 스테이지의 스톨링을 검출하고, 디코드 스테이지의 스톨 상태가 해제될 때까지 메모리 내의 명령어에 대한 사전 페치를 재발행한(reissuing) 다음, 디코드 스테이지의 스톨 상태가 해제된 후에 페치 명령어를 상기 명령어 버퍼 내로 기록하는 것을 포함한다.According to one embodiment of the invention, a method of buffering instructions in a processor with a pipeline having a decode stage detects stalling of the decode stage and advances to instructions in memory until the stall state of the decode stage is released. Reissuing the fetch, and then writing the fetch instruction into the instruction buffer after the stall state of the decode stage is released.
본 발명의 또 다른 실시예에 따르면, 프로세서 파이프라인은 디코드 스테이지 이전의 복수의 순차 스테이지들, 및 이 순차 스테이지들의 개수 이하의 개수를 갖는 명령어들을 동시에 저장할 수 있는 제한된 명령어 버퍼를 포함한다. 또한, 프로세서 파이프라인은 카운터 시스템을 포함한다. 카운터 시스템은 제한된 명령어 버퍼에 수신되는 명령어를 저장하는 메모리 위치의 어드레스를 지정하는 카운트를 저장하기 위한 카운터를 포함한다. 또한, 카운터 시스템은 디코드 스테이지의 상태에 기초하여 카운터의 카운트를 조정할 수 있다. 복수의 순차 스테이지들은 카운트에 의해 지정된 어드레스에서 명령어를 페치할 수 있는 페치 스테이지를 포함한다.According to another embodiment of the present invention, the processor pipeline includes a plurality of sequential stages before the decode stage, and a limited instruction buffer capable of simultaneously storing instructions having a number less than or equal to the number of sequential stages. The processor pipeline also includes a counter system. The counter system includes a counter for storing a count specifying an address of a memory location that stores instructions received in a limited instruction buffer. The counter system may also adjust the count of the counter based on the state of the decode stage. The plurality of sequential stages includes a fetch stage that can fetch an instruction at an address specified by a count.
본 발명의 실시예들은 기술적인 많은 장점을 갖는다. 예를 들어, 본 발명의 일 실시예에서, 프로그램 메모리로부터 페치 명령어들을 버퍼링하기 위하여 종래의 더 큰 명령어 버퍼 대신에 제한된 명령어 버퍼가 사용될 수 있다. 더 작은 크기의 한정된 명령어 버퍼는 장치가 보다 소형화되도록 실리콘 영역을 축소하며, 프로세서의 다른 영역들 내에 이와 같은 실리콘 영역을 사용할 수 있도록 한다.Embodiments of the present invention have many technical advantages. For example, in one embodiment of the present invention, a limited instruction buffer may be used instead of the conventional larger instruction buffer to buffer fetch instructions from program memory. The smaller sized limited instruction buffer shrinks the silicon area to make the device smaller, and allows such silicon area to be used in other areas of the processor.
본 기술 분야의 숙련된 기술자라면, 첨부된 도면, 명세서 및 청구항으로부터 이와 다른 기술적 특징들을 용이하게 알 수 있을 것이다.Those skilled in the art will readily recognize other technical features from the accompanying drawings, the specification and the claims.
본 발명의 실시예들 및 그 장점들은 도 1 내지 4를 참조하여 잘 이해될 수 있으며, 여러 도면들의 동일한 대응 부분들은 동일한 참조 번호를 사용한다.Embodiments of the present invention and their advantages can be better understood with reference to FIGS. 1 to 4, wherein like corresponding parts in the various figures use the same reference numerals.
도 1은 본 발명의 교시에 따른 프로세서의 블럭도이다. 컴퓨터 시스템(10)은 프로세서(12) 및 메모리 시스템(14)을 포함한다. 프로세서(12)는 액세스 메모리 시스템(14)으로 동작할 수 있다. 메모리 시스템(14)은 프로그램 메모리(16) 및 데이타 메모리(16) 모두를 포함할 수 있다. 프로세서(12)는 파이프라인(20)을 포함한다. 파이프라인(20)은 프리페치 스테이지(24), 페치 스테이지(26), 디코드 스테이지(28), 판독 스테이지(30), 실행 스테이지(32) 및 저장 스테이지(34)를 포함한다. 또한, 프로세서(12)는 부가적인 프로세싱 소자(21)를 포함할 수도 있다.1 is a block diagram of a processor in accordance with the teachings of the present invention.
프리페치 스테이지(24)는 명령어를 판독하기 위하여 프로그램 메모리(16)에서 메모리 위치의 어드레스를 판정한다. 페치 스테이지(26)는 프리페치 스테이지(24)에 의해 판정된 프로그램 메모리 위치에 있는 명령어를 판독한다. 페치 스테이지(24)는 프로그램 메모리(16)로부터 페치 명령어들을 버퍼링하기 위하여 제한된 명령어 버퍼(50)를 포함한다. 제한된 명령어 버퍼(50)는 도 4에 도시된다. 본 실시예에서, 제한된 명령어 버퍼(50)는 제1 레지스터(52) 및 제2 레지스터(54)를 포함한다. 본 발명에 따르면, 제한된 명령어 버퍼(50)는 디코드 스테이지(28)에 앞선 파이프라인(20) 내의 스테이지들의 개수와 동일한 개수의 레지스터들을 포함하는데, 본 실시예에서는 2개이다.
디코드 스테이지(28)는 프로그램 메모리(16)로부터 얻어진 명령어를 디코드한다. 판독 스테이지(30)는 디코드 스테이지(28)에 의해 디코드된 명령어의 실행에 필요한 데이타를 데이타 메모리(18)로부터 판독한다. 판독 스테이지(30)는 하나 이상의 스테이지로 대체될 수 있다. 예를 들어, 판독 스테이지(30)는 데이타가 판독될 데이타 메모리(18) 내의 위치를 판단하는데 필요한 계산을 수행하는 분리 스테이지 및 이와 같은 데이타를 판독하는 기능을 수행하는 분리 스테이지로 대체될 수 있다. 실행 스테이지(32)는 디코드 스테이지(28)에 의해 디코드된 명령어를 실행하는 기능을 수행한다. 저장 스테이지(34)는 결과적으로 명령어 실행 후에 기록될 것이 요구될 수 있는 소정의 데이타를 기록하는 기능을 수행한다.
디코드 스테이지(28)에 앞선 스테이지들의 개수와 같은 개수의 레지스터들을 갖는 제한된 명령어 버퍼의 사용은 프로세서(12)용 실리콘 영역 요구를 감소시킨다. 프로세서(12)용 실리콘 영역 요구의 감소는 장점인 것이 일반적이다. 본 발명에 따르면, 제한된 명령어 버퍼는, 프로그램 메모리(16) 내의 명령어용 페치들을 재발행함(reissuing)으로써, 도 2 내지 4를 참조하여 이하에서 자세히 설명하는 바와 같이, 프로페서 성능을 결과적으로 손실시키지 않고 사용될 수 있다.The use of a limited instruction buffer with the same number of registers as the number of stages preceding the
도 2는 파이프라인(20)이 스톨 상태가 아닌 일 예로서, 파이프라인(20)의 여러 스테이지에 관하여 프로그램 메모리(16)로부터 얻어진 명령어들의 위치를 도시하는 타이밍도이다. 정상 처리시에, 프로세서(12)는 순차적인 실행용 어드레스들을 갖는 프로그램 메모리(16) 내의 위치들로부터 명령어들을 연속적으로 페치한다. 어떠한 이유로 프로세서(12)가 스톨 상태가 된다면, 프로세서(12)는 프로그램 메모리(16)로부터 계속해서 명령어들을 페치한다. 예를 들어, 프로세서(12)가 데이타 메모리(18)로부터 데이타를 수신하기 위해 대기하는 동안은 스톨 상태일 수 있다. 이와 같은 경우에, 제한된 명령어 버퍼(50)는 재개 처리를 위해 대기하는 동안 2개의 명령어들을 누산(accumulation)할 수 있다. 제한된 명령어 버퍼(50)와 결합된, 프리페치 스테이지(24), 페치 스테이지(26) 및 디코드 스테이지(28)의 동작은 스톨 상태가 발생하지 않는 예에 대한 도 2를 참조하여 이하에서 설명한다.FIG. 2 is a timing diagram illustrating the location of instructions obtained from
제1 클락 주기동안, 제1 명령어 I1에 대응하는 메모리 위치에 대한 어드레스가 계산된다. 제2 클락 주기동안, 제2 명령어 I2에 대한 어드레스가 계산되고, 명령어 I1의 페칭이 개시된다. 제3 클락 주기동안, 제3 명령어 I3에 대응하는 메모리 위치에 대한 어드레스가 계산되고, 명령어 I1의 페칭이 완료되고, I2의 페칭이 개시되며, 프로세서(12)가 스톨 상태가 아니기 때문에 명령어 I1의 디코딩이 개시되고 완료된다.
제3 클락 주기동안, 제한된 명령어 버퍼(50)의 레지스터(52)는 명령어 I1을 저장한다. 제한된 명령어 버퍼(50)는 디코드될 현재 명령어를 저장하는 제한된 명령어 버퍼(50) 내의 레지스터를 지정하는 포인터(56)를 포함한다. 명령어 포인터(56)는 레지스터(52)에 대한 포인팅으로서 도 4에 도시된다. 이와 같은 제3 클락 주기동안, 포인터(56)는 레지스터(52)를 지정한다. 제4 클락 주기동안, 제4 명령어 I4에 대한 어드레스가 계산되고, 명령어 I2의 페칭이 완료되며, 명령어 I3의 페칭이 개시되고, 명령어 I2의 디코딩이 개시되고 완료된다. 제4 클락 주기동안, 명령어 I1이 또 다른 명령어에 의해 중복 기록되지 않았기 때문에, 레지스터(52)는 계속해서 명령어 I1을 저장하며, 레지스터(54)는 명령어 I2를 저장하고, 포인터(56)는 레지스터(54)를 지정한다.During the first clock period, the address for the memory location corresponding to the first instruction I 1 is calculated. During the second clock period, the address for the second instruction I 2 is calculated and the fetching of the instruction I 1 is initiated. During the third clock period, the address for the memory location corresponding to the third instruction I 3 is calculated, the fetching of the instruction I 1 is completed, the fetching of I 2 is started, and the
During the third clock period, the
제5 클락 주기동안, 제5 명령어 I5에 대한 어드레스가 계산되고, 명령어 I3의 페칭이 완료되고, 명령어 I4의 페칭이 개시되고, 명령어 I3의 디코딩이 개시되고 완료된다. 제5 클락 주기 동안, 명령어 I3는 레지스터(52)에 저장되고, 제한된 명령어 버퍼(50)의 포인터(56)는 레지스터(52)를 지정한다. 제6 클락 주기동안, 제6 명령어 I6에 대한 어드레스가 계산되고, 명령어 I4의 페칭이 완료되고, 명령어 I5의 페칭이 개시되고, 명령어 I4의 디코딩이 개시되고 완료되며, 명령어 I3와 관련된 모든 데이타가 판독된다. 제6 클락 주기동안, 명령어 I4는 레지스터(54)에 저장되며, 제한된 명령어 버퍼(50)의 포인터(56)는 레지스터(54)를 지정한다.During the fifth clock period, the address for the fifth instruction I 5 is calculated, the fetching of the instruction I 3 is completed, the fetching of the instruction I 4 is started, and the decoding of the instruction I 3 is started and completed. During the fifth clock period, instruction I 3 is stored in
명령어들을 얻고 처리하는 상술한 순서에 있어서, 제한된 명령어 버퍼(50)는 명령어가 디코드되어질 2개의 레지스터들(52, 54) 중 하나에 명령어를 저장한다. 상술한 순서에서 프로세서(12)는 스톨 상태가 아니기 때문에, 제한된 명령어 버퍼(50)는, 페치를 재발행할 필요없이 부가적인 순차 명령어들을 계속해서 페칭하기에 충분하다. 간헐적인 스톨 주기동안 프로세서(12)의 동작은 도 3을 참조하여 설명된다.In the above-described order of obtaining and processing instructions, the
도 3은 파이프라인(20)의 스톨 상태가 간헐적으로 발생하는 예로서, 파이프라인(20)의 여러 스테이지들에 대한 프로그램 메모리(16)로부터 얻어진 명령어들의 위치를 도시하는 타이밍도이다. 프리페치 스테이지(24), 페치 스테이지(26), 디코드 스테이지(28) 및 제한된 명령어 버퍼(50)의 동작은 파이프라인(20)에서 간헐적인 스톨이 발생하는 예에 대하여 설명된다. 제1 클락 주기동안, 제1 명령어 I1에 대한 어드레스가 계산된다. 도 3의 마지막 행에서 보여지는 바와 같이, 이 제1 클락 주기동안 프로세서(12)의 스톨은 발생하지 않는다. 제2 클락 주기동안, 제2 명령어 I2에 대한 어드레스가 계산되고, 명령어 I1의 페칭이 개시된다. 제3 클락 주기동안, 제3 명령어 I3에 대한 어드레스가 계산되고, 명령어 I1의 페칭이 완료되며, 명령어 I2의 페칭이 개시되고, 명령어 I1의 디코딩이 개시된다. 이 예에서, 디코드 스테이지(28)는 제3 클락 주기동안 스톨 상태가 되므로, 명령어 I1의 디코딩은 제3 클락 주기동안 완료되지 않는다. 본 명세서에서 사용되는 것처럼, 디코드 스테이지(28)의 스톨은 디코드 스테이지(28)의 실제적인 스톨 상태 또는 디코드 스테이지(28)가 다음 명령어를 디코딩하는 것을 방해하는 파이프라인(20) 내의 또 다른 스테이지의 스톨 상태를 말한다. 예를 들어, 이와 같은 스톨 상태가 메모리 판독 동작시에 판독 스테이지(30)의 스톨 상태에 기인해 발생한다. 3개의 클락 주기동안, 명령어 I1은 레지스터(52) 내에 저장되며, 포인터(56)는 레지스터(52)를 지정한다.3 is a timing diagram illustrating the location of instructions obtained from
제4 클락 주기동안, 디코드 스테이지(28)가 앞선 클락 주기에서 스톨 상태였기 때문에, 다음 명령어에 관련된 부가적인 어드레스가 계산되지 않는다. 명령어 I2의 페칭이 완료되고, 명령어 I3의 페칭이 개시된다. 디코드 스테이지(28)가 스톨 상태인 채로 남아있기 때문에, 명령어 I1의 디코딩은 계속되지만, 완료되지는 않는다. 이 제4 클락 주기동안, 명령어 I1은 레지스터(52)에 남아있으며, 명령어 I2는 레지스터(54) 내에 저장되고, 포인터(56)는 레지스터(52)를 지정한 채로 유지된다.During the fourth clock period, since the
제5 클락 주기동안, 디코드 스테이지(28)가 앞선 클락 주기에서 스톨 상태였기 때문에, 어떠한 부가적인 어드레스도 부가 명령어에 대하여 계산되지 않는다. 또한, 제한된 명령어 버퍼(50)가 풀(full) 상태이기 때문에, 명령어 I3의 페칭은 종료될 수 없는데, 이것은 명령어 I3가 명령어 버퍼(50)에 저장될 수 없기 때문이다. 그러므로, 명령어 I3는 디스카드(discard)되며, 명령어 I3의 페칭은 이 제5 클락 주기동안 다시 개시된다. 이제 디코드 스테이지(28)가 더이상 스톨 상태가 아니기 때문에, 명령어 I1의 디코딩은 제5 클락 주기동안 완료된다. 종래의 프로세서는, 명령어 I3를 디스카드하고 명령어 I3에 대하여 페치를 재발행하기보다는, 명령어 I3를 저장하기 위한 명령어 버퍼 내의 제3 레지스터를 포함하였다. 본 발명은 이와 같은 레지스터가 필요하지 않으므로, 실리콘 영역에 대한 요구를 감소시킨다. 제5 클락 주기동안, 레지스터(52)는 명령어 I1을 저장하고, 레지스터(54)는 명령어 I2를 저장하고, 포인터(56)는 레지스터(52)를 지정한다.During the fifth clock period, since the
제6 클락 주기에 있어서, 디코드 스테이지(28)는 더이상 스톨 상태가 아니다. 그러므로, 제4 명령어 I4에 대한 어드레스가 계산되고, 명령어 I3의 페칭이 완료되며, 명령어 I2의 디코딩이 개시되고 완료된다. 이와 같은 제6 클락 주기동안, 명령어 I3는 레지스터(52) 내에 저장되고, 명령어 I2는 레지스터(54) 내에 저장되며, 포인터(56)는 레지스터(54)를 지정한다.In the sixth clock period, the
이와 같이, 파이프라인(20)에서 간헐적인 스톨이 발생하는 도 3에서 설명된 예에 있어서, 파이프라인(20)이 스톨 상태일 때 어드레스가 계산되는 명령어가 파이프라인의 스톨 상태가 해제될 때까지 계속해서 발행된다. 그러므로, 본 발명은 파이프라인이 처음 스톨 상태가 될 때 계산되고 있는 어드레스에서 발견된 명령어, 즉 위의 실시예에서는 명령어 I3를 저장하는 제3 레지스터를 갖는 명령어 버퍼에 대한 요구를 회피할 수 있다. 명령어 버퍼에서 이와 같은 레지스터에 대한 요구의 회피는 파이프라인(20)이 스톨 상태일 때 명령어 I3와 같은 페치 명령어를 재발행하는 것에 도움이 될 수 있다. 명령어를 처리하기 위한 상술한 방법을 물리적으로 구현하는 예가 도 4를 참조하여 이하에서 설명된다.As such, in the example described in FIG. 3 where an intermittent stall occurs in the
도 4는 프로세서(12)의 프리페치 스테이지(24) 및 페치 스테이지(26)를 부가적으로 상세히 설명하는 블럭도이다. 도시된 바와 같이, 프리페치 스테이지(24)는 프로그램 카운터(58) 및 멀티플렉서(60)를 포함한다. 프로그램 카운터(58)는 명령어를 수신하는 메모리 시스템(14) 내의 위치를 지정하기 위해 현재의 카운트를 보유한다. 멀티플렉서(60)는 프로그램 카운터(58)의 앞선 카운트를 수신하고, 프로그램 카운터(58)의 앞선 카운트는 입력 신호로서 하나씩 증가된다. 멀티플렉서(60)는 프로그램 카운터(58)에 대한 업데이트된 카운트를 제공하는 출력 신호(62)를 생성한다. 멀티플렉서(60)는 디코드 스테이지(28)로부터 수신된 선택 신호(64)에 의해 제어된다. 디코드 스테이지(28) 자체의 스톨링, 또는 파이프라인(20) 내에서 디코드 스테이지(28)의 다운스트림 스테이지의 스톨링에 기인하여 디코드 스테이지(28)가 스톨 상태가 될 때, 선택 신호(64)는 앞선 프로그램 카운터(58)의 값을 선택하고, 디코드 스테이지(28)가 스톨 상태가 아닐 때, 출력 신호(62)는 하나씩 증가된 앞선 프로그램 카운터(58)의 카운트를 선택한다. 다음으로, 출력 신호(62)는 프로그램 카운터(58)로 제공된다. 이와 같은 방식으로, 디코드 스테이지(28)가 스톨 상태일 때, 어드레스가 프리페치 스테이지(24)에 의해 계산된 가장 최근의 명령어는 디코드 스테이지(28)의 스톨 상태가 해제될 때까지 계속적으로 페치된다.4 is a block diagram illustrating additional details of the
상술한 바와 같이, 본 발명은 프로그램 메모리로부터 페치 명령어들을 버퍼링하기 위하여 종래의 더 큰 명령어 버퍼 대신에 제한된 명령어 버퍼가 사용될 수 있기 때문에, 장치가 보다 소형화되도록 실리콘 영역을 축소하며, 프로세서의 다른 영역들 내에 이와 같은 실리콘 영역을 사용할 수 있도록 한다.As mentioned above, the present invention reduces the silicon area to make the device more compact, since the limited instruction buffer can be used instead of the conventional larger instruction buffer to buffer fetch instructions from the program memory, and other areas of the processor. It is possible to use such a silicon region within.
본 발명 및 그 장점이 상세히 설명되었지만, 첨부된 청구항들에 의해 정의되는 본 발명의 사상 및 범주에서 벗어나지 않는 다양한 변경, 치환 및 대체예들이 행해질 수 있다는 것을 이해하여야 한다.While the invention and its advantages have been described in detail, it should be understood that various changes, substitutions and alterations can be made without departing from the spirit and scope of the invention as defined by the appended claims.
Claims (12)
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN1081/MAS/98 | 1998-05-21 | ||
IN1081MA1998 | 1998-05-21 | ||
US9/153,370 | 1998-09-15 | ||
US09/153,370 | 1998-09-15 | ||
US09/153,370 US6275924B1 (en) | 1998-09-15 | 1998-09-15 | System for buffering instructions in a processor by reissuing instruction fetches during decoder stall time |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19990088464A KR19990088464A (en) | 1999-12-27 |
KR100632317B1 true KR100632317B1 (en) | 2006-10-11 |
Family
ID=49263535
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019990018393A KR100632317B1 (en) | 1998-05-21 | 1999-05-21 | Method and system for buffering instructions in processor |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100632317B1 (en) |
-
1999
- 1999-05-21 KR KR1019990018393A patent/KR100632317B1/en not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR19990088464A (en) | 1999-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7200737B1 (en) | Processor with a replay system that includes a replay queue for improved throughput | |
US5404552A (en) | Pipeline risc processing unit with improved efficiency when handling data dependency | |
KR100508084B1 (en) | Loop instruction processing using loop buffer in a data processing device | |
KR920006275B1 (en) | Data processing apparatus | |
US8171266B2 (en) | Look-ahead load pre-fetch in a processor | |
JPH1124929A (en) | Arithmetic processing unit and its method | |
US6760835B1 (en) | Instruction branch mispredict streaming | |
EP2220556B1 (en) | A method and a system for accelerating procedure return sequences | |
US7051191B2 (en) | Resource management using multiply pendent registers | |
US6385720B1 (en) | Branch prediction method and processor using origin information, relative position information and history information | |
US4758949A (en) | Information processing apparatus | |
US20050102659A1 (en) | Methods and apparatus for setting up hardware loops in a deeply pipelined processor | |
US5835746A (en) | Method and apparatus for fetching and issuing dual-word or multiple instructions in a data processing system | |
US6275924B1 (en) | System for buffering instructions in a processor by reissuing instruction fetches during decoder stall time | |
KR100632317B1 (en) | Method and system for buffering instructions in processor | |
US20080065870A1 (en) | Information processing apparatus | |
JP2004192021A (en) | Microprocessor | |
US6862680B2 (en) | Microprocessor processing specified instructions as operands | |
US20080222392A1 (en) | Method and arrangements for pipeline processing of instructions | |
US20070043930A1 (en) | Performance of a data processing apparatus | |
JP2694799B2 (en) | Information processing device | |
US20040128484A1 (en) | Method and apparatus for transparent delayed write-back | |
JP3798180B2 (en) | Method and system for buffering instructions in a processor | |
JP2001022577A (en) | Information processor | |
JPH06131180A (en) | Instruction processing system and instruction processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20120830 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20130830 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20140828 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20160629 Year of fee payment: 11 |
|
FPAY | Annual fee payment |
Payment date: 20180628 Year of fee payment: 13 |
|
EXPY | Expiration of term |