KR20020025703A - 리네이밍 장치 및 프로세서 - Google Patents

리네이밍 장치 및 프로세서 Download PDF

Info

Publication number
KR20020025703A
KR20020025703A KR1020010057935A KR20010057935A KR20020025703A KR 20020025703 A KR20020025703 A KR 20020025703A KR 1020010057935 A KR1020010057935 A KR 1020010057935A KR 20010057935 A KR20010057935 A KR 20010057935A KR 20020025703 A KR20020025703 A KR 20020025703A
Authority
KR
South Korea
Prior art keywords
register
bank
logical
physical
setting
Prior art date
Application number
KR1020010057935A
Other languages
English (en)
Inventor
구니마쯔아쯔시
와따나베유끼오
Original Assignee
니시무로 타이죠
가부시끼가이샤 도시바
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 니시무로 타이죠, 가부시끼가이샤 도시바 filed Critical 니시무로 타이죠
Publication of KR20020025703A publication Critical patent/KR20020025703A/ko

Links

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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

하드웨어를 복잡하게 하지 않고, 또한 유연성이 있는 레지스터 리네임(rename) 처리를 행하는 것이 가능한 프로세서를 제공한다.
프로세서는 명령 메모리(1)와, 펫치 유닛(2)과, 디코드 유닛(3)과, 후술하는 리네임 명령을 실행하는 리네임 제어 유닛(RCU: 4)과, 리네임 제어 레지스터(RCR: 5)와, 물리 레지스터 번호와 논리 레지스터 번호와의 대응 관계를 기억하는 레지스터 파일(6)과, 디코드한 명령을 실행하는 연산 처리 유닛(ALUs: 7)을 포함하고 있다. 물리 레지스터 번호와 논리 레지스터 번호와의 대응 관계를 지정하기 위한 전용 명령인 레지스터 리네임 명령에 의해 제어 레지스터 내의 임의의 번들에 대하여, 번들마다 물리 레지스터 번호와 논리 레지스터 번호와의 대응 관계를 지정할 수 있도록 하였기 때문에, 명령의 수를 늘리지 않고 파이프라인 버블의 발생을 억제할 수 있다.

Description

리네이밍 장치 및 프로세서{RENAME DEVICE AND PROCESSOR}
본 발명은 마이크로 프로세서나 디지털 처리 프로세서(DSP: Digital Signal Processor)와 같은 고주파 동작이 요구되는 프로세서와, 레지스터의 리네이밍(rename)을 행하는 리네이밍 장치에 관한 것으로, 특히 소프트웨어 파이프라이닝(software pipeling)을 행하는 기술에 관한 것이다.
고성능을 요구하기 때문에, 프로세서의 주파수를 올려가면 파이프라인 스테이지수(pipeline stage)가 많아져서 파이프라인 버블(pipeline bubble)(파이프라인 스톨(pipeline stall))이 많아진다. 버블을 매립하기 위해서는 소프트웨어 파이프라이닝을 행하는 것이 일반적이다.
도 18은 임의의 프로세서의 파이프라인 스테이지를 나타내는 도면, 도 19는 도 18의 프로세서가 실행하는 프로그램의 일례를 나타내는 도면이다.
도 18의 프로세서가 도 19의 프로그램을 실행함에 있어서, 데이터의 바이패스는 전혀 없는 것으로 하고, W 스테이지에서 레지스터로의 기입을 행한 후에만, D 스테이지에서 데이터의 판독이 가능해지는 것으로 한다.
1 issue의 인터 로크(interlock) 기능을 갖는 파이프라인 실행이 가능한 프로세서는 도 19의 프로그램을 도 20과 같은 수순으로 실행한다. 명령 1의 Wa(5 사이클째)에서 레지스터 r1에 데이터가 기입되고, 명령 2의 Wb(6 사이클째)에서 레지스터 r2로 데이터가 기입된다. 명령 3은 Dc에서 레지스터 r1, r2를 판독하기 위해, 3 사이클분, 인터로크(스톨)되게 된다. 이것이 데이터 의존 관계에 따른 파이프라인 버블로, 도 20에서는 「*」로 나타내고 있다. 도 20의 예에서는 6개의 파이프라인 버블이 존재한다.
동일하게, 명령 3의 Wd에서 기입된 레지스터 r3을, 명령 4는 De에서 판독한다. 명령 5는 단순한 분기 명령으로, 다른 것과 의존 관계가 없기 때문에, 곧 다음 사이클로 실행된다.
또, 도 20에서는 간략화를 위해 루프(loop)의 분기 명령은 페널티 없음(분기 지연 슬롯 없음)으로 하고 있고, 로드 스토어(load, store) 명령의 어드레스 증가도 1 사이클에서 생기는 것으로 하고 있다.
도 20과 같은 파이프라인 버블을 해결하기 위해서 행해지는 것이 각 루프의 오버랩(overlap) 실행이다. 도 21은 오버랩 실행의 일례를 나타내는 도면이다. 도 21의 예에서는, 3 루프 중에서 파이프라인 버블은 하나밖에 발생하지 않는다. 도 20의 예에서는, 1 루프당 6개의 파이프라인 버블이 발생하고 있었기 때문에, 버블수를 1/18로 격감시킬 수 있다.
명령 처리량의 성능을 올리기 위해서는, 원시적으로는 프로그래머가 소프트웨어 파이프라이닝을 조합하여 실현한다. 그 프로그램은 예를 들면 도 22와 같은 것이다.
도 22의 예의 경우, 루프 1에서는 레지스터 r1, r2, r7, a1, a2, a7을 사용하고, 루프 2에서는 레지스터 r3, r4, r8, a3, a4, a8을 사용하고, 루프 3에서는 레지스터 r5, r6, r9, a5, a6, a9를 사용한다.
이와 같이, 도 22의 예의 경우, 각 루프에서 각각 다른 레지스터를 사용하기 때문에, 프로그램의 명령수가 3배가 되게 되고 또한 프로그래머는 오버랩하고 있는 각 루프로 레지스터가 부딪치지 않도록 지정해야 한다.
이 번잡함을 해소하기 위한 종래의 기술로서, 이하의 2개가 제안되고 있다. 하나는 out-of-order 발행 기능과 자동 레지스터 리네이밍 기능을 구비한 프로세서로, 이러한 프로세서에서는 도 19와 같은 프로그램의 기술과 같이, 도 21과 같은 이상적인 동작을 행한다. 단, out-of-order 발행 기능을 실현하기 위한 하드웨어가 방대해진다는 문제가 있다.
두번째는 Intel 주식회사의 Itanium이나 Cydrome의 컴퓨터에 실장되어 있는 레지스터 로테이션 기능이다. 도 22의 예를 레지스터 로테이션으로 실현하면 도 23과 같아진다.
branch_regrot 명령으로, 루프의 점프 명령을 실행하는 것과 동시에, 레지스터의 로테이션을 행한다. 로테이션에는 3개의 레지스터씩 교체한다. 이 경우의 프로그램은, 도 24와 같아지고 또한 파이프라인의 동작은 도 25와 같아진다.
1 루프째 종료 시의 레지스터의 대응 관계는 도 26과 같아진다. 또한, 2 루프째 종료 시의 레지스터의 대응 관계는 도 27과 같아진다.
종래의 자동 리네이밍 기능은 하드웨어가 복잡해진다는 문제가 있다. 또한, 종래의 레지스터 로테이션 기능은 유연성은 낮고, 단순한 로테이션 이외에는 적용할 수 없다는 문제가 있다.
본 발명은 이러한 점에 감안하여 이루어진 것으로, 그 목적은 하드웨어를 복잡하게 하지 않고, 유연성이 풍부한 레지스터 리네임 기능을 실현할 수 있는 프로세서를 제공하는 데 있다.
또한, 본 발명의 다른 목적은 간단한 회로 구성으로 레지스터 리네임 기능을 실현할 수 있는 리네이밍 장치를 제공하는 데 있다.
도 1은 본 발명에 따른 프로세서의 개략 구성을 나타내는 블록도.
도 2는 5 단계로 나누어서 파이프라인 처리를 행하는 예를 나타내는 도면.
도 3은 명령 세트의 일례를 나타내는 도면.
도 4는 RENAME 명령 실행 시의 리네임 제어 유닛(4)의 처리 동작을 나타내는 순서도.
도 5는 RENAME 명령의 실행 수순을 설명하는 도면.
도 6은 ROTATE 명령의 동작예를 나타내는 도면.
도 7은 ROTATE 명령의 동작예를 나타내는 도면.
도 8은 ROTATE 명령의 동작예를 나타내는 도면.
도 9는 ROTATE 명령의 동작예를 나타내는 도면.
도 10은 ROTATE 명령의 동작예를 나타내는 도면.
도 11은 ROTATE 명령의 동작예를 나타내는 도면.
도 12는 레지스터 리네임 명령으로써, From=2, To=a, Shift=3을 지정한 경우의 로테이션 동작을 나타내는 도면.
도 13은 실제로 액세스되는 물리 어드레스를 나타내는 도면.
도 14는 번들수가 「8」인 경우의 데이터 패스의 예를 나타내는 도면.
도 15는 본 발명에 따른 리네이밍 장치의 일 실시 형태의 블록도.
도 16은 제어 레지스터의 값을 나타내는 도면.
도 17은 프로세서를 파이프라인 동작시키는 경우의 리네이밍 장치의 동작 상태를 나타내는 블록도.
도 18은 임의의 프로세서의 파이프라인 스테이지를 나타내는 도면.
도 19는 도 18의 프로세서가 실행하는 프로그램의 일례를 나타내는 도면.
도 20은 도 19의 파이프라인 동작을 나타내는 도면.
도 21은 오버랩 실행의 일례를 나타내는 도면.
도 22는 소프트웨어 파이프라이닝을 행하는 프로그램의 일례를 나타내는 도면.
도 23은 레지스터 로테이션의 일례를 나타내는 도면.
도 24는 도 23에 대응하는 프로그램을 나타내는 도면.
도 25는 도 24의 파이프라인 동작을 나타내는 도면.
도 26은 1 루프째 종료 시의 레지스터의 대응 관계를 나타내는 도면.
도 27은 2 루프째 종료 시의 레지스터의 대응 관계를 나타내는 도면.
<도면의 주요 부분에 대한 부호의 설명>
1 : 명령 메모리
2 : 펫치 유닛
3 : 디코드 유닛
4 : 리네임 제어 유닛
5 : 리네임 제어 레지스터
6 : 레지스터 파일
7 : 연산 처리 유닛
11 : 제1 판정부
12 : 제1 선택부
13 : 제1 번들 번호 연산부
14 : 제2 판정부
15 : 제2 선택부
16 : AND 회로
17 : 제2 번들 번호 연산부
18 : 제어 레지스터
19 : 제3 선택부
20 : 제4 선택부
21 : 레지스터 파일
상술한 과제를 해결하기 위해서, 본 발명은 레지스터의 리네이밍 기능을 가지고, 소프트웨어 파이프라이닝을 행하는 프로세서에 있어서, 물리 레지스터 번호와 논리 레지스터 번호와의 대응 관계를 나타내는 제어 레지스터와, 발행된 명령 열 중에 상기 제어 레지스터로의 값의 설정을 지시하는 명령이 포함되어 있는 경우에, 상기 명령의 내용에 따라 상기 제어 레지스터로의 값의 설정을 행하는 제어 레지스터 설정 수단을 포함한다.
본 발명에서는 제어 레지스터에 설정하는 값에 따라, 물리 레지스터 번호와 논리 레지스터 번호와의 대응 관계를 임의로 설정 변경할 수 있도록 하였기 때문에, 하드웨어의 구성을 복잡하게 하지 않고, 유연성이 있는 레지스터 리네임 기능을 실현할 수 있다.
또한, 복수의 레지스터를 포함하는 뱅크를 단위로 하여 물리 레지스터 번호와 논리 레지스터 번호를 대응시키면, 간단하고 또한 신속하게 레지스터 리네임을 행할 수 있게 된다.
또한, 제어 레지스터에 제1 ∼ 제3 레지스터부를 설치하고, 각 레지스터부를 이용하여 레지스터 리네임을 행하면, 보다 한층 더 고속으로 레지스터 리네임을 행할 수 있게 된다.
또한, 본 발명은 복수의 물리 레지스터 또는 논리 레지스터를 단위로 하는 복수의 뱅크 각각마다 물리 레지스터 번호와 논리 레지스터 번호와의 대응 관계를 저장하는 제어 레지스터와,
발행된 명령 중에 상기 뱅크를 단위로 한 물리 레지스터 번호와 논리 레지스터 번호를 대응시키는 것을 변경하는 대응 변경 명령이 포함되고 있는 경우에 상기 명령으로 지시된 뱅크에 대응하는 상기 제어 레지스터의 내용을 리세트하는 리세트 수단과,
상기 대응 변경 명령으로 지시되는 대응의 변경을 행하는 뱅크의 종류에 관한 정보와 대응의 변경량에 관한 정보에 기초하여, 리세트된 상기 제어 레지스터에 새로운 값을 설정하는 제어 레지스터 설정 수단을 포함한다.
<발명의 실시 형태>
이하, 본 발명에 따른 프로세서에 대하여 도면을 참조하면서 구체적으로 설명한다.
(제1 실시 형태)
도 1은 본 발명에 따른 프로세서의 일 실시 형태의 개략 구성을 나타내는 블록도이다. 도 1의 프로세서는, 명령열을 기억하는 명령 메모리(1)와, 명령 메모리(1)로부터의 명령을 펫치하는 펫치 유닛(2)과, 펫치한 명령을 디코드하는 디코드 유닛(3)과, 후술하는 리네임 명령을 실행하는 리네임 제어 유닛(RCU: Rename Control Unit: 4)과, 리네임 제어 레지스터(RCR: Rename Control Register: 5)와, 물리 레지스터 번호와 논리 레지스터 번호와의 대응 관계를 기억하는 레지스터 파일(6)과, 디코드한 명령을 실행하는 연산 처리 유닛(ALUs: 7)을 포함하고 있다.
본 실시 형태는 256개의 레지스터를 16개씩 조합으로 한 복수의 번들(뱅크)로 구분하고, 뱅크를 단위로 하여 물리 레지스터 번호와 논리 레지스터 번호를 대응시키는 점에 특징이 있다.
이러한 대응을 시키기 위해서, 리네임 제어 레지스터(5)가 이용된다. 리네임 제어 레지스터(5)는 소스(source) 레지스터(소스 RCR, 제1 레지스터부), 데스티네이션(destnination) 레지스터(데스티네이션 RCR, 제2 레지스터부) 및 이펙티브(effective) 레지스터(이펙티브 RCR, 제3 레지스터부)의 3 종류로 구성된다.
본 실시 형태의 프로세서는, 도 2에 도시한 바와 같이, 5 단계로 나누어서 파이프라인 처리를 행한다. 또한, 이 프로세서는 명령 세트로서, 도 3의 (a)에 도시한 연산 명령과, 도 3의 (b)에 도시한 로드/스토어 명령과, 도 3의 (c)에 도시한 조건 분기 명령을 가지고, 이 외에 도 3의 (d)에 도시한 레지스터 리네임 명령을 갖는 점에 특징이 있다.
레지스터 리네임 명령은 리네임 제어 레지스터(5)를 세트하기 위한 전용 명령으로, (1) ∼ (4)까지의 4개의 명령으로 이루어진다. (1)의 STORE_REN은 범용 레지스터 src1의 내용을 데스티네이션 RCR로 세트하는 명령이다. (2)의 LOAD_REN은, 데스티네이션 RCR의 내용을 범용 레지스터 src1로 세트하는 명령이다. (3)의 ROTATE는 후술한 바와 같이 소스 RCR의 from 비트째로부터 to 비트째까지 bit수만큼 좌측으로 로테이션하는 명령이다. (4)의 RENAME은 데스티네이션 RCR의 내용을 이펙티브 RCR과 소스 RCR에 복사하는 명령이다.
도 1의 리네임 제어 유닛(4)은 도 3의 (d)에 도시한 레지스터 리네임 명령이 발행되면, 리네임 제어 레지스터(5)의 설정을 행한다. 도 4는 RENAME 명령 실행 시의 리네임 제어 유닛(4)의 처리 동작을 나타내는 순서도이다. 우선, 리네임 제어 유닛(4)은 소스 RCR의 내용을 데스티네이션 RCR에 기입한다(단계 S1).
다음에, ROTATE 명령에 기초하여, 소스 RCR의 갱신을 행한다(단계 S2). 다음에, 소스 RCR의 갱신 결과를 데스티네이션 RCR에 기입한다(단계 S3).
다음에, 데스티네이션 RCR의 내용을, 소스 RCR과 이펙티브 RCR에 기입한다(단계 S4). 다음에, 이펙티브 RCR의 내용에 기초하여 레지스터 파일(6)에 물리 레지스터 번호와 논리 레지스터 번호와의 대응 관계를 기입한다(단계 S5).
이와 같이, 단계 S5에서는 이펙티브 RCR을 참조함으로써, 논리 레지스터 번호와 물리 레지스터 번호와의 대응 관계를 검출한다. 따라서, 이펙티브 RCR이 참조되고 있는 사이에 소스 RCR과 데스티네이션 RCR은 다른 작업, 예를 들면 다음의 리네임 처리를 행하기 위한 작업 등에 이용 가능하다.
도 5는 RENAME 명령의 실행 수순을 설명하는 도면으로, 리네임 제어 레지스터(5)가 갖는 16개의 번들 각각에 대하여, 번들마다 논리 레지스터 번호의 필드(관리 영역)를 물리 레지스터 번호에 대응시키는 예를 나타내고 있다. 구체적으로는, 번들 0에 속하는 16개의 논리 레지스터 번호 E0 ∼ EF를 물리 레지스터 번호 00 ∼ 0F에 대응시키고, 번들 1에 속하는 16개의 논리 레지스터 번호 F0 ∼ FF를 물리 레지스터 번호 10 ∼ 1F에 대응시켜서, 이하 순차 대응을 시켜서 번들 f에 속하는 16개의 논리 레지스터 번호 D0 ∼ DF를 물리 레지스터 번호 F0 ∼ FF에 대응시키는 예를 나타내고 있다.
레지스터 파일(6)은 16×16=256비트의 용량을 가지고, 리네임 제어 레지스터(5)의 16갯수분의 번들 각각의 물리 레지스터 번호와 논리 레지스터 번호와의 대응 관계를 기억한다.
도 6은 ROTATE 명령의 동작예를 나타내는 도면으로, 4번째의 번들로부터 c번째의 번들까지 2 번들씩 좌측으로 로테이션하는 예를 나타내고 있다.
또한, 도 7의 (a)는 모든 번들을 1 번들씩 좌측으로 로테이션하는 예를 나타내고, 도 7의 (b)는 모든 번들을 2 번들씩 좌측으로 로테이션하는 예를 나타내고 있다.
또한, 도 8의 (a)는 모든 번들을 4번들씩 좌측으로 로테이션하는 예를 나타내고, 도 8의 (b)는 모든 번들을 8번들씩 좌측으로 로테이션하는 예를 나타내고 있다.
또한, 도 9의 (a)는 상위측 8번들을 1 번들씩 좌측으로 로테이션하는 예를 나타내고, 도 9의 (b)는 상위측 8번들을 2 번들씩 좌측으로 로테이션하는 예를 나타내고 있다.
또한, 도 10의 (a)는 상위측 8 번들을 4번들씩 좌측으로 로테이션하는 예를 나타내고, 도 10의 (b)는 8번들째로부터 b 번들째까지를 1 번들씩 좌측으로 로테이션하는 예를 나타내고 있다.
또한, 도 11의 (a)는 8번들째으로부터 b번들째까지를 1 번들씩 좌측으로 로테이션하는 예를 나타내고, 도 11의 (b)는 a번들째로부터 b번들째까지를 1 번들씩 좌측으로 로테이션하는 예를 나타내고 있다.
이와 같이, 본 실시 형태에서는 물리 레지스터 번호와 논리 레지스터 번호와의 대응 관계를 지정하기 위한 전용 명령인 레지스터 리네임 명령에 의해, 제어 레지스터 내의 임의의 번들에 대하여, 번들마다 물리 레지스터 번호와 논리 레지스터 번호와의 대응 관계를 지정할 수 있도록 하였기 때문에, 명령의 수를 늘리지 않고 파이프라인 버블의 발생을 억제할 수 있다.
또한, 레지스터 리네임 명령의 구체적 내용은 프로그래머가 임의로 지정할 수 있어, 필요에 따라 리네임 처리를 행할 수 있어, 유연성이 있는 레지스터 리네임 처리가 가능해진다.
또한, 본 실시 형태에서는 제어 레지스터로서 소스 RCR, 데스티네이션 RCR 및 이펙티브 RCR을 설치하고, 로테이션한 결과를 소스 RCR과 이펙티브 RCR의 쌍방에 기입하기 위해서, 이펙티브 RCR의 내용을 참조하여 물리 레지스터 번호와 논리 레지스터 번호를 대응시키고, 그 사이에 소스 RCR이나 데스티네이션 RCR을 다른 작업, 예를 들면 다음의 로테이션 처리에 이용할 수 있다. 따라서, 처리 효율이 향상된다.
상술한 실시 형태에서는, 리네임 제어 레지스터(5) 내에 논리 레지스터의 각번들에 대응한 필드를 갖는 예를 설명하였지만, 그 반대로, 리네임 제어 레지스터(5) 내에 물리 레지스터의 각 번들에 대응한 필드를 가지고 있고, 리네임 제어 유닛(4)이 논리 레지스터의 번들 번호를 세트해도 된다.
(제2 실시 형태)
도 12는 상술한 레지스터 리네임 명령으로써, From=2, To=a, Shift=3을 지정한 경우의 로테이션 동작을 나타내고 있고, 도 12의 (a)는 번들의 초기값을 나타내고 있다. 도 12의 (a)와 같은 번들에 대하여 로테이션을 행하면, 번들 번호가 「2」로부터 「a」까지의 번들의 내용이「3」 번들씩 좌측으로 시프트하고, 시프트에서 비어져 나온 만큼이 로테이션 대상인 번들의 우측으로부터 매립되도록 동작한다. 그 결과, 도 12의 (b)와 같아진다. 이 상태에서 또한 마찬가지의 로테이션을 행하면 도 12의 (c)와 같아지고, 이 상태에서 또한 마찬가지의 로테이션을 행하면 도 12의 (a)로 되돌아간다.
예를 들면, 논리 번호 3c(3은 번들 번호, c는 레지스터 번호)의 레지스터를 액세스하는 프로그램에서는, 실제로 액세스되는 물리 어드레스는, 도 13과 같이 변화하고, 프로그램에서는 동일한 논리 어드레스를 지정해도 실제로는 다른 물리 어드레스를 사용하게 되고 소프트웨어 파이프라이닝이 행해진다.
상술한 레지스터 리네임 명령은 로테이션시키는 번들의 종류 및 범위를 임의로 지정할 수 있어, 레지스터 리네임 처리를 하드웨어로 구성하는 경우에는 로테이션에 의해 이동처가 될 가능성이 있는 모든 번들에 대하여 데이터를 교환하는 패스를 설치할 필요가 있다.
예를 들면, 도 14는 번들수가 「8」인 경우의 데이터 패스의 예를 나타내고 있다. 이와 같이, 데이터 패스는 번들 간을 걸치는 배선이 된다. 이들의 배선은 멀티플렉서에 접속되어, 최종적으로 멀티플렉서에 의해 필요한 번들의 데이터가 선택되어 번들이 갱신된다.
도 14와 같이 번들 간을 걸치는 배선을 설치하면, 배선 면적이 증대하고, 배선 길이의 증가에 따라 속도가 저하하는 등의 문제가 발생할 우려가 있다. 특히, 번들수가 증가하는 경우, 배선 면적은 번들수의 2승에 비례하기 때문에, 점점 더중대한 문제가 된다.
그래서, 이하에 설명하는 제2 실시 형태는 상술한 레지스터 리네임 명령에 따른 레지스터 번호의 로테이션을 간단한 구성의 하드웨어에 의해 실현하는 것을 특징으로 한다.
도 15는 본 발명에 따른 리네이밍 장치의 일 실시 형태의 블록도이다. 도 15의 리네이밍 장치는 각 번들마다 설치되고, 예를 들면 16개의 번들이 존재하는 경우에는, 도 15의 리네이밍 장치도 16개 설치된다. 이들 리네이밍 장치는, 예를 들면 프로세서에 내장된다.
도 15의 리네이밍 장치는, 사전에 지정된 원래의 번들 번호가 레지스터 리네임 명령으로 지시된 하한 번들 번호 및 상한 번들 번호 간에 포함되는지의 여부를 판정하는 제1 판정부(제1 판정 수단: 11)와, 제1 판정부(11)의 판정 결과에 기초하여, 번들의 로테이션량을 설정하는 제1 선택부(제1 선택 수단: 12)와, 원래의 번들 번호에 대응하는 새로운 번들 번호를 연산하는 제1 번들 번호 연산부(제1 번들 번호 연산 수단: 13)와, 연산된 새로운 번들 번호가 레지스터 리네임 명령으로 지시된 하한 번들 번호의 번들 번호보다도 빠른 번호인지의 여부를 판정하는 제2 판정부(제2 판정 수단: 14)와, 제2 판정부(14)의 판정 결과에 기초하여 번들 번호의 보정값을 선택하는 제2 선택부(제2 선택 수단: 15)와, 제2 선택부(15)의 선택 제어를 행하는 AND 회로(16)와, 번들 번호 연산부에서 연산된 번들 번호와 제2 선택부(제2 선택 수단: 15)에서 선택된 보정값을 가산하여 최종적인 번들 번호를 연산하는 제2 번들 번호 연산부(제2 번들 번호 연산 수단: 17)와, 제1 번들 번호 연산부(13)에서연산된 번들 번호와 제어 레지스터(18)에 저장된 번들 번호 중 어느 한쪽을 선택하는 제3 선택부(제3 선택 수단: 19)와, 제어 레지스터(18)에 저장하기 위한 최종적인 번들 번호를 선택하는 제4 선택부(리세트 수단: 20)를 포함하고 있다.
제1 선택부(12)는 원래의 번들 번호가 레지스터 리네임 명령의 하한 번들 번호와 상한 번들 번호 사이에 있으면, 레지스터 리네임 명령의 로테이션량을 선택하여 출력하고, 입력된 번들 번호가 레지스터 리네임 명령의 하한 번들 번호와 상한 번들 번호 사이에 없으면 제로를 출력한다.
제1 번들 번호 연산부(13)는 제어 레지스터(18)에 저장된 번들 번호로부터 제1 선택부(12)에서의 선택 결과를 빼는 연산을 행한다.
AND 회로(16)는 입력된 번들 번호가 하한 번들 번호와 상한 번들 번호 사이에서, 또한 제1 번들 번호 연산부(13)에서 연산된 번들 번호가 레지스터 리네임 명령의 하한 번들 번호보다도 작을 때에 「1」을 출력하고, 그 이외일 때는「0」을 출력한다.
제2 선택부(15)는 AND 회로(16)의 출력이 「0」이면 「0」을 출력하고, AND 회로(16)의 출력이 「1」이면, 레지스터 리네임 명령의 상한 번들 번호로부터 하한 번들 번호를 뺀 값에 「1」를 더한 값(To-From+1)을 출력한다.
제3 선택부(19)는 레지스터 리네임 명령의 실행 시에 제2 번들 번호 연산부(17)에서 연산된 번들 번호를 선택하고, 그 이외의 명령을 실행할 때는 제어 레지스터(18)에 저장되어 있는 번들 번호를 선택한다.
제4 선택부(20)는 레지스터 리네임 명령이 발행되었을 때에, 일시적으로 제어 레지스터(18)를 초기화하고, 그 이외일 때는 제3 선택부(19)에서 선택된 번들 번호를 그대로 선택한다. 초기화할 때는 입력된 번들 번호를 그대로 제어 레지스터(18)에 저장한다.
여기서, 제어 레지스터(18)가 리세트 수단에 대응하고 제2 번들 번호 연산부(17) 및 제3 선택부(19)가 제어 레지스터 설정 수단에 대응한다.
이하, 레지스터 리네임 명령의 일례로서, 도 16에 도시한 바와 같이, 하한 번들 번호 From이 3, 상한 번들 번호 To가 b, 로테이션량 Shift가 3인 경우를 예로 들어, 도 15의 리네이밍 장치의 처리 동작을 설명한다. 도 16의 제어 레지스터에는 물리 어드레스의 번들 번호가 저장되어 있다.
도 15의 리네이밍 장치는 (1) 로테이션 정보 세트 시, (2) 로테이션 명령 비 실행 시, (3) 로테이션 명령 실행 시에 지정된 번들 번호가 하한 번들 번호와 상한 번들 번호 사이에 있는 경우 및 (4) 로테이션 명령 실행 시에 지정된 번들 번호가 하한 번들 번호와 상한 번들 번호 사이에 없는 경우의 4가지의 처리 동작을 행한다.
우선, 로테이션 정보 세트 시의 처리 동작을 설명한다. 로테이션 명령이 발행되면, 로테이션 동작을 행하기 전에 제4 선택부(20)는 제어 레지스터(18)의 내용을 초기화한다. 구체적으로는, 로테이션을 행하는 범위 내의 번들에 대해서는 논리 레지스터 번호와 물리 레지스터 번호를 일치시키고, 그 이외의 범위 내의 번들에 대해서는 제어 레지스터(18)의 값을 변경하지 않도록 한다. 이 결과, 도 16의 (b)와 같이, 논리 어드레스의 번들 번호와 물리 어드레스의 번들 번호는 일치한다.
다음에, 로테이션 명령 비실행 시의 처리 동작을 설명한다. 이 경우, 제3 선택부(19)는 제어 레지스터(18)에 저장된 번들 번호를 선택하기 위해서, 제어 레지스터(18)의 데이터는 변화시키지 않는다.
다음에, 로테이션 명령 실행 시에 원래의 번들 번호가 하한 번들 번호와 상한 번들 번호 사이에 존재하지 않는 경우(도 16의 번들 번호 0 ∼ 2와 c ∼ f)의 처리 동작을 설명한다. 이 경우, 제1 선택부(12)는 「0」을 출력하고, 제1 번들 번호 연산부(13)는 제어 레지스터(18)에 저장되어 있는 번들 번호를 그대로 출력한다. 또한, 제1 판정부(11)의 출력은 「0」이기 때문에, AND 회로(16)의 출력은 제로가 되고 제4 선택부(20)는 「0」을 출력한다.
다음에, 로테이션 명령 실행 시에 원래의 번들 번호가 하한 번들 번호와 상한 번들 번호 사이에 존재하는 경우의 처리 동작을 설명한다. 이 경우, 제1 판정부(11)는 「1」을 출력하고, 제1 선택부(12)는 「3」을 출력하고, 제1 번들 번호 연산부(13)는 제어 레지스터(18)에 저장된 번들 번호로부터 「3」을 뺀 값을 출력한다. 이에 따라, 제1 번들 번호 연산부(13)의 출력은 도 16의 (c)와 같아진다.
제2 판정부(14)는 제1 번들 번호 연산부(13)로 연산된 번들 번호가 「0」, 「1」, 「2」 중 어느 하나이면 「0」을 출력하고 그 이외일 때는 「1」을 출력한다.
제2 판정부(14)로부터 「0」이 출력되면, 제2 선택부(15)는 상한 번들 번호「b」로부터 하한 번들 번호 「3」을 뺀 값에 「1」을 더한 값(11-3+1=9)을 출력한다. 제2 판정부(14)로부터 「1」이 출력되면, 제2 선택부(15)는 「0」을 출력한다.
제2 번들 번호 연산부(17)는 제1 번들 번호 연산부(13)에서 연산된 번들 번호가 「0」, 「1」, 「2」일 때는 이들의 값에 「9」를 더한 값 「9」, 「a」, 「b」를 각각 출력한다. 또한, 제1 번들 번호 연산부(13)에서 연산된 번들 번호가 「3」 ∼ 「8」일 때는 그대로 출력한다. 이에 따라, 제어 레지스터(18)의 내용은 도 16의 (d)와 같아진다.
이와 같이, 본 실시 형태에서는 레지스터 리네임 명령을 실행할 때, 로테이션하는 범위 내의 번들을 초기화한 후, 레지스터 리네임 명령의 로테이션량, 하한 번들 번호 및 상한 번들 번호에 기초하여, 하드웨어에 의해 번들의 로테이션을 행하기 위해서, 번들 간에서 데이터의 교환을 행하지 않아도 새로운 번들 번호를 설정할 수 있다. 따라서, 번들 사이를 걸치는 배선이 불필요해지고 배선량을 삭감할 수 있음과 함께 고속 처리가 가능해진다.
도 15의 리네이밍 장치를 프로세서의 내부에 조립하는 경우, 리네이밍 장치를 파이프라인의 움직임에 맞추어서 동작시키는 것이 바람직하다. 도 17은 프로세서를 파이프라인 동작시키는 경우의 리네이밍 장치의 동작 상태를 나타내는 블록도이다. 이 예는 4 사이클 걸쳐서 번들의 내용을 로테이션하는 것이다.
도 17의 리네이밍 장치는 파이프라인의 각 스테이지에 동기시키기 위한 레지스터 파일(21)을 갖는 점을 제외하면, 도 15의 장치와 마찬가지로 구성되어 있고, 도 15와 마찬가지로 회로 구성을 간소화할 수 있고, 또한 고속 동작이 가능해진다.
이와 같이, 도 17의 리네이밍 장치는 장치 내부에 설치되는 레지스터파일(21)에서 시스템 클럭에 동기시키기 위해 게이트 단수가 많아도 타이밍이 보장되고, 동작이 안정화하고 고속 클럭에도 용이하게 대응할 수 있다.
이상 상세하게 설명한 바와 같이, 본 발명에 따르면, 물리 레지스터 번호와 논리 레지스터 번호와의 대응 관계를 나타내는 제어 레지스터를 설치하고, 프로그래머가 지정한 명령에 의해 제어 레지스터에 값을 임의로 설정할 수 있도록 하였기 때문에, 하드웨어의 구성을 복잡하게 하지 않고, 파이프라인 버블의 발생을 억제할 수 있다. 특히, 종래의 out-of-order 발행 기능을 갖는 수퍼스칼라 프로세서 등으로부터도 하드웨어의 구성을 대폭 간략화할 수 있다.
또한, 프로그래머가 물리 레지스터 번호와 논리 레지스터 번호와의 대응 관계를 임의로 설정 변경할 수 있기 때문에, 종래의 레지스터 로테이션 기능을 갖는 프로세서보다도 유연성있는 레지스터 로테이션을 실현할 수 있다.
또한, 본 발명에 따르면, 대응 변경 명령이 발행되면, 일단 제어 레지스터의 내용을 리세트한 후, 대응 변경 명령으로 지시되는 내용에 따라 제어 레지스터에 새로운 값을 설정하도록 하였기 때문에, 각 대역 간에서 데이터의 교환을 하지 않아도 대응시키는 것을 변경할 수 있고, 하드웨어로 실현했을 때의 회로 구성을 대폭 간소화할 수 있다. 따라서, 배선량을 삭감할 수 있음과 함께, 각 배선을 짧게 할 수 있어, 프로세서의 파이프라인 동작에 맞추어서 동작시킬 수 있음과 함께 고속 클럭으로의 대응이 용이해진다.

Claims (18)

  1. 물리 레지스터 번호와 논리 레지스터 번호와의 대응 관계를 설정하는 리네이밍 장치에 있어서,
    물리 레지스터 번호와 논리 레지스터 번호와의 대응 관계를 기억하는 제어 레지스터와,
    발행된 명령열 중에 물리 레지스터 번호와 논리 레지스터 번호와의 대응 관계를 설정하는 명령이 포함되어 있는 경우에는 상기 명령의 내용에 따라 상기 제어 레지스터의 설정을 행하는 제어 레지스터 설정 수단을 포함하는 리네이밍 장치.
  2. 제1항에 있어서,
    상기 제어 레지스터는 복수의 물리 레지스터 또는 논리 레지스터를 단위로 하는 복수의 뱅크로 나누어져 있고,
    상기 제어 레지스터 설정 수단은 상기 뱅크를 단위로 하여 물리 레지스터 번호와 논리 레지스터 번호를 대응시키는 리네이밍 장치.
  3. 제2항에 있어서,
    상기 제어 레지스터 설정 수단은 상기 대응 관계를 설정하는 명령에 기초하여 상기 복수의 뱅크 중 적어도 일부에 대하여 물리 레지스터 번호와 논리 레지스터 번호와의 대응 관계를 설정하는 리네이밍 장치.
  4. 제2항에 있어서,
    상기 제어 레지스터 설정 수단은 상기 대응 관계를 설정하는 명령에 기초하여 상기 복수의 뱅크를 2개 이상의 조로 나누어서 각조마다 각각 개별적으로 물리 레지스터 번호와 논리 레지스터 번호와의 대응 관계를 설정하는 리네이밍 장치.
  5. 제2항에 있어서,
    상기 대응 관계를 설정하는 명령은 상기 제어 레지스터 중 임의의 뱅크에 대하여 각각 개별적으로 물리 레지스터 번호와 논리 레지스터 번호와의 대응 관계를 지정 가능한 명령인 리네이밍 장치.
  6. 제1항에 있어서,
    상기 제어 레지스터는 제1, 제2 및 제3 레지스터부를 포함하고,
    상기 제어 레지스터 설정 수단은 상기 제1 레지스터부의 내용에 기초하여 물리 레지스터 번호와 논리 레지스터 번호를 대응시키고, 그 결과를 상기 제2 레지스터부에 기입하고, 그 후 상기 제2 레지스터부의 내용을 상기 제1 및 제3 레지스터부에 기입하는 리네이밍 장치.
  7. 제6항에 있어서,
    상기 대응 관계를 설정하는 명령은,
    상기 제1 레지스터부의 내용에 기초하여 물리 레지스터 번호와 논리 레지스터 번호를 대응시키고 그 결과를 상기 제2 레지스터부에 기입하는 명령과,
    상기 제2 레지스터부의 내용을 상기 제1 및 제3 레지스터부에 기입하는 명령을 포함하는 리네이밍 장치.
  8. 제7항에 있어서,
    상기 제3 레지스터부의 내용에 기초하여 물리 레지스터 번호와 논리 레지스터 번호와의 대응 관계를 기억하는 기억 수단을 포함하는 리네이밍 장치.
  9. 제8항에 있어서,
    상기 제어 레지스터 설정 수단은 복수의 논리 레지스터를 단위로 하는 뱅크의 각각마다 논리 레지스터 번호와 물리 레지스터 번호와의 대응 관계를 상기 기억 수단에 기억하는 리네이밍 장치.
  10. 제8항에 있어서,
    상기 제어 레지스터 설정 수단은 복수의 물리 레지스터를 단위로 하는 뱅크의 각각마다 물리 레지스터 번호와 논리 레지스터 번호와의 대응 관계를 상기 기억 수단에 기억하는 리네이밍 장치.
  11. 레지스터의 리네이밍 기능을 갖고, 소프트웨어 파이프라이닝을 행하는 프로세서에 있어서,
    청구항 1에 기재된 리네이밍 장치에서 설정된 물리 레지스터 번호에 기초하여 메모리 액세스를 행하는 프로세서.
  12. 물리 레지스터 번호와 논리 레지스터 번호와의 대응 관계를 설정하는 리네이밍 장치에 있어서,
    복수의 물리 레지스터 또는 논리 레지스터를 단위로 하는 복수의 뱅크의 각각마다 물리 레지스터 번호와 논리 레지스터 번호와의 대응 관계를 저장하는 제어 레지스터와,
    발행된 명령 중에 상기 뱅크를 단위로 한 물리 레지스터 번호와 논리 레지스터 번호를 대응시키는 것을 변경하는 대응 변경 명령이 포함되어 있는 경우에, 상기 명령으로 지시된 뱅크에 대응하는 상기 제어 레지스터의 내용을 리세트하는 리세트 수단과,
    상기 대응 변경 명령으로 지시되는 대응 변경을 행하는 뱅크의 종류에 관한 정보와 대응 변경량에 관한 정보에 기초하여 리세트된 상기 제어 레지스터에 새로운 값을 설정하는 제어 레지스터 설정 수단을 포함하는 리네이밍 장치.
  13. 제12항에 있어서,
    상기 대응 변경 명령은 대응 변경량을 나타내는 상기 뱅크의 로테이션량과, 로테이션을 행하는 하한 뱅크 및 상한 뱅크를 지시하는 리네이밍 장치.
  14. 제13항에 있어서,
    미리 설정된 원래의 뱅크 번호가 상기 대응 변경 명령으로 지시된 하한 뱅크 및 상한 뱅크 간에 포함되는지의 여부를 판정하는 제1 판정 수단과,
    상기 제1 판정 수단의 판정 결과에 기초하여 뱅크의 로테이션량을 설정하는 제1 선택 수단과,
    상기 원래의 뱅크 번호에 대응하는 새로운 뱅크 번호를 연산하는 제1 뱅크 번호 연산 수단과,
    연산된 상기 새로운 뱅크 번호가 상기 대응 변경 명령으로 지시된 하한 뱅크의 뱅크 번호보다도 빠른 번호인지의 여부를 판정하는 제2 판정 수단과,
    상기 제2 판정 수단의 판정 결과에 기초하여 뱅크 번호의 보정값을 선택하는 제2 선택 수단과,
    상기 뱅크 번호 연산 수단으로 연산된 뱅크 번호와 상기 제2 선택 수단으로 선택된 보정값을 가산하여 최종적인 뱅크 번호를 연산하는 제2 뱅크 번호 연산 수단과,
    상기 제1 뱅크 번호 연산 수단으로 연산된 뱅크 번호와 상기 제어 레지스터에 저장된 뱅크 번호 중 어느 하나를 선택하는 제3 선택 수단을 포함하고,
    상기 리세트 수단은 상기 대응 변경 명령이 발행되면 뱅크 번호의 로테이션을 행하기 전에 상기 원래의 뱅크 번호에 기초하여 상기 제어 레지스터의 내용을 초기화하고, 그 이외일 때는 상기 제3 선택 수단으로 선택된 뱅크 번호를 상기 제어 레지스터에 저장하는 리네이밍 장치.
  15. 제14항에 있어서,
    상기 제1 선택 수단은 상기 원래의 뱅크 번호가 상기 대응 변경 명령으로 지시된 하한 뱅크 및 상한 뱅크 사이에 포함된다고 판정될 때에 상기 대응 변경 명령으로 지시된 로테이션량을 출력하며, 그 이외일 때는 제로를 출력하고,
    상기 제2 선택 수단은 상기 제1 판정 수단에 의해 하한 뱅크 및 상한 뱅크 사이에 포함된다고 판정되고 또한 상기 제2 판정 수단에 의해 하한 뱅크의 뱅크 번호보다도 빠른 번호라고 판정될 때에 상기 대응 변경 명령으로 지시된 하한 뱅크 번호와 상한 뱅크 번호에 기초하여 보정값을 선택하고,
    상기 제3 선택 수단은 상기 대응 변경 명령이 발행된 후, 상기 뱅크 번호 저장 수단에 새로운 뱅크 번호를 저장하기까지는 상기 제2 뱅크 번호 연산 수단으로 연산된 뱅크 번호를 선택하고, 그 이외는 상기 제어 레지스터에 저장되어 있는 뱅크 번호를 선택하는 리네이밍 장치.
  16. 레지스터의 리네이밍 기능을 갖고, 소프트웨어 파이프라이닝을 행하는 프로세서에 있어서,
    청구항 12에 기재된 리네이밍 장치에서 설정된 물리 레지스터 번호에 기초하여 메모리 액세스를 행하는 프로세서.
  17. 레지스터의 리네이밍 기능을 갖고, 소프트웨어 파이프라이닝을 행하는 프로세서에 있어서,
    청구항 14에 기재된 리네이밍 장치에서 설정된 물리 레지스터 번호에 기초하여 메모리 액세스를 행하고,
    상기 리세트 수단, 상기 제어 레지스터 설정 수단, 상기 제1 판정 수단, 상기 제1 선택 수단, 상기 제1 뱅크 번호 연산 수단, 상기 제2 판정 수단, 상기 제2 선택 수단, 상기 제2 뱅크 번호 연산 수단 및 상기 제3 선택 수단은 프로세서의 파이프라인의 동작에 맞추어서 각각의 처리를 행하는 프로세서.
  18. 제17항에 있어서,
    상기 리네이밍 장치를 프로세서의 파이프라인의 동작에 동기시키기 위한 레지스터 파일을 포함하는 프로세서.
KR1020010057935A 2000-09-28 2001-09-19 리네이밍 장치 및 프로세서 KR20020025703A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2000297242 2000-09-28
JPJP-P-2000-00297242 2000-09-28
JP2001101216A JP3817436B2 (ja) 2000-09-28 2001-03-30 プロセッサおよびリネーミング装置
JPJP-P-2001-00101216 2001-03-30

Publications (1)

Publication Number Publication Date
KR20020025703A true KR20020025703A (ko) 2002-04-04

Family

ID=26601013

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020010057935A KR20020025703A (ko) 2000-09-28 2001-09-19 리네이밍 장치 및 프로세서

Country Status (7)

Country Link
US (1) US6938149B2 (ko)
EP (1) EP1193594B1 (ko)
JP (1) JP3817436B2 (ko)
KR (1) KR20020025703A (ko)
CN (1) CN1149472C (ko)
DE (1) DE60138445D1 (ko)
TW (1) TWI221579B (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3576148B2 (ja) * 2002-04-19 2004-10-13 株式会社半導体理工学研究センター 並列プロセッサ
US7206923B2 (en) * 2003-12-12 2007-04-17 International Business Machines Corporation Method and apparatus for eliminating the need for register assignment, allocation, spilling and re-filling
US20080215804A1 (en) * 2006-09-25 2008-09-04 Davis Gordon T Structure for register renaming in a microprocessor
US20080077778A1 (en) * 2006-09-25 2008-03-27 Davis Gordon T Method and Apparatus for Register Renaming in a Microprocessor
US8386712B2 (en) * 2006-10-04 2013-02-26 International Business Machines Corporation Structure for supporting simultaneous storage of trace and standard cache lines
CN100524208C (zh) * 2006-10-26 2009-08-05 中国科学院计算技术研究所 对状态寄存器进行重命名的方法和使用该方法的处理器
JP4830164B2 (ja) * 2009-07-07 2011-12-07 エヌイーシーコンピュータテクノ株式会社 情報処理装置及びベクトル型情報処理装置
US8725989B2 (en) * 2010-12-09 2014-05-13 Intel Corporation Performing function calls using single instruction multiple data (SIMD) registers
US9841974B2 (en) * 2014-04-25 2017-12-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Renaming with generation numbers
US10430197B2 (en) 2017-05-12 2019-10-01 Samsung Electronics Co., Ltd. Banking register renaming to reduce power
JP7043985B2 (ja) 2018-06-13 2022-03-30 富士通株式会社 演算処理装置および演算処理装置の制御方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5781753A (en) * 1989-02-24 1998-07-14 Advanced Micro Devices, Inc. Semi-autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for speculative and out-of-order execution of complex instructions
US5481683A (en) 1992-10-30 1996-01-02 International Business Machines Corporation Super scalar computer architecture using remand and recycled general purpose register to manage out-of-order execution of instructions
JP3220881B2 (ja) * 1992-12-29 2001-10-22 株式会社日立製作所 情報処理装置
GB2286265B (en) 1994-01-26 1998-02-18 Advanced Risc Mach Ltd selectable processing registers
JPH1011352A (ja) * 1996-06-19 1998-01-16 Hitachi Ltd データ処理装置およびそのレジスタアドレス変換方法
JPH1097423A (ja) * 1996-09-20 1998-04-14 Hitachi Ltd ループ処理の並列実行制御に適したレジスタ構成を有するプロセッサ
US6003126A (en) * 1997-07-01 1999-12-14 International Business Machines Special instruction register including allocation field utilized for temporary designation of physical registers as general registers
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
US5974525A (en) * 1997-12-05 1999-10-26 Intel Corporation System for allowing multiple instructions to use the same logical registers by remapping them to separate physical segment registers when the first is being utilized
JP3209205B2 (ja) * 1998-04-28 2001-09-17 日本電気株式会社 プロセッサにおけるレジスタ内容の継承装置
US6094716A (en) * 1998-07-14 2000-07-25 Advanced Micro Devices, Inc. Register renaming in which moves are accomplished by swapping rename tags
US6230262B1 (en) 1998-07-31 2001-05-08 Advanced Micro Devices, Inc. Processor configured to selectively free physical registers upon retirement of instructions

Also Published As

Publication number Publication date
TWI221579B (en) 2004-10-01
DE60138445D1 (de) 2009-06-04
CN1348132A (zh) 2002-05-08
JP2002175181A (ja) 2002-06-21
JP3817436B2 (ja) 2006-09-06
EP1193594A2 (en) 2002-04-03
US6938149B2 (en) 2005-08-30
US20020042872A1 (en) 2002-04-11
EP1193594B1 (en) 2009-04-22
CN1149472C (zh) 2004-05-12
EP1193594A3 (en) 2005-10-19

Similar Documents

Publication Publication Date Title
US8255665B2 (en) SIMD processor with register addressing, buffer stall and methods
KR100236525B1 (ko) 넓은 데이타 폭의 프로세서에서 다기능 데이타 정렬기
US8161266B2 (en) Replicating opcode to other lanes and modifying argument register to others in vector portion for parallel operation
JP5699554B2 (ja) ベクトル処理回路、命令発行制御方法、及びプロセッサシステム
KR100346515B1 (ko) 수퍼파이프라인된수퍼스칼라프로세서를위한임시파이프라인레지스터파일
US6058471A (en) Data processing system capable of executing groups of instructions in parallel
WO1996037829A1 (en) Tagged prefetch and instruction decoder for variable length instruction set and method of operation
KR20020025703A (ko) 리네이밍 장치 및 프로세서
US5459847A (en) Program counter mechanism having selector for selecting up-to-date instruction prefetch address based upon carry signal of adder which adds instruction size and LSB portion of address register
US9015216B2 (en) Fast static rotator/shifter with non two&#39;s complemented decode and fast mask generation
JP3725547B2 (ja) 限定ラン分岐予測
US20240004663A1 (en) Processing device with vector transformation execution
KR940000027B1 (ko) 생산라인의 고성능 명령어 실행방법 및 장치
JP7048612B2 (ja) ベクトル生成命令
JP3802038B2 (ja) 情報処理装置
JP2748957B2 (ja) データ処理装置
US6732251B2 (en) Register file circuitry
US6654872B1 (en) Variable length instruction alignment device and method
US5812845A (en) Method for generating an object code for a pipeline computer process to reduce swapping instruction set
US7028164B2 (en) Instruction fetch apparatus for wide issue processors and method of operation
JPH03269728A (ja) パイプライン計算機における命令実行制御方式
CN116893989A (zh) 管理在处理器寄存器堆中任意定义的旋转寄存器组的系统

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application