KR100861701B1 - Register renaming system and method based on value similarity - Google Patents

Register renaming system and method based on value similarity Download PDF

Info

Publication number
KR100861701B1
KR100861701B1 KR1020070002742A KR20070002742A KR100861701B1 KR 100861701 B1 KR100861701 B1 KR 100861701B1 KR 1020070002742 A KR1020070002742 A KR 1020070002742A KR 20070002742 A KR20070002742 A KR 20070002742A KR 100861701 B1 KR100861701 B1 KR 100861701B1
Authority
KR
South Korea
Prior art keywords
register
instruction
physical register
value
address
Prior art date
Application number
KR1020070002742A
Other languages
Korean (ko)
Other versions
KR20080065733A (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 연세대학교 산학협력단
Priority to KR1020070002742A priority Critical patent/KR100861701B1/en
Publication of KR20080065733A publication Critical patent/KR20080065733A/en
Application granted granted Critical
Publication of KR100861701B1 publication Critical patent/KR100861701B1/en

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A24TOBACCO; CIGARS; CIGARETTES; SIMULATED SMOKING DEVICES; SMOKERS' REQUISITES
    • A24FSMOKERS' REQUISITES; MATCH BOXES; SIMULATED SMOKING DEVICES
    • A24F15/00Receptacles or boxes specially adapted for cigars, cigarettes, simulated smoking devices or cigarettes therefor
    • A24F15/12Receptacles or boxes specially adapted for cigars, cigarettes, simulated smoking devices or cigarettes therefor for pocket use
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B65CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
    • B65DCONTAINERS FOR STORAGE OR TRANSPORT OF ARTICLES OR MATERIALS, e.g. BAGS, BARRELS, BOTTLES, BOXES, CANS, CARTONS, CRATES, DRUMS, JARS, TANKS, HOPPERS, FORWARDING CONTAINERS; ACCESSORIES, CLOSURES, OR FITTINGS THEREFOR; PACKAGING ELEMENTS; PACKAGES
    • B65D43/00Lids or covers for rigid or semi-rigid containers
    • B65D43/14Non-removable lids or covers
    • B65D43/20Non-removable lids or covers linearly slidable
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B65CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
    • B65DCONTAINERS FOR STORAGE OR TRANSPORT OF ARTICLES OR MATERIALS, e.g. BAGS, BARRELS, BOTTLES, BOXES, CANS, CARTONS, CRATES, DRUMS, JARS, TANKS, HOPPERS, FORWARDING CONTAINERS; ACCESSORIES, CLOSURES, OR FITTINGS THEREFOR; PACKAGING ELEMENTS; PACKAGES
    • B65D85/00Containers, packaging elements or packages, specially adapted for particular articles or materials
    • B65D85/07Containers, packaging elements or packages, specially adapted for particular articles or materials for compressible or flexible articles
    • B65D85/08Containers, packaging elements or packages, specially adapted for particular articles or materials for compressible or flexible articles rod-shaped or tubular
    • B65D85/10Containers, packaging elements or packages, specially adapted for particular articles or materials for compressible or flexible articles rod-shaped or tubular for cigarettes
    • B65D85/1036Containers formed by erecting a rigid or semi-rigid blank

Landscapes

  • Advance Control (AREA)

Abstract

본 발명은 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍 시스템 및 방법에 관한 것으로서, 비순차 실행을 하는 프로세서에서 레지스터에 저장되는 값의 유사성을 이용하여 물리적 레지스터를 명령어들 간에 공유하도록 함으로써, 레지스터 파일의 크기를 줄일 수 있고, 결과적으로 레지스터 파일의 동작 속도를 높여 프로세서 전체의 동작 속도와 성능을 향상시킬 수 있는 레지스터 리네이밍 시스템 및 방법에 관한 것이다. 이러한 본 발명은 실행 유닛에서 소스 값과 결과 값을 비교하여 유사한 값을 가진 레지스터를 찾게 되는 바, 종래와 같이 동일한 값을 검색하는데 사용되었던 다중 포트 CAM, 즉 'value-matching cache'를 삭제하는 대신, 실행 유닛에 간단한 비교기를 장착하여 대체함으로써, 시스템의 구성이 보다 간단해지는 장점을 가지며, 차세대 고성능 프로세서에 유용하게 적용될 수 있다.The present invention relates to a register renaming system and method based on similarity of register values, wherein a register file is shared between instructions using a similarity of values stored in a register in a processor that performs out of order execution. The present invention relates to a register renaming system and method that can reduce the size of the circuit board and consequently increase the operating speed of the register file to improve the overall operating speed and performance of the processor. The present invention compares the source value and the result value in the execution unit to find a register having a similar value. Instead of deleting a multi-port CAM, that is, a 'value-matching cache', which has been used to search for the same value as in the prior art, By replacing and replacing a simple comparator in the execution unit, the configuration of the system becomes simpler and can be usefully applied to the next generation high performance processor.

레지스터, 리네이밍, 수퍼스칼라, 프로세서, 유사성 기반, 동작속도 향상 Register, Renaming, Superscalar, Processor, Similarity-Based, Faster

Description

레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍 시스템 및 방법{Register renaming system and method based on value similarity}Register renaming system and method based on value similarity

도 1은 본 발명의 레지스터 리네이밍 시스템을 도시한 전체 구성도,1 is an overall configuration diagram showing a register renaming system of the present invention;

도 2는 본 발명의 레지스터 리네이밍 시스템에서 유사성 비교기를 가진 실행 유닛의 구성을 도시한 도면,2 is a diagram showing the configuration of an execution unit having a similarity comparator in the register renaming system of the present invention;

도 3은 본 발명의 레지스터 리네이밍 시스템에서 변경된 결과 버스의 필드 구성을 보여주는 도면,3 is a view showing a field configuration of a modified result bus in the register renaming system of the present invention;

도 4는 본 발명에 의하여 변경된 명령어 대기 큐의 구성을 보여주는 도면,4 is a view showing a configuration of a command waiting queue changed according to the present invention;

도 5는 본 발명에 의하여 변경된 레지스터 맵 테이블의 구성을 보여주는 도면,5 is a view showing the configuration of a register map table modified by the present invention;

도 6은 본 발명에 의해 물리 레지스터를 공유함으로써 물리 레지스터 사용량을 줄이는 예를 보여주는 도면,6 is a view showing an example of reducing physical register usage by sharing a physical register according to the present invention;

도 7은 레지스터 리네이밍을 설명하기 위한 도면.7 is a diagram for explaining register renaming.

<도면의 주요 부분에 대한 부호의 설명><Explanation of symbols for the main parts of the drawings>

10 : 페치 유닛 20 : 디코더 10: fetch unit 20: decoder

30 : 명령어 대기 큐 40 : 레지스터 맵 테이블30: instruction wait queue 40: register map table

50 : 프리 리스트 테이블 60 : 실행 유닛50: free list table 60: execution unit

62, 64 : 유사성 비교기 70 : 물리 레지스터 파일62, 64: Similarity Comparator 70: Physical Register File

80 : 결과 버스80: result bus

본 발명은 레지스터 리네이밍 시스템 및 방법에 관한 것으로서, 더욱 상세하게는 비순차적으로 명령어를 실행하는 프로세서에서 명령어들의 소스 및 목적 오퍼랜드들 사이의 상호의존관계를 해결해주는 레지스터 리네이밍 기술에 관한 것이다.The present invention relates to a register renaming system and method, and more particularly to a register renaming technique that resolves interdependencies between source and destination operands of instructions in a processor that executes instructions in a non-sequential order.

컴퓨터 프로그램의 명령어들은 논리적 레지스터(이하, '논리 레지스터'라 약칭함)를 매개로 데이터를 교환한다. 선행 명령어가 레지스터에 결과를 기록하면 그 결과를 필요로 하는 후행 명령어가 해당 레지스터를 읽어서 소스 오퍼랜드(operand)로 사용하는 것이다. 따라서, 컴퓨터 프로그램은 올바른 동작을 위해서는 순차적으로 수행되어야 한다. 순차적으로 명령어를 실행하기 위해서는 후행 명령어는 항상 모든 선행 명령어들이 실행을 완료하기를 기다린 후 실행되어야 한다.Instructions in a computer program exchange data through logical registers (hereinafter referred to as logical registers). When a preceding instruction writes the result to a register, the subsequent instruction that needs the result reads the register and uses it as the source operand. Therefore, computer programs must be executed sequentially for correct operation. To execute commands sequentially, the trailing command always waits for all preceding commands to complete execution before executing.

이와 같이 컴퓨터 시스템의 프로세서에서 프로그램의 명령어들을 순차적으로(in-order) 수행하는 것은 프로그램 수행의 기본이 되는 전제이다. 따라서, 초기의 프로세서에서는 프로그램을 순차적으로 수행하였으며, 이러한 시스템에서 레지스터를 포함한 프로세서의 상태(state)는 프로그램에서 지정된 순서대로 쓰여지고 읽혀진다. 이러한 시스템에서는 명령어 상의 레지스터 주소(register address)와 실제 물리적 레지스터(physical register)(이하, '물리 레지스터'라 칭함)는 1대1 대응 관계를 가질 수 있으며, 레지스터 주소가 주어지면 정해진 물리 레지스터를 쓰거나 읽으면 된다.As described above, in-order execution of instructions of a program in a processor of a computer system is a basic premise of program execution. Therefore, in the early processors, programs were executed sequentially, and in such a system, states of a processor including registers are written and read in the order specified in the program. In such a system, a register address in an instruction may have a one-to-one correspondence between an actual physical register (hereinafter referred to as a 'physical register'), and given a register address, a predetermined physical register may be written or You can read it.

프로그램에서 각각의 명령어들은 데이터 의존성(data dependency), 프로시져 의존성(procedural dependency) 및 자원 충돌(resource conflict)이 존재하지 않는 경우에 한하여 기능 유닛으로 이슈되어 실행된다. 이러한 의존성, 특히 데이터 의존성은 실제 프로그램 수행 중에 자주 발생하며, 이로 인해 프로그램의 성능을 향상시키는 데 한계를 가지게 된다.Each instruction in a program is issued and executed as a functional unit only when there are no data dependencies, procedural dependencies, and resource conflicts. These dependencies, especially data dependencies, occur frequently during actual program execution, which limits the performance of the program.

선행하는 명령어가 의존성으로 인해서 수행될 수 없을 때 후행 명령어 중에서 의존성이 존재하지 않는 것을 찾아서 이슈하고 수행할 수 있다면 컴퓨터 시스템의 성능을 향상시킬 수 있을 것이다. 여러 개의 기능 유닛을 가지고 있는 시스템에서 정수(integer) 유닛을 사용하는 명령어의 결과는 부동 소수점(floating-point) 유닛을 사용하는 명령어보다 더 빨리 그 결과가 나온다. 따라서, 부동 소수점 연산의 결과를 소스로 사용하는 선행 명령어가 데이터 의존성 때문에 수행되지 못할 때 정수 연산의 결과를 소스로 하는 후행 명령어는 어떠한 의존성도 존재하지 않는 경우가 자주 발생하며, 이러할 때에 후행 명령어를 선행 명령어보다 먼저 수행하도록 할 수 있다면 컴퓨터 시스템의 성능은 크게 향상된다. If a preceding instruction can not be executed due to a dependency and finds and issues and executes a dependency that does not exist among the following instructions, the performance of the computer system can be improved. In systems with multiple functional units, the result of an instruction using an integer unit is faster than an instruction using a floating-point unit. Therefore, when a preceding instruction that uses the result of a floating-point operation as a source cannot be performed because of data dependencies, a later instruction that sources the result of an integer operation often does not have any dependencies. The performance of a computer system can be greatly improved if it can be executed before a preceding instruction.

이러한 비순차적 명령어 이슈(out-of-order instruction issue)의 필요성은 단일 사이클(cycle)에 다수의 명령어를 이슈하고 수행하는 수퍼스칼라 프로세 서(superscalar processor)의 등장으로 더욱 커지게 되었다. 수퍼스칼라 구조에서는 다수의 명령어를 동시에 이슈할 수 있는 이슈 자원과 이 명령어들을 동시에 수행할 수 있는 다수의 기능 유닛들을 가지고 있다. 다수의 명령어를 동시에 수행하기 때문에 데이터 의존성으로 인해서 명령어를 이슈할 수 없을 경우 낭비되는 자원이 매우 크게 되며 비효율적으로 된다. 이러한 이유로 해서 많은 수퍼스칼라 구조에서는 비순차적 명령어 이슈 방법을 사용하여서 자원의 낭비를 줄이고 성능을 높인다.The need for this out-of-order instruction issue has grown even more with the advent of superscalar processors that issue and execute multiple instructions in a single cycle. The superscalar architecture has an issue resource that can issue multiple commands simultaneously and a number of functional units that can execute these commands simultaneously. Because multiple instructions are executed at the same time, if resources cannot be issued due to data dependency, the resources that are wasted becomes very large and inefficient. For this reason, many superscalar architectures use out of order instruction issue methods to reduce resource waste and increase performance.

비순차적 수행이라 함은 프로세서가 명령어를 처리함에 있어서 프로그램에 따라 순차적으로 처리하지 않고 처리 가능한 명령어들이 있으면 순서에 불구하고 미리 처리하는 것을 말하며, 각 명령어는 선행하는 명령어에 의한 수행결과에 의해 영향을 받는 데이터 의존성, 명령어를 처리하기 위한 과정에서의 자원 충돌 등이 생기지 않는다면 순서를 건너뛰어 후행하는 명령이라도 이슈되고 처리될 수 있는 바, 이러한 비순차적 수행에 의하면 프로세서의 성능을 크게 개선할 수 있다. Out-of-order execution means that the processor processes the instructions in advance without processing them sequentially according to the program. If there are instructions that can be processed, the instructions are processed in advance, and each instruction is affected by the execution result of the preceding instruction. If the received data dependency, resource conflict in the process of processing the instruction does not occur, even the following instruction can be issued and processed by skipping the sequence. Such non-sequential execution can greatly improve the performance of the processor.

비순차 방식의 프로세서는 위와 같이 선행 명령어의 실행이 완료되지 않았다고 하더라도 후행 명령어가 아직 완료되지 않은 선행 명령어들과 레지스터를 통한 의존관계를 가지고 있지 않을 경우에 후행 명령어를 먼저 실행할 수 있도록 한다. 비순차 명령어 실행을 하는 프로세서에서 레지스터 사이의 의존관계에는 크게 세 가지가 있다. 선행 명령어가 기록한 레지스터 값을 후행 명령어가 읽음으로써 발생하는 ‘쓰기 후 읽기(RAW)’ 의존관계, 선행 명령어가 특정 레지스터를 읽은 후에 후행 명령어가 해당 레지스터에 기록하는 ‘읽기 후 쓰기(WAR)’ 의존관계, 선행 명령어와 후행 명령어가 같은 레지스터에 값을 기록할 때 발생하는 ‘쓰기 후 쓰기(WAW)’ 의존관계가 그것이다. 선행 명령어와의 사이에 이 세 가지 중의 하나의 의존관계가 성립된다면 해당 명령어는 의존관계를 가진 모든 선행 명령어가 완료된 이후에나 실행이 가능하다. 이 중 ‘쓰기 후 읽기’ 의존관계는 정상적인 프로그램의 흐름에서 필요 불가결하게 발생하는 것이나, ‘읽기 후 쓰기’와 ‘쓰기 후 쓰기’ 의존관계는 유한한 자원인 논리 레지스터 주소를 재사용하는 과정에서 발생하는 일종의 거짓 의존관계이다. 이러한 거짓 의존관계를 풀어주고자 개발된 기술이 레지스터 리네이밍(register renaming)이다.The non-sequential processor enables the execution of a subsequent instruction first even if the execution of the preceding instruction is not completed as described above when the latter instruction does not have a dependency through registers with the preceding instructions that have not yet been completed. There are three major dependencies between registers in processors that execute out of order instructions. 'Write after read (RAW)' dependency caused by a subsequent instruction reading a register value written by a preceding instruction, and 'Read after write (WAR)' dependent on a subsequent instruction writing to a register after the preceding instruction reads a specific register. Relationships, 'write after write' (WAW) dependencies that occur when preceding and following instructions write values to the same register. If one of these three dependencies is established between the preceding commands, the command can be executed only after all preceding commands with dependencies have completed. Among them, the 'write after read' dependency is indispensable in normal program flow, while the 'read after write' and 'write after write' dependency occurs during the reuse of finite resources, logical register addresses. It's a kind of false dependency. The technique developed to solve this false dependency is register renaming.

Moudgill 등은 하나의 물리 레지스터 파일을 사용하는 레지스터 리네이미이 시스템의 기본적인 구조를 제안하였으며, 이러한 기술은 현재 수퍼스칼라 프로세서에 널리 사용되고 있다[Moudgill et al., "Register Renaming and Dynamic Speculation: An Alternative Approach", Proceedings of the 26th Intl., Symposium on Microarchitecture, 1993, IEEE, pp.203~213.].Moudgill et al. Proposed the basic structure of a register renaming system using a single physical register file, which is now widely used in superscalar processors [Moudgill et al., "Register Renaming and Dynamic Speculation: An Alternative Approach". , Proceedings of the 26th Intl., Symposium on Microarchitecture, 1993, IEEE, pp.203-213.].

레지스터 리네이밍은 레지스터에 결과를 기록하는 모든 명령어의 목적지 논리 레지스터에 새로운 물리 레지스터를 할당함으로써(도 7 참조) 논리 레지스터 주소를 재사용하지 않도록 하여 거짓 의존관계를 해소한다. 레지스터 리네이밍은 명령어 세트 아키텍처로 정의된 논리 레지스터보다 많은 개수의 물리 레지스터를 가진 물리 레지스터 파일을 사용한다. 물리 레지스터의 개수는 프로세서 파이프라인에서 동시에 최대한 수용 가능한 명령어의 개수와 같도록 정해진다. 명령어가 메모리로부터 페치(fetch)되면 파이프라인의 디코드 단계에서는 각 명령어의 목적지 레 지스터로 비어있는 물리 레지스터를 하나씩 할당하고, 해당 명령어의 목적지 논리 레지스터가 어떠한 물리 레지스터로 할당되었는가를 나타내는 레지스터 맵 테이블에 새로 할당된 물리 레지스터 주소를 기록한다. 비어있는 물리 레지스터 주소는 각 물리 레지스터가 현재 사용 중인지 혹은 새로운 할당 요청을 대기하고 있는지를 표시하는 프리 리스트 테이블을 검색함으로써 알아낼 수 있다. 동시에 명령어의 소스 논리 레지스터 주소를 이용하여 레지스터 맵 테이블을 검색하면 해당 논리 레지스터가 어떤 물리 레지스터로 할당되었는가를 알 수 있다. 이러한 과정을 거쳐 명령어의 소스 레지스터와 목적지 레지스터를 모두 물리 레지스터로 변환하는 리네이밍 과정을 거치면 ‘쓰기 후 읽기’ 의존관계는 그대로 유지되지만, 모든 목적지 레지스터를 새로운 물리 레지스터로 할당했으므로 ‘읽기 후 쓰기’와 ‘쓰기 후 쓰기’ 의존관계는 사라진다. 이렇게 변환된 명령어를 명령어 대기 큐(queue)에 넣고 명령어의 모든 소스 레지스터들에 대해서 ‘쓰기 후 읽기’ 의존관계를 가진 선행 명령어들이 모두 실행 완료되기를 기다린다. 상기 조건이 만족되면 명령어는 선행 명령어들의 완료 상태와 관계없이 실행 가능한 상태가 되며, 또한 실행 유닛으로 보내어져 소스 물리 레지스터 주소를 사용하여 물리 레지스터 파일을 읽은 후 실행되고, 이어 목적지 물리 레지스터 주소가 지정한 위치에 결과를 기록한다.Register renaming resolves false dependencies by not reusing logical register addresses by allocating a new physical register to the destination logical register of all instructions that write a result to the register (see FIG. 7). Register renaming uses a physical register file with more physical registers than the logical registers defined by the instruction set architecture. The number of physical registers is determined to be equal to the maximum number of instructions that can be accommodated simultaneously in the processor pipeline. When an instruction is fetched from memory, the decode stage of the pipeline allocates one empty physical register to the destination register for each instruction and places it in the register map table indicating which physical register the destination logical register for that instruction is allocated. Record the newly allocated physical register address. An empty physical register address can be found by looking in a free list table that indicates whether each physical register is currently in use or waiting for a new allocation request. At the same time, a search of the register map table using the source logical register address of an instruction tells which physical register the logical register is allocated to. This renaming process converts both the source and destination registers of the instruction into physical registers, while the 'write after read' dependency remains the same, but since all destination registers have been assigned to the new physical register, The 'write after write' dependency disappears. Put the converted instruction in the instruction wait queue and wait for all the preceding instructions with 'write and read' dependencies on all the source registers of the instruction to complete execution. If the above conditions are met, the instruction becomes executable regardless of the completion status of the preceding instructions, and is also sent to the execution unit to read and execute the physical register file using the source physical register address, and then specified by the destination physical register address. Record the results in place.

비순차적으로 실행된 명령어들은 모든 선행 명령어가 실행을 완료한 후에 순차적으로 프로세서에서 퇴거(retire)되며, 이때 해당 명령어의 목적지 물리 레지스터도 함께 퇴거(retire)된다. 퇴거된 물리 레지스터는 새로 페치(fetch)되는 후행 명령어를 리네이밍하는 데에 재사용된다.Instructions executed out of order are retired from the processor sequentially after all preceding instructions have completed execution, with the destination physical register of that instruction also retired. The evicted physical register is reused to rename the newly fetched trailing instruction.

활성 명령어(active instruction)는 명령어 대기 큐에 입력된 후 실행을 완료하고 순차적으로 퇴거되기 전까지의 명령어를 말한다. 대부분의 명령어 세트 아키텍처에서 명령어들은 최대 하나씩의 목적지 레지스터를 가지므로, 모든 활성 명령어에 하나씩의 목적지 물리 레지스터를 할당해 주기 위해서는 물리 레지스터 파일에 활성 명령어 수에 해당하는 만큼의 물리 레지스터가 있어야 한다. 그러나, 다중 포트 SRAM으로 제작되는 물리 레지스터 파일은 엔트리 수가 많아질수록 동작 속도가 낮아지는 경향을 보인다. 따라서, 프로세서의 성능을 높이기 위해 명령어 대기 큐의 크기를 확장하거나 파이프라인을 길게 하여 동작 속도를 올리는 등, 활성 명령어 수를 늘리는 방향으로 프로세서를 제작하는 경우에는 물리 레지스터 파일의 엔트리 수가 늘어남으로 인한 속도 저하 문제가 발생하게 된다. 이러한 문제를 해결하기 위하여 레지스터 공유(register sharing) 기술이 개발된 바 있다. An active instruction refers to an instruction that is input to an instruction waiting queue and then completes execution and is sequentially evicted. In most instruction set architectures, instructions have a maximum of one destination register, so to allocate one destination physical register to every active instruction, there must be as many physical registers as there are active instructions in the physical register file. However, the physical register file produced by the multi-port SRAM tends to be slower as the number of entries increases. Therefore, if the processor is built in the direction of increasing the number of active instructions, such as increasing the size of the instruction wait queue or increasing the pipeline speed to increase the performance of the processor, the speed due to the increase in the number of entries in the physical register file Degradation problem occurs. Register sharing technology has been developed to solve this problem.

Jourdan 등은 Moudgill의 리네이밍 시스템을 개량하여 동일한 값을 가진 여러 개의 물리 레지스터를 통합, 공유하도록 함으로써 물리 레지스터 파일의 크기를 줄이고 동작 속도를 빠르게 하는 기술을 제안하였다[Jourdan et al., "A Novel Renaming Scheme to Exploit value Temporal Locality through Physical Register Reuse and Unification", 31st Annual ACM/IEEE International Symposium on Microarchitecture, pp. 216~225, 1998].Jourdan et al. Proposed a technique that improves Moudgill's renaming system to integrate and share multiple physical registers with the same value, thereby reducing the size of the physical register file and speeding up its operation. [Jourdan et al., "A Novel Renaming Scheme to Exploit value Temporal Locality through Physical Register Reuse and Unification ", 31st Annual ACM / IEEE International Symposium on Microarchitecture, pp. 216-225, 1998].

레지스터 공유 기술은 같은 값을 갖는 물리 레지스터들을 하나의 물리 레지스터로 공유하도록 함으로써 리네이밍에 의해 필요한 물리 레지스터의 수를 감소시키는 기술이다. 명령어를 페치(fetch)하는 과정과 디코드하여 명령어 대기 큐에 넣 는 과정은 상기 기술한 일반적인 리네이밍과 같다. 레지스터 공유 기술에서는 레지스터 캐쉬(register cache)를 사용하여 명령어들의 실행 결과로 최근에 생성된 값들과 그 값들이 저장되어 있는 물리 레지스터 주소를 저장하고 있다. 명령어가 실행 유닛에서 실행을 완료하면 그 결과 값을 이용하여 명령어 캐쉬를 검색한다. 명령어 캐쉬에서 같은 값이 발견되면 그 값이 기존에 저장되어있는 물리 레지스터 주소를 얻을 수 있다. 현재 수행 완료된 명령어의 결과와 레지스터 캐쉬에서 검색한 값이 같으므로 현재 수행 완료된 명령어의 목적지 물리 레지스터에는 해당 값을 기록하지 않는다. 대신 현재 명령어의 목적지 물리 레지스터 주소를 레지스터 캐쉬에서 검색한 물리 레지스터 주소로 변경하고 원래의 목적지 물리 레지스터 주소와 변경된 목적지 물리 레지스터 주소를 후행 명령어들에 전달한다. 후행 명령어들은 자신들의 소스 물리 레지스터 주소와 전달된 원래의 물리 레지스터 주소를 비교하여 두 주소가 같은 경우 변경된 물리 레지스터 주소로 자신의 소스 물리 레지스터 주소를 교체한다. 동시에 원래의 목적지 물리 레지스터는 즉시 퇴거된다. 일련의 여러 명령어에 의해 생성된 결과 값이 같은 경우에 가장 먼저 결과를 저장한 명령어는 디코드 단에서 할당받은 물리 레지스터를 계속 점유하지만, 후속 명령어들은 해당 값이 먼저 저장된 물리 레지스터로 자신들의 목적지 물리 레지스터 주소를 변경함으로써 디코드 단에서 할당받았던 물리 레지스터는 즉시 퇴거시킬 수 있다. 결과적으로 일정 수의 활성 명령어를 지원하는 프로세서에서 요구되는 물리 레지스터의 수를 감소시킬 수 있으며, 물리 레지스터 수의 감소는 물리 레지스터 파일의 동작 속도를 향상시키는 효과가 있다.Register sharing technology is a technique for reducing the number of physical registers required by renaming by sharing physical registers having the same value as one physical register. The process of fetching the instruction and decoding it into the instruction wait queue is the same as the general renaming described above. Register sharing technology uses a register cache to store recently generated values as a result of the execution of instructions and the physical register address where they are stored. When an instruction completes its execution in an execution unit, the result is retrieved from the instruction cache. If the same value is found in the instruction cache, you can get the physical register address where it is stored. Since the result of the currently executed instruction is the same as the value retrieved from the register cache, the corresponding value is not written to the destination physical register of the currently executed instruction. Instead, it changes the destination physical register address of the current instruction to the physical register address retrieved from the register cache and passes the original destination physical register address and the changed destination physical register address to subsequent instructions. Subsequent instructions compare their source physical register address with the original physical register address passed in and replace their source physical register address with the modified physical register address if both addresses are equal. At the same time, the original destination physical register is evicted immediately. If the result value produced by a series of instructions is the same, the first instruction that stores the result continues to occupy the physical register allocated by the decode stage, but subsequent instructions are their destination physical registers with the physical register where the value is stored first. By changing the address, the physical register allocated at the decode stage can be immediately retired. As a result, the number of physical registers required by a processor supporting a certain number of active instructions can be reduced, and the reduction of the number of physical registers has the effect of improving the operation speed of the physical register file.

그런데, 프로세서의 발전 추세에 따라 더 많은 물리 레지스터가 요구될 것이므로 차세대 고성능 프로세서에서 속도의 저하 없이 그 요구량을 만족시키기 위해서는 종래 기술의 개선이 필요하다. 종래 기술에서는 동일한 값을 가진 여러 개의 물리 레지스터를 통합, 공유하도록 함으로써 물리 레지스터의 소모량 및 레지스터 파일의 크기를 줄이고 동작 속도를 빠르게 하고 있다. 그러나, 동작 속도를 보다 빠르게 하기 위해서는 더 많은 레지스터를 공유하도록 하여 레지스터의 수를 좀더 감소시킬 필요가 있고, 따라서 종래 기술을 차세대 고성능 프로세서에 적용하고자 하는 데에는 개선의 여지가 있다. 또한 동일한 값을 검색하여 동일한 값을 가진 레지스터를 공유하도록 하는 데에는 'value-matching cache'라는 일종의 다중 포트 CAM(Content Addressable Memory)이 사용되는데["Register Renaming to Optimize Identical Register Values", 미국특허 6505293 B1(2003.1.7)], 'value-matching cache'는 많은 포트를 가진 CAM으로서 그 크기가 크고 동작 속도가 느리다. 이는 파이프라인의 길이를 증가시켜 성능을 저하시키는 원인이 된다. However, since more physical registers will be required in accordance with the development trend of the processor, improvement of the prior art is required to satisfy the requirements without deterioration in speed in the next generation of high performance processors. In the prior art, by integrating and sharing a plurality of physical registers having the same value, the physical register consumes less, the size of the register file is reduced, and the operation speed is increased. However, to make the operation speed faster, it is necessary to reduce the number of registers further by sharing more registers, and thus there is room for improvement in applying the prior art to the next generation high performance processor. In addition, a kind of multi-port Content Addressable Memory (CAM) called 'value-matching cache' is used to retrieve the same value and share the register with the same value ["Register Renaming to Optimize Identical Register Values", US Patent 6505293 B1 (2003.1.7)], 'value-matching cache' is a CAM with many ports, which is large in size and slow in operation. This increases the length of the pipeline, causing a decrease in performance.

따라서, 본 발명은 상기와 같은 문제점을 해결하기 위하여 발명한 것으로서, 본 발명은 비순차 실행을 하는 슈퍼스칼라 및 다중 스레드(Simultaneous Multithread, SMT) 프로세서에서 필수적으로 사용되는 기존 레지스터 리네이밍 방법을 개선하여, 기존 방법에 비하여 작은 수의 물리 레지스터를 사용하도록 함으로써, 동작 속도와 성능을 개선하는 데에 그 목적이 있다.Therefore, the present invention has been invented to solve the above problems, and the present invention improves the existing register renaming method which is essentially used in a superscalar and multithreaded (SMT) processor that performs out of order. The purpose is to improve the operation speed and performance by using a smaller number of physical registers than the conventional method.

특히, 유사한 값을 갖는 여러 물리 레지스터들을 하나의 물리 레지스터로 공유하고 나머지를 퇴거시킴으로써, 동일한 값을 가진 물리 레지스터를 공유하는 종래 기술에 비하여 물리 레지스터 요구량을 추가적으로 감소시켜 물리 레지스터 요구량이 많은 고성능 슈퍼스칼라 및 다중 스레드 프로세서의 동작 속도를 향상시키는 데에 목적이 있다.In particular, by sharing several physical registers with similar values into one physical register and retiring the rest, a higher performance superscalar with higher physical register requirements is achieved by further reducing physical register requirements compared to the prior art which shares physical registers with the same value. And to improve the operating speed of a multi-threaded processor.

이하, 첨부한 도면을 참조하여 본 발명을 상세히 설명하면 다음과 가다.Hereinafter, the present invention will be described in detail with reference to the accompanying drawings.

상기한 목적을 달성하기 위하여, 본 발명은, 페치 유닛에서 명령어가 페치되면, 하기 프리 리스트 테이블을 검색하여 해당 명령어의 목적지 주소에 물리 레지스터를 할당하고, 해당 명령어에 할당된 물리 레지스터 주소를 명령어의 원래 목적지 주소에 해당하는 하기 레지스터 맵 테이블의 엔트리에 기록하는 디코더와; 실행 유닛 내에서 명령어 실행 후 결과 오퍼랜드와 소스 오퍼랜드의 비트열을 비교하여 두 값의 총 M 비트 중 상위 L 비트가 같은 경우에 상기 결과 오퍼랜드와 소스 오퍼랜드가 유사성이 있다고 판정하는 비교기와; 상기 비교기에서 유사성이 있다는 판정이 출력된 경우에 참(truth)이 된 레지스터 변경 유효 비트와 함께 현재 명령어의 원래 목적지 물리 레지스터 주소, 유사한 것으로 판정된 소스 오퍼랜드의 물리 레지스터 주소, 결과 값의 하위 M-L 비트에 해당하는 결과 값과 소스 값의 차이값 정보를 상기 실행 유닛으로부터 하기 레지스터 맵 테이블, 명령어 대기 큐, 프리 레지스터 리스트로 전달하는 결과 버스와; 각 레지스터별로 현재 매핑된 최신의 물리 레지스터 주소를 보관하면서 상기 결과 버스의 내용과 일치되는 엔트리의 물리 레지스터 매핑을 변경할 수 있는 레지스터 맵 테이블과; 디코딩이 완료된 명령어와 소스 물리 레지스터 주소, 원래 목적지 물리 레지스터 주소를 보관하면서 상기 결과 버스의 내용과 일치되는 엔트리의 소스 물리 레지스터 주소를 변경할 수 있는 명령어 대기 큐와; 물리 레지스터별로 하나의 엔트리를 가지면서, 해당 물리 레지스터가 현재 동작 중인 명령어에 의하여 점유되어 있는 상태인가 혹은 프리하여 새로운 명령어의 리네이밍에 사용될 수 있는 상태인가를 나타내고 몇 개의 명령어가 해당 물리 레지스터를 결과 물리 레지스터로 공유하고 있는가를 나타내는 카운터로 구성된 프리 리스트 테이블;을 포함하는 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍 시스템을 제공한다. In order to achieve the above object, according to the present invention, when an instruction is fetched from a fetch unit, the present invention searches the following free list table and allocates a physical register to a destination address of the instruction, and assigns the physical register address assigned to the instruction to A decoder for writing to an entry in the following register map table corresponding to the original destination address; A comparator that compares the bit strings of the result operand and the source operand after executing the instruction in an execution unit and determines that the result operand and the source operand are similar when the upper L bits of the total M bits of the two values are the same; The original destination physical register address of the current instruction, the physical register address of the source operand determined to be similar, and the lower ML bits of the result value, together with a register change valid bit that is true if the comparator determines that similarity is output. A result bus for transferring the difference value information between the result value and the source value corresponding to the register map table, the instruction waiting queue, and the free register list from the execution unit; A register map table for changing a physical register mapping of an entry that matches the contents of the result bus while maintaining the latest physical register address currently mapped for each register; An instruction waiting queue for storing a decoded instruction, a source physical register address, and an original destination physical register address while changing a source physical register address of an entry that matches the contents of the result bus; With one entry for each physical register, it indicates whether the corresponding physical register is occupied by the currently running instruction or whether it can be used for renaming a new instruction and how many instructions result in that physical register. It provides a register renaming system based on the similarity of register values, including a pre-list table consisting of a counter indicating whether to share a physical register.

바람직하게는, 상기 실행 유닛은, 상기 명령어 대기 큐의 명령어가 실행 가능한 상태가 되어 전달되면, 소스 물리 레지스터 주소를 이용하여 물리 레지스터 파일을 읽고, 레지스터 파일로부터 읽어들인 값의 하위 M-L 비트 값을 미리 저장해 둔 상기 차이값으로 치환하여 소스 오프랜드를 얻도록 된 것을 특징으로 한다.Preferably, the execution unit reads a physical register file using a source physical register address, and reads a lower ML bit value of a value read from a register file in advance when the instruction of the instruction waiting queue becomes executable. The source offland may be obtained by substituting the stored difference value.

또한 상기 명령어 대기 큐의 소스 오퍼랜드 필드는, 결과 버스를 통해 전달된 데이터 필드의 레지스터 변경 유효 비트가 참(truth)이 된 상태일 때, 참(truth)이 되는 차이값 유효 비트와, 결과 버스를 통해 전달된 차이값을 저장하는 차이값 필드를 가지는 것을 특징으로 한다.In addition, the source operand field of the instruction waiting queue may include a difference value valid bit that is true when the register change valid bit of the data field transferred through the result bus becomes true, and a result bus. It has a difference value field for storing the difference value transmitted through.

또한 상기 레지스터 맵 테이블의 각 논리 레지스터 엔트리는, 결과 버스를 통해 전달된 데이터 필드의 레지스터 변경 유효 비트가 참(truth)이 된 상태일 때, 참(truth)이 되는 차이값 유효 비트와, 결과 버스를 통해 전달된 차이값을 저장하는 차이값 필드를 가지는 것을 특징으로 한다.Each logical register entry of the register map table may include a difference value valid bit that is true when the register change valid bit of the data field transferred through the result bus becomes true, and a result bus. It characterized in that it has a difference value field for storing the difference value transmitted through.

또한 상기 디코더는 페치 유닛에서 명령어가 페치되면 프리 리스트 테이블을 검색하여 엔트리가 카운터 '0' 값을 가지고 있는 물리 레지스터를 찾아내어 해당 명령어의 목적지 물리 레지스터 주소에 할당하는 동시에 할당된 물리 레지스터에 해당하는 프리 리스트 테이블 엔트리의 카운터 값을 '1'로 증가시키고; 상기 프리 리스트 테이블은 결과 버스의 정보를 받아서 원래 목적지 물리 레지스터 주소가 가리키는 물리 레지스터 엔트리의 카운터 값을 '1' 만큼 감소시켜 해당 물리 레지스터가 프리한 상태를 나타내는 '0'으로 변경시키는 동시에 결과 버스 상의 소스 물리 레지스터 주소에 해당하는 엔트리의 카운터 값은 현재 동작 중인 명령어에 의하여 점유되어 있는 상태를 나타내는 '1'로 증가시키는 것을 특징으로 한다.When the instruction is fetched from the fetch unit, the decoder searches the free list table to find a physical register whose entry has a counter value of '0', assigns it to the destination physical register address of the corresponding instruction, and corresponds to the allocated physical register. Increment the counter value of the free list table entry to '1'; The free list table receives the information of the result bus, decrements the counter value of the physical register entry pointed to by the original destination physical register address by '1', and changes it to '0' indicating the free state of the corresponding physical register. The counter value of the entry corresponding to the source physical register address is increased to '1' indicating a state occupied by the currently operating instruction.

그리고, 명령어의 퇴거와 동반한 물리 레지스터의 퇴거시에는 해당 물리 레지스터의 프리 리스트 테이블 엔트리의 카운터 값이 '1'만큼 감소되어 프리한 상태를 나타내는 '0'으로 변경되는 것을 특징으로 한다.When the physical register is accompanied by the retirement of the instruction, the counter value of the free list table entry of the corresponding physical register is decreased by '1' to be changed to '0' indicating the free state.

한편, 본 발명은, (a) 페치 유닛에서 명령어가 페치되면, 디코더에서 프리 리스트 테이블을 검색하여 해당 명령어의 목적지 주소에 물리 레지스터를 할당하고 해당 명령어에 할당된 물리 레지스터 주소를 명령어의 원래 목적지 주소에 해당하는 레지스터 맵 테이블 엔트리에 기록하는 단계와; (b) 이어 상기 명령어가 명령어 대기 큐에 등록된 후 실행이 완료되면, 실행 유닛의 유사성 비교기에서 명령어 실행 후 실행 결과 값과 소스 오퍼랜드 값을 비교하여 유사성 여부를 판정하는 단계 와; (c) 상기 두 값의 총 M 비트 중 상위 L 비트가 같다면, 유사성이 있는 것으로 판정하여, 상기 실행 유닛이, 디코드 단계에서 할당된 원래 목적지 물리 레지스터 주소, 유사한 것으로 판정된 소스 오퍼랜드의 물리 레지스터 주소, 결과 값의 하위 M-L 비트에 해당하는 결과 값과 소스 값의 차이값을 결과 버스를 통해 명령어 대기 큐, 레지스터 맵 테이블, 프리 레지스터 리스트로 전달하는 단계와; (d) 상기 결과 버스를 통해 명령어 대기 큐, 레지스터 맵 테이블, 프리 레지스터 리스트에 상기 정보들이 전달되면, 레지스터 변경이 수행되는 단계;를 포함하는 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍 방법을 제공한다.Meanwhile, in the present invention, (a) when an instruction is fetched from a fetch unit, the decoder searches a free list table to allocate a physical register to a destination address of the corresponding instruction, and replaces the physical register address assigned to the instruction with the original destination address of the instruction. Writing to a register map table entry corresponding to the corresponding entry; (b) if the execution is completed after the instruction is registered in the instruction waiting queue, comparing the execution result value and the source operand value after executing the instruction in a similarity comparator of the execution unit to determine whether or not the similarity; (c) if the upper L bits of the total M bits of the two values are the same, it is determined that there is similarity, so that the execution unit is the original destination physical register address assigned in the decode step, the physical register of the source operand determined to be similar; Transferring the difference between the result value and the source value corresponding to the address and the lower ML bits of the result value to the instruction wait queue, the register map table, and the free register list through the result bus; (d) if the information is transferred to the instruction wait queue, the register map table, and the free register list via the result bus, performing a register change; providing a register renaming method based on the similarity of register values do.

바람직하게는, 상기 (d) 단계에서, 상기 명령어 대기 큐에 등록되어 대기 중인 후행 명령어들의 소스 물리 레지스터 주소와 상기 결과 버스 상의 원래 목적지 물리 레지스터 주소가 일치하면, 해당 후행 명령어의 소스 오퍼랜드의 물리 레지스터 주소를 상기 결과 버스 상의 소스 오퍼랜드의 물리 레지스터 주소로 변경하고, 명령어 대기 큐의 소스 오퍼랜드 필드에 마련된 차이값 필드에 상기 결과 버스 상의 차이값을 저장하는 동시에 차이값 유효 비트를 참(truth)이 되도록 하는 것을 특징으로 한다.Preferably, in the step (d), if the source physical register address of the following instruction registered in the instruction waiting queue and waiting and the original destination physical register address on the result bus match, the physical register of the source operand of the subsequent instruction Change the address to the physical register address of the source operand on the result bus, store the difference on the result bus in the difference value field provided in the source operand field of the instruction wait queue and make the difference valid bit true. Characterized in that.

또한 상기 (d) 단계에서, 상기 결과 버스 상의 원래 목적지 물리 레지스터 주소와 일치하는 값을 가진 레지스터 맵 테이블의 엔트리를 검색하여 일치하는 것이 발견되면, 해당 맵 테이블 엔트리의 물리 레지스터 주소를 상기 결과 버스 상의 소스 오퍼랜드의 물리 레지스터 주소로 변경하고, 맵 테이블 엔트리에 마련된 차이 값 필드에 상기 결과 버스 상의 차이값을 저장하는 동시에 차이값 유효 비트를 참(truth)이 되도록 하는 것을 특징으로 한다.Further, in the step (d), if a match is found by searching an entry of a register map table having a value matching the original destination physical register address on the result bus, the physical register address of the corresponding map table entry on the result bus is found. Change to the physical register address of the source operand, and store the difference value on the result bus in the difference value field provided in the map table entry and make the difference value valid bit true.

또한 상기 (a) 단계에서, 디코더는 페치 유닛에서 명령어가 페치되면 프리 리스트 테이블을 검색하여 엔트리가 카운터 '0' 값을 가지고 있는 물리 레지스터를 찾아내어 해당 명령어의 목적지 물리 레지스터 주소에 할당하는 동시에 할당된 물리 레지스터에 해당하는 프리 리스트 테이블 엔트리의 카운터 값을 '1'로 증가시키고; 상기 (d) 단계에서, 프리 리스트 테이블은 결과 버스의 정보를 받아서 원래 목적지 물리 레지스터 주소가 가리키는 물리 레지스터 엔트리의 카운터 값을 '1' 만큼 감소시켜 해당 물리 레지스터가 프리한 상태를 나타내는 '0'으로 변경시키는 동시에 결과 버스 상의 소스 물리 레지스터 주소에 해당하는 엔트리의 카운터 값은 현재 동작 중인 명령어에 의하여 점유되어 있는 상태를 나타내는 '1'로 증가시키는 것을 특징으로 한다. Also, in step (a), when the instruction is fetched from the fetch unit, the decoder searches the free list table to find a physical register whose entry has a counter value of '0', and assigns it to the destination physical register address of the corresponding instruction. Increment the counter value of the free list table entry corresponding to the registered physical register to '1'; In step (d), the free list table receives the information of the result bus and decrements the counter value of the physical register entry pointed to by the original destination physical register address by '1' to '0' indicating the free state of the corresponding physical register. At the same time, the counter value of the entry corresponding to the source physical register address on the result bus is increased to '1' indicating the state occupied by the currently operating instruction.

또한 이후의 명령어 퇴거 단계에서, 명령어의 퇴거와 동반한 물리 레지스터의 퇴거시에는 해당 물리 레지스터의 프리 리스트 테이블 엔트리의 카운터 값을 '1'만큼 감소시켜 프리한 상태를 나타내는 '0'으로 변경시키는 것을 특징으로 한다.In the subsequent instruction retirement step, when the retirement of a physical register accompanying the retirement of the instruction is performed, the counter value of the free list table entry of the corresponding physical register is decremented by '1' to be changed to '0' indicating the free state. It features.

그리고, 상기 실행 유닛은, 상기 명령어 대기 큐의 명령어가 실행 가능한 상태가 되어 전달되면, 소스 물리 레지스터 주소를 이용하여 물리 레지스터 파일을 읽고, 레지스터 파일로부터 읽어들인 값의 하위 M-L 비트 값을 미리 저장해 둔 상기 차이값으로 치환하여 소스 오프랜드를 얻도록 된 것을 특징으로 한다.The execution unit reads a physical register file using a source physical register address and stores a lower ML bit value of a value read from a register file in advance when the instruction in the instruction waiting queue is executed and delivered. The source offland may be obtained by substituting the difference.

이하, 첨부한 도면을 참조하여 본 발명에 대해 더욱 상세히 설명하면 다음과 같다.Hereinafter, the present invention will be described in more detail with reference to the accompanying drawings.

첨부한 도 1은 본 발명의 레지스터 리네이밍 시스템을 도시한 전체 구성도이다.1 is an overall configuration diagram illustrating the register renaming system of the present invention.

이에 도시한 바와 같이, 본 발명의 레지스터 리네이밍 시스템은, 실행 유닛(60) 내에서 소스 오퍼랜드와 결과 오퍼랜드의 비트열을 비교하여 두 값의 상위 L 비트가 같은 경우에 소스 오퍼랜드와 결과 오퍼랜드가 유사성이 있다고 판정하는 비교기(62,64)와; 상기 비교기(62,64)에서 유사성이 있다는 판정이 출력된 경우에 현재 명령어의 원래 결과 물리 레지스터 주소(원래 목적지 물리 레지스터 주소), 결과와 유사한 것으로 판정된 소스 오퍼랜드의 물리 레지스터 주소(새로운 물리 레지스터 주소), 소스 값과 결과 값의 차이 64-L 비트 값을 명령어 대기 큐(30), 레지스터 맵 테이블(40), 프리 리스트 테이블(50)에 전달하는 결과 버스(80)와; 각 아키텍처적인 레지스터별로 현재 매핑된 최신의 물리 레지스터 주소를 보관하면서 상기 결과 버스(80)의 내용과 일치되는 엔트리의 물리 레지스터 매핑을 변경할 수 있는 레지스터 맵 테이블(40)과; 디코딩이 완료된 명령어와 소스 물리 레지스터 주소, 결과 물리 레지스터 주소를 보관하면서 상기 결과 버스(80)의 내용과 일치되는 엔트리의 소스 물리 레지스터 주소를 변경할 수 있는 명령어 대기 큐(30)와; 물리 레지스터별로 하나의 엔트리를 가지며 해당 물리 레지스터가 현재 동작 중인 명령어에 의하여 점유되어 있는 상태인가 혹은 프리하여 새로운 명령어의 리네이밍에 사용될 수 있는 상태인가를 나타내고 몇 개의 명령어가 해당 물리 레지스터를 결과 물리 레지스터로 공유하고 있는가를 나타내는 카운터로 구성된 프리 리스트 테이블(50);을 구비함으로써, 일반적인 리네이밍에 비하여 물리 레지스터 요구량을 줄 일 수 있고, 물리 레지스터 파일(70)의 동작 속도를 증가시킬 수 있도록 구성된다.As shown here, the register renaming system of the present invention compares the bit strings of the source operand and the result operand in the execution unit 60 so that the source operand and the result operand are similar when the upper L bits of the two values are the same. Comparators 62 and 64 for determining that there is; The original result physical register address of the current instruction (original destination physical register address), the physical register address of the source operand that is determined to be similar to the result when the comparator 62, 64 determines that similarity is output. A result bus 80 for transferring the 64-L bit value between the source value and the result value to the instruction waiting queue 30, the register map table 40, and the free list table 50; A register map table (40) capable of changing the physical register mapping of an entry that matches the contents of the result bus (80) while maintaining the latest physical register address currently mapped for each architectural register; An instruction waiting queue (30) capable of changing a source physical register address of an entry that matches the contents of the result bus (80) while retaining a decoded instruction, a source physical register address, and a result physical register address; It has one entry for each physical register and indicates whether the corresponding physical register is occupied by the currently running instruction or whether it can be used for renaming a new instruction. Several instructions return the corresponding physical register. By having a pre-list table (50) consisting of a counter indicating whether or not to share, the physical register requirements can be reduced compared to the general renaming, it is configured to increase the operation speed of the physical register file (70).

종래 기술에서는 각 실행 유닛(60)은 현재 실행이 완료된 명령어의 결과와 동일한 값을 가진 물리 레지스터를 찾기 위하여 최근에 앞서 실행된 명령어들의 결과 값을 최대 N개까지 저장하고 있는 레지스터 캐쉬를 사용한다. 레지스터 캐쉬는 프로세서 내의 모든 실행 유닛(60)과 연결되어 있어야 하는 일종의 내용 검색 메모리 (Content Addressable Memory, CAM)로서 다수의 포트를 가진 이 내용 검색 메모리는 상당한 검색 지연 시간을 유발하는 단점을 가지고 있다. In the prior art, each execution unit 60 uses a register cache that stores up to N result values of recently executed instructions to find a physical register having the same value as the result of the instruction that is currently executed. The register cache is a type of Content Addressable Memory (CAM) that must be connected to all execution units 60 in the processor, which has the disadvantage of causing significant search latency.

이에 반하여, 본 발명에서는 상기한 메모리 유닛을 사용하지 않고 실행 유닛(60) 내에 비교기(62,64)를 사용하여 현재 실행 중인 명령어의 소스 레지스터 값들과 실행 결과 값을 비교한다. 실행 유닛(60) 내에서 소스 레지스터 값과 결과 값을 바로 비교하므로 모든 실행 유닛(60)이 하나의 내용 검색 메모리와 같은 중앙 집중식 히스토리에 접근할 필요가 없고, 메모리로 인한 지연도 발생하지 않는다. 동일한 값을 가지고 있는 물리 레지스터를 검출하여야 하는 종래 기술에서는 소스 레지스터 값과 결과 값이 같을 확률이 극히 제한적이며, 따라서 레지스터 캐쉬와 같은 중앙 집중식 히스토리 메모리를 사용하지만, 본 발명에서는 유사한 값을 검출하므로 위와 같이 검출하여도 높은 확률로 유사한 값들을 검출해낼 수 있다. 본 발명에서는 레지스터의 길이가 총 M 비트일 때 두 값이 유사한 경우를 ‘두 값의 총 M 비트 중 상위 L 비트 값이 동일한 경우’로 정의한다. 이때, 하위 M-L 비트(총 64(M=64) 비트인 경우 64-L 비트임)는 동일하여도 혹은 상이하여도 무방하다. 일반적인 명령어 세트의 경우에 명령어의 소스 레지스터는 2개이므로 실행 유닛(60)에 는 L 비트의 길이를 가진 비교기(62,64)를 2개 사용한다. In contrast, the present invention uses the comparators 62 and 64 in the execution unit 60 without using the above-described memory unit to compare the source register values of the instructions currently being executed with the execution result values. Since the source register values and result values are directly compared within the execution unit 60, all execution units 60 do not need to access a centralized history, such as one content retrieval memory, and no memory-related delay occurs. In the prior art in which a physical register having the same value is detected, the probability that the source register value and the result value are the same is extremely limited. Therefore, a centralized history memory such as a register cache is used, but the present invention detects similar values. Even when detected together, similar values can be detected with high probability. In the present invention, the case where two values are similar when the length of the register is the total M bits is defined as 'the upper L bit value of the total M bits of the two values is the same'. In this case, the lower M-L bits (when the total 64 (M = 64) bits are 64-L bits) may be the same or different. In the general instruction set, there are two source registers of instructions, so the execution unit 60 uses two comparators 62 and 64 having a length of L bits.

첨부한 도 2는 본 발명의 레지스터 리네이밍 시스템에서 유사성 비교기(62,64)를 가진 실행 유닛(60)의 구성을 도시한 도면이다.2 is a diagram showing the configuration of an execution unit 60 having similarity comparators 62 and 64 in the register renaming system of the present invention.

실행 유닛(60)에서 두 값 사이의 유사성이 발견되면, 해당 명령어의 목적지 물리 레지스터 주소를 유사한 것으로 판정된 소스 물리 레지스터 주소로 변경하고, 두 값 사이의 차이(하위 M-L 비트)를 후행 명령어들에 전달한다. 이 과정을 완료하면 해당 명령어의 원래 목적지 물리 레지스터는 즉시 퇴거될 수 있다. 명령어의 목적지 물리 레지스터 주소를 변경하는 것은 해당 레지스터를 소스로 사용하는 후행 명령어들에 영향을 미친다. 이때, 결과를 생성하는 현재 실행 중인 명령어를 ‘공급자’, 이 결과를 소스로 사용하는 후행 명령어를 ‘소비자’라고 하면, 소비자들이 소스 오퍼랜드를 올바로 읽기 위해서는 공급자 명령어의 목적지 물리 레지스터 주소의 변경 사항과 차이값을 전달받아야 한다. 소비자들의 일부는 이미 디코드되어 명령어 대기 큐(30)에 있을 수 있으며, 또 일부는 차후에 페치(fetch)되어 리네이밍을 거칠 수 있다. 따라서, 물리 레지스터 변경 정보는 명령어 대기 큐(30)와 차후 리네이밍되는 명령어들을 위한 레지스터 맵 테이블(40)에 전달되어야 한다. 또한 이 정보는 물리 레지스터의 할당 상황과 퇴거에 관여하는 프리 리스트 테이블(50)에도 전달되어야 한다. 이러한 물리 레지스터 변경 정보는 결과 버스(80)를 통하여 전달된다. If similarity is found between the two values in execution unit 60, the destination physical register address of the instruction is changed to the source physical register address determined to be similar, and the difference (lower ML bit) between the two values is passed to the subsequent instructions. To pass. After completing this process, the original destination physical register of the instruction can be immediately retired. Changing the destination physical register address of an instruction affects subsequent instructions that use that register as a source. At this time, if the currently executing instruction that generates the result is a 'provider', and a trailing instruction that uses this result as a 'consumer', in order for the consumer to read the source operand correctly, the change of the destination physical register address of the provider instruction and The difference must be passed. Some of the consumers may already be decoded and placed in the instruction wait queue 30, and some may later be fetched and renamed. Thus, physical register change information must be passed to the instruction wait queue 30 and the register map table 40 for later renamed instructions. This information must also be communicated to the free list table 50 involved in the physical register allocation and retirement. This physical register change information is passed through the result bus 80.

일반적인 리네이밍 시스템에서 결과 버스(80)는 명령어의 실행이 완료되었음을 해당 명령어와 의존관계를 가진 소비자들에 전달하고 물리 레지스터 파일(70)에 결과 값을 기록하는 역할을 수행한다. 본 발명에서는 이러한 기본 역할 외에도 물리 레지스터 변경 정보를 전달하여야 하므로 몇 가지의 추가 정보가 삽입된다. In a general renaming system, the result bus 80 serves to inform the consumers that the execution of the instruction has been completed and write the result value in the physical register file 70. In the present invention, since the physical register change information must be transmitted in addition to the basic role, some additional information is inserted.

첨부한 도 3은 본 발명의 레지스터 리네이밍 시스템에서 변경된 결과 버스(80)의 필드 구성을 보여주는 도면이다(이하, 각 구성요소의 도면부호는 도 1과 도 2를 참조). 이에 도시된 바와 같이, 실행 유닛(60)으로부터 결과 버스(80)를 통해 명령어 대기 큐(30), 레지스터 맵 테이블(40), 프리 리스트 테이블(50)로 전달되는 정보, 즉 결과 버스 상의 데이터에는 유효 비트, 원래 물리 레지스터 주소, 레지스터 변경 유효 비트, 새로운 물리 레지스터 주소, 차이값(하위 M-L 비트 값)이 포함된다.FIG. 3 is a view showing the field configuration of the modified result bus 80 in the register renaming system of the present invention (hereinafter, reference numerals of each component refer to FIGS. 1 and 2). As shown therein, the information transferred from the execution unit 60 to the instruction waiting queue 30, the register map table 40 and the free list table 50 via the result bus 80, i.e., data on the result bus. It includes the valid bits, the original physical register address, the register change valid bit, the new physical register address, and the difference value (lower ML bit value).

유효 비트는 결과 버스(80)에 실린 정보가 유효함을 나타낸다. 유효 비트가 ‘거짓(false)'이면 해당 결과 버스(80) 상의 데이터는 무시된다. 원래 물리 레지스터 주소는 일반적인 리네이밍 시스템에도 존재하는 것으로서, 해당 물리 레지스터를 목적지 물리 레지스터로 하는 명령어의 실행이 완료되었음을 나타낸다. 레지스터 변경 유효 비트는 해당 결과 버스(80)를 구동하는 실행 유닛(60)의 비교기(62,64)에 의해서 공급자 명령어의 결과 값이 공급자 명령어의 소스 값 중의 하나와 유사한 것으로 판정된 경우에 활성화(set)된다. 즉, 원래 물리 레지스터는 즉시 퇴거되어야 하며, 이 물리 레지스터를 소스로 사용하는 모든 소비자 명령어들은 결과 버스(80)의 추가적인 필드를 통하여 전달되는 새로운 물리 레지스터 주소와 상기 차이값을 받아서 소스 오퍼랜드로 사용해야 한다.The valid bit indicates that the information carried on the result bus 80 is valid. If the valid bit is 'false', the data on that result bus 80 is ignored. The original physical register address is also present in the general renaming system, indicating that the execution of an instruction that uses that physical register as the destination physical register is complete. The register change valid bit is activated when the result of the provider instruction is determined to be similar to one of the source values of the provider instruction by the comparators 62 and 64 of the execution unit 60 driving the corresponding result bus 80 ( set). That is, the original physical register must be retired immediately, and all consumer instructions that use this physical register as a source must receive the difference and the new physical register address passed through an additional field of the result bus 80 and use it as the source operand. .

첨부한 도 4는 본 발명에 의하여 변경된 명령어 대기 큐(30)의 구성을 보여 주는 도면이다(이하, 각 구성요소의 도면부호는 도 1과 도 2를 참조). 명령어 대기 큐(30)에서 대기 중인 후행 명령어들은 소스 물리 레지스터 주소를 가지고 있는데, 각 명령어들은 자신의 소스 물리 레지스터 주소와 결과 버스(80)의 물리 레지스터 주소를 비교하여, 두 주소가 같은 경우에는 해당 소스 오퍼랜드가 사용 가능한 것으로 인지한다. 이러한 명령어들은 해당 물리 레지스터를 소스로 사용하는 소비자 명령어가 된다. 해당 명령어의 모든 소스 오퍼랜드가 이와 같은 과정을 거쳐 사용 가능한 것으로 표시되면 명령어가 실행 가능한 상태가 된다. 이러한 과정을 대기 중인 소스 레지스터를 깨어나게 한다(wakeup)고 표현한다. 레지스터 변경 유효 비트가 활성화된 경우에는 소스 레지스터를 깨움과 동시에 해당 소스 레지스터를 결과 버스(80) 상의 새로운 물리 레지스터 주소로 변경하고, 결과 버스(80) 상의 차이값을 명령어 대기 큐(30)의 소스 오퍼랜드 필드에 마련된 차이값 보조필드에 저장하며, 차이값 유효 비트를 활성화한다. 이렇게 변경된 소스 오퍼랜드 필드를 가지고 있는 명령어가 실행 가능 상태가 되어 실행 유닛(60)으로 전달되면, 실행 유닛(60)은 소스 물리 레지스터 주소를 이용하여 물리 레지스터 파일(70)을 읽고, 레지스터 파일(70)로부터 읽어들인 값의 하위 M-L 비트를 미리 저장해 둔 차이값으로 치환하여 소스 오퍼랜드를 얻는다.4 is a view showing the configuration of the instruction waiting queue 30 changed according to the present invention (hereinafter, reference numerals of each component refer to FIGS. 1 and 2). Subsequent instructions waiting in the instruction wait queue 30 have a source physical register address, and each instruction compares its source physical register address with the physical register address of the result bus 80 and, if the two addresses are the same, Recognize that the source operand is available. These instructions become consumer instructions that use that physical register as a source. If all the source operands of the instruction are marked as available through this process, the instruction becomes executable. This process is described as waking up the waiting source register. When the register change valid bit is enabled, the source register is awakened and the corresponding source register is changed to a new physical register address on the result bus 80, and the difference value on the result bus 80 is changed to the source of the instruction wait queue 30. It is stored in the difference value auxiliary field provided in the operand field and activates the difference value valid bit. When the instruction having the changed source operand field is made executable and passed to the execution unit 60, the execution unit 60 reads the physical register file 70 using the source physical register address and register file 70. The source ML operand is obtained by substituting the low ML bit of the value read from) with the previously stored difference value.

실행 유닛(60)에서 공급자 명령어가 결과를 생성하였을 때 소비자 명령어는 명령어 대기 큐(30)에 있을 수도 있고, 이후에 페치(fetch)되어 다음 사이클 이후에 리네이밍을 거칠 수도 있다. 새로 페치된 명령어는 디코드 단에서 레지스터 맵 테이블(40)을 검색하여 소스 논리 레지스터 주소를 소스 물리 레지스터 주소로 변 환한다. 따라서, 차후에 리네이밍될 소비자 명령어가 공급자 명령어의 유사성 검출에 따라 변경된 물리 레지스터 주소를 올바르게 전달받기 위해서는 레지스터 맵 테이블(40) 또한 결과 버스(80)의 정보를 이용하여 갱신되어야 한다. The consumer instruction may be in the instruction wait queue 30 when the provider instruction produces a result in the execution unit 60 and may be fetched later and renamed after the next cycle. The newly fetched instruction retrieves the register map table 40 at the decode stage and converts the source logical register address into a source physical register address. Thus, the register map table 40 must also be updated using information from the result bus 80 in order for the consumer instructions to be renamed later to correctly receive the changed physical register address in response to the detection of the similarity of the provider instructions.

첨부한 도 5는 본 발명에 의하여 변경된 레지스터 맵 테이블(40)의 구성을 보여주는 도면이다(각 구성요소의 도면부호는 도 1과 도 2를 참조). 통상의 레지스터 맵 테이블(40)은 각 논리 레지스터가 어느 물리 레지스터로 매핑(mapping)되었는가를 보여주는 테이블로서, 각 논리 레지스터에 해당하는 엔트리 하나 당 하나씩의 물리 레지스터 주소를 갖고 있다. 또한 후속 소비자 명령어에 해당 물리 레지스터가 현재 사용 가능한 상태인가를 나타내는 상태 비트를 가지고 있다. 이 상태 비트는 명령어 대기 큐(30)에 있는 사용 가능 비트와 마찬가지로 결과 버스(80)를 통하여 갱신된다. 본 발명에서는 유사성 검출에 의하여 변경된 물리 레지스터 주소가 결과 버스(80)의 새로운 물리 레지스터 주소 필드와 차이값 필드로 전달되므로 레지스터 맵 테이블(40)에도 차이값 필드가 추가되어야 한다. 결과 버스(80)의 내용에 따라서 레지스터 맵 테이블(40)의 상태 비트를 갱신함과 동시에, 결과 버스(80)의 레지스터 변경 유효 비트가 활성화된 상태이면, 맵 테이블의 물리 레지스터 주소를 결과 버스(80)의 새로운 물리 레지스터 주소로 변경하고, 차이값 필드에 결과 버스(80)의 차이값을 저장하며, 차이값 유효 비트가 활성화된다.5 is a view showing the configuration of the register map table 40 modified according to the present invention (reference numerals of each component refer to FIGS. 1 and 2). The general register map table 40 is a table showing which physical registers are mapped to each logical register, and has one physical register address for each entry corresponding to each logical register. Subsequent consumer instructions also have a status bit indicating whether the physical register is currently available. This status bit is updated via the result bus 80 as well as the available bits in the instruction wait queue 30. In the present invention, since the physical register address changed by the similarity detection is transferred to the new physical register address field and the difference value field of the result bus 80, the difference value field must also be added to the register map table 40. According to the contents of the result bus 80, the status bit of the register map table 40 is updated, and if the register change valid bit of the result bus 80 is enabled, the physical register address of the map table is converted into the result bus ( Change to the new physical register address of 80), store the difference value of the result bus 80 in the difference value field, and enable the difference value valid bit.

종래 기술에서의 프리 리스트 테이블(50)은 하나의 물리 레지스터마다 하나씩의 엔트리를 가지며, 해당 물리 레지스터가 명령어의 목적지 주소로 할당되어 있는 상태인지 혹은 할당되지 않아 후속 명령어의 리네이밍에 사용될 수 있는 프 리(free) 상태인지를 표시한다. 따라서, 프리 리스트 테이블(50)은 한 엔트리당 한 비트의 정보로 구성된다. 그러나, 본 발명에서는 하나의 물리 레지스터가 여러 명령어의 목적지 주소로 공유되어 사용될 수 있기 때문에 프리 리스트 테이블(50)은 해당 물리 레지스터가 몇 명령어의 목적지 주소로 할당되어 있는가를 추적하여야 한다. 따라서, 본 발명에서의 프리 리스트 테이블(50)은 하나의 물리 레지스터당 하나의 카운터 엔트리로 구성된다. 카운터는 디코드 단에서 물리 레지스터가 명령어의 목적지 주소로 할당될 때와 실행 유닛(60)에서 유사성이 발견되어 공유될 때 증가한다. 즉, 결과 버스(80)의 새로운 물리 레지스터 주소에 해당하는 프리 리스트 테이블(50) 엔트리는 증가한다. 물리 레지스터는 실행을 완료한 명령어들이 순차적으로 퇴거될 때 물리 레지스터도 함께 퇴거되는데, 퇴거되는 물리 레지스터에 해당하는 프리 리스트 테이블(50) 엔트리는 감소한다. 또한 실행 유닛(60)에서 유사성이 발견되어 원래 목적지 물리 레지스터가 퇴거될 때에 프리 리스트 테이블(50)의 해당 엔트리 카운터 값은 감소한다. 즉, 결과 버스(80)의 원래 물리 레지스터 주소에 해당하는 프리 리스트 테이블(50)은 레지스터 변경 유효 비트가 유효한 경우에 하나씩 감소한다. 프리 리스트 테이블(50)의 카운터 값이 0인 경우 해당 물리 레지스터는 프리(free)한 상태이며, 새로 페치된 명령어의 리네이밍에 사용될 수 있다.In the prior art, the free list table 50 has one entry for each physical register, and the program may be used for renaming subsequent instructions because the physical register is allocated or not assigned as the destination address of the instruction. Indicates if it is free. Thus, the free list table 50 is composed of one bit of information per entry. However, in the present invention, since a single physical register can be shared and used as a destination address of several instructions, the free list table 50 must keep track of how many instructions the corresponding physical register is allocated. Therefore, the free list table 50 in the present invention is composed of one counter entry per one physical register. The counter is incremented when the physical register is assigned to the destination address of the instruction at the decode stage and when similarity is found and shared in the execution unit 60. In other words, the free list table 50 entry corresponding to the new physical register address of the result bus 80 is incremented. The physical register is also evicted together when the instructions which have completed execution are sequentially evicted, and the free list table 50 entry corresponding to the evicted physical register is decremented. Also, when similarity is found in the execution unit 60 and the original destination physical register is retired, the corresponding entry counter value of the free list table 50 is decremented. That is, the free list table 50 corresponding to the original physical register address of the result bus 80 is decremented by one if the register change valid bit is valid. If the counter value of the free list table 50 is 0, the corresponding physical register is free and may be used for renaming a newly fetched instruction.

이하, 본 발명에 따른 리네이밍 과정에 대하여 좀더 상세히 설명하면 다음과 같다. Hereinafter, the renaming process according to the present invention will be described in more detail.

상기 구성요소는 다음과 같은 과정으로 동작한다. 페치 유닛(10)에서 명령어 가 페치(fetch)되면 파이프라인의 디코드 단계에서 리네이밍을 거친다. 리네이밍 과정은 디코더(리네이밍 유닛)(20)에서 명령어의 목적지 주소에 물리 레지스터를 할당하는 것으로, 프리 리스트 테이블(50)을 검색하여 '0' 값을 가지고 있는 물리 레지스터를 찾아내어 해당 명령어의 목적지 주소로 사용한다. 명령어에 할당된 물리 레지스터에 해당하는 프리 리스트 테이블(50) 엔트리 값은 '1'로 증가하게 되며, 명령어의 원래 아키텍쳐적인 목적지 주소에 해당하는 맵 테이블 엔트리에는 해당 명령어에 할당된 물리 레지스터 주소가 기록된다. 리네이밍을 거친 명령어는 명령어 대기 큐(30)에 등록되어 실행을 기다린다. 실행을 완료한 후에는 유사성 검출 단계를 거친다. 명령어의 실행을 완료하면 실행 유닛(60)은 유사성 비교기(62,64)를 사용하여 실행 결과 값과 소스 오퍼랜드 값을 비교한다. 비교 결과 유사성이 발견되면, 결과 버스(80)에 디코드 단계에서 할당받았던 원래 목적지 물리 레지스터 주소, 유사한 값을 가지고 있는 것으로 검출된 소스 오퍼랜드의 물리 레지스터 주소(새로운 물리 레지스터 주소)와 결과 값의 하위 M-L 비트에 해당하는 차이값을 결과 버스(80)에 싣고 레지스터 변경 유효 비트를 켠 후 전송한다. 결과 버스(80)에 상기 정보들이 실려 명령어 대기 큐(30), 레지스터 맵 테이블(40), 프리 리스트 레이블에 도착하면 레지스터 변경 단계가 실시된다. 명령어 대기 큐(30)에 등록되어 있는 명령어들은 결과 버스(80)의 원래 목적지 레지스터 주소와 자신들의 소스 오퍼랜드의 물리 레지스터 주소를 비교한다. 비교 결과가 일치하면 해당 소스 오퍼랜드는 새로운 물리 레지스터 주소로 변경되며, 명령어 대기 큐(30)의 소스 오퍼랜드 필드에 마련된 차이값 필드에 결과 버스(80)의 차이값이 저장된다. 레지스터 맵 테이블(40)에서는 결과 버스(80)의 원래 목적지 물리 레지스터 주소와 일치하는 값을 가지고 있는 맵 테이블 엔트리를 검색한다. 검색 결과 일치하는 것이 발견되면 해당 엔트리는 새로운 물리 레지스터 주소로 변경되며, 맵 테이블 엔트리에 마련된 차이값 필드에는 결과 버스(80)의 차이값 필드 값이 저장된다. 프리 리스트 테이블(50)은 결과 버스(80)의 정보를 받아서, 원래 목적지 물리 레지스터 주소가 가리키는 물리 레지스터의 프리 리스트 엔트리 값을 '1'만큼 감소시키며, 이 값은 결과적으로 '0'이 되어 해당 물리 레지스터는 후속 명령어의 리네이밍에 사용할 수 있는 프리한 상태가 된다. 또한 새로운 물리 레지스터 주소에 해당하는 엔트리 값은 '1' 증가시켜 또 하나의 명령어가 해당 레지스터를 목적지 주소로 사용하도록 추가되었음을 나타낸다. 상기 기술한 레지스터 변경 단계는 실제 물리 레지스터에 결과 값을 기록하는 결과기록(writeback) 파이프라인 단계와 병렬적으로 수행된다. 레지스터 변경 단계까지 수행한 결과 새로운 물리 레지스터에는 하나의 추가적인 명령어가 매핑된 반면, 원래 물리 레지스터는 프리됨으로써 프로세서에서 리네이밍에 사용할 수 있는 물리 레지스터 수는 증가함을 알 수 있다. 이후의 명령어의 퇴거 단계는 일반적인 레지스터 리네이밍 기술과 동일하게 수행되며, 명령어의 퇴거와 동반한 물리 레지스터의 퇴거시에는 해당 물리 레지스터의 프리 리스트 테이블(50) 엔트리 값을 '1' 감소시키게 된다.The component operates in the following process. When the instruction is fetched from the fetch unit 10, the renaming is performed at the decode stage of the pipeline. In the renaming process, the decoder (renaming unit) 20 allocates a physical register to a destination address of an instruction, searches the free list table 50 to find a physical register having a value of '0', Used as the destination address. The value of the free list table 50 entry corresponding to the physical register assigned to the instruction is increased to '1', and the physical register address assigned to the instruction is recorded in the map table entry corresponding to the instruction's original architectural destination address. do. The renamed command is registered in the command wait queue 30 and waits for execution. After the execution is completed, the similarity detection step is performed. Upon completion of the execution of the instruction, execution unit 60 compares the execution result value with the source operand value using similarity comparators 62 and 64. If the comparison finds similarity, the original destination physical register address assigned to the result bus 80 in the decode step, the physical register address of the source operand (new physical register address) detected as having a similar value, and the lower ML of the result value. The difference value corresponding to the bit is loaded on the result bus 80 and the register change valid bit is turned on and then transmitted. When the information is loaded on the result bus 80 and arrives at the instruction waiting queue 30, the register map table 40, and the free list label, a register change step is performed. The instructions registered in the instruction wait queue 30 compare the physical destination address of their source operand with the original destination register address of the resulting bus 80. If the comparison result matches, the corresponding source operand is changed to a new physical register address, and the difference value of the result bus 80 is stored in the difference value field provided in the source operand field of the instruction wait queue 30. Register map table 40 retrieves a map table entry having a value that matches the original destination physical register address of result bus 80. If a match is found, the entry is changed to a new physical register address, and the difference value field of the result bus 80 is stored in the difference value field provided in the map table entry. The free list table 50 receives the information of the result bus 80, and decrements the free list entry value of the physical register pointed to by the original destination physical register address by '1', and this value becomes '0' as a result. The physical register is in a free state that can be used for renaming subsequent instructions. In addition, the entry value corresponding to the new physical register address is incremented by '1' to indicate that another instruction has been added to use that register as the destination address. The register change step described above is performed in parallel with a writeback pipeline step of writing a result value to an actual physical register. As a result of the register change step, one additional instruction is mapped to the new physical register, while the original physical register is freed, thereby increasing the number of physical registers available for renaming in the processor. Subsequent retirement of the instruction is performed in the same manner as a general register renaming technique, and when retiring a physical register accompanying the retirement of the instruction, the value of the free list table 50 entry of the corresponding physical register is decreased by '1'.

이하, 본 발명에 따른 리네이밍 과정에 대하여 일 예를 들어 설명한다.Hereinafter, an example of a renaming process according to the present invention will be described.

첨부한 도 6은 본 발명에 의해 물리 레지스터를 공유함으로써 물리 레지스터 사용량을 줄이는 예를 보여주는 도면이다. 첫 번째 명령어, 즉 명령어 i가 물리 레 지스터 P41에 16진수 0x0000000012345600을 로드하였다. 다음 명령어 i+1이 P41에 16진수 0x0a를 더한다. 본래 명령어 i+1은 디코드 단에서 목적지 물리 레지스터로 P15번을 할당받았다고 가정한다. 명령어의 실행 결과 값은 16진수 0x000000001234560a이다. 이 값을 소스 레지스터 값인 P41과 비교해보면, 하위 8비트 부분은 상이하지만 상위 56비트 부분이 동일함을 알 수 있다. 즉, 이 명령어의 수행 결과는 소스 물리 레지스터 P41이 가지고 있는 값과 같다. 따라서, 이 결과는 별도의 목적지 물리 레지스터 P15에 저장될 필요가 없다. 대신 명령어 i+1의 목적지 물리 레지스터 번호를 P41로 변경하고, 두 값의 차이인 0x0a를 후속 명령어들에 결과 버스(80)를 통하여 전송한다. 결과 버스(80)에는 원래 목적지 물리 레지스터 번호로 P15가, 새로운 목적지 물리 레지스터 번호로는 P41이, 차이값으로는 0x0a가 실려 명령어 대기 큐(30), 레지스터 맵 테이블(40), 프리 리스트 테이블(50)로 전송된다. 후행 명령어 i+2는 명령어 대기 큐(30)에 있으며, 명령어 i+1이 생성한 결과, 즉 P15를 소스 물리 레지스터로 사용하는 소비자이다. 결과 버스(80)에 상기 서술한 데이터가 실려 명령어 대기 큐(30)에 도달하면, 명령어 대기 큐(30)는 명령어 i+2의 소스 물리 레지스터 번호와 결과 버스(80)의 원래 목적지 물리 레지스터 번호를 비교한다. 비교 결과, 명령어 i+2의 소스 물리 레지스터 중 하나와 같음이 확인된다. 따라서, 해당 소스 물리 레지스터는 사용 가능 상태로 전환됨과 동시에 소스 물리 레지스터 번호는 P41로 변경되고, 차이값 0x0a는 명령어 대기 큐(30)의 차이값 필드에 저장된다. 후행 소비자 명령어에 대한 물리 레지스터 주소 변경 작업이 완료되었으므로 명령어 i+1의 원래 목적지 물리 레지스터는 즉시 퇴거된다. 만일, 명령어 i+2 역시 소스 물리 레지스터가 가지고 있는 값과 유사한 값을 생성한다면 명령어 i+2의 원래 목적지 물리 레지스터인 P59 역시 위와 같은 과정을 거친 후에 퇴거된다. 결과적으로 디코드 단에서는 세 개의 명령어에 각각 하나씩, 총 세 개의 물리 레지스터를 할당하였지만, 명령어 실행 결과에 따라 세 개의 명령어가 하나의 물리 레지스터를 공유하고 나머지 두 개는 즉시 퇴거시킴으로써 하나의 물리 레지스터만으로도 올바른 명령어 실행을 할 수 있게 된다.6 is a view illustrating an example of reducing physical register usage by sharing a physical register according to the present invention. The first instruction, i.e. instruction i, loaded hexadecimal 0x0000000012345600 into the physical register P41. The next command i + 1 adds hexadecimal 0x0a to P41. The original instruction i + 1 assumes that P15 is allocated to the destination physical register at the decode stage. The result of executing the command is 0x000000001234560a in hexadecimal. Comparing this value with the source register value P41, we can see that the lower 8 bits are different but the upper 56 bits are the same. In other words, the execution result of this instruction is the same as the value held in the source physical register P41. Thus, this result does not need to be stored in a separate destination physical register P15. Instead, change the destination physical register number of command i + 1 to P41, and send the difference between the two values, 0x0a, through the result bus 80 to subsequent commands. The result bus 80 contains P15 as the original destination physical register number, P41 as the new destination physical register number, and 0x0a as the difference value so that the instruction wait queue 30, register map table 40, and free list table ( 50). The trailing command i + 2 is in the command wait queue 30 and is a consumer using the result generated by the command i + 1, that is, P15 as the source physical register. When the above-described data is loaded on the result bus 80 and reaches the command wait queue 30, the command wait queue 30 receives the source physical register number of the instruction i + 2 and the original destination physical register number of the result bus 80. Compare The comparison confirms that it is equal to one of the source physical registers of the instruction i + 2. Therefore, as the corresponding source physical register is switched to the available state, the source physical register number is changed to P41, and the difference value 0x0a is stored in the difference value field of the instruction wait queue 30. Since the physical register address change operation for a subsequent consumer instruction is complete, the original destination physical register of instruction i + 1 is immediately retired. If instruction i + 2 also produces a value similar to that of the source physical register, P59, the original destination physical register of instruction i + 2, is also evicted after the above process. As a result, the decode stage allocated a total of three physical registers, one for each of the three instructions, but depending on the result of the instruction, the three instructions share one physical register and the other two immediately retire, so that only one physical register is valid. Command execution is possible.

이상에서 설명한 바와 같이, 본 발명에 따른 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍 시스템 및 방법에 의하면, 비순차 실행을 하는 프로세서에서 기존의 리네이밍 방법에 비해 적은 수의 물리 레지스터를 사용하도록 함으로써, 레지스터 리네이밍 효율을 향상시키고, 물리 레지스터 파일의 동작 속도를 높여 프로세서 전체의 동작 속도와 성능을 향상시키는 효과가 있다. As described above, according to the register renaming system and method based on the similarity of register values according to the present invention, by using less physical registers in a processor performing out of order than conventional renaming method This improves register renaming efficiency and speeds up the operation of physical register files, improving the speed and performance of the entire processor.

리네이밍을 위해서는 많은 엔트리를 가진 물리 레지스터 파일이 필요한데, 본 발명에서는 레지스터에 저장되는 값의 유사성을 이용하여 물리 레지스터를 명령어들 간에 공유하도록 함으로써, 레지스터 파일의 엔트리 수를 줄일 수 있다. 특히, 유사한(하위 8bit가 다른) 값들을 가진 레지스터들을 통합, 공유하도록 함으로써, 더 많은 레지스터를 공유할 수 있고, 결과적으로 물리 레지스터의 수가 감소하여 동작 속도가 증가한다. 고성능 프로세서의 레지스터 파일의 크기를 줄임으로써, 빠른 동작이 가능해지며, 클럭 주파수를 높여 성능을 향상시킬 수 있게 된다.Renaming requires a physical register file with many entries. In the present invention, the number of entries in the register file can be reduced by allowing the physical registers to be shared among instructions using similarity of values stored in the registers. In particular, by integrating and sharing registers with similar (lower 8 bits different) values, more registers can be shared, resulting in a reduction in the number of physical registers resulting in increased operation speed. By reducing the register file size of high-performance processors, faster operation is possible and higher clock frequencies can be used to improve performance.

또한 본 발명에서는 실행 유닛에서 소스 값과 결과 값을 비교하여 유사한 값을 가진 레지스터를 찾게 되는 바, 종래와 같이 동일한 값을 검색하는데 사용되었던 다중 포트 CAM, 즉 'value-matching cache'를 삭제하는 대신, 실행 유닛에 간단한 비교기를 장착하여 대체함으로써, 구성을 보다 간단하게 할 수 있다. In addition, the present invention compares the source value and the result value in the execution unit to find a register having a similar value. Instead of deleting a multi-port CAM, that is, a 'value-matching cache' used to search for the same value as in the prior art, The configuration can be made simpler by attaching and replacing a simple comparator in the execution unit.

이러한 본 발명의 기술은 종래 기술 대비 추가적인 하드웨어를 줄이고 그 효과는 더욱 향상시킬 수 있는 기술로서, 비순차 방식의 명령어 수행을 위하여 레지스터 리네이밍을 사용하는 수퍼스칼라 및 SMT 프로세서에 유용하게 적용될 수 있다. 프로세서의 발전 추세에 따라 점차 더 많은 물리 레지스터가 요구될 것이므로 본 발명의 기술은 차세대 고성능 프로세서에 유용하게 적용될 수 있을 것이다. The technique of the present invention is a technique that can reduce the additional hardware and further improve the effect compared to the prior art, it can be usefully applied to the superscalar and SMT processor that uses register renaming for performing out of order instructions. As more and more physical registers will be required according to the development trend of the processor, the technique of the present invention may be usefully applied to the next generation high performance processor.

Claims (12)

페치 유닛에서 명령어가 페치되면, 하기 프리 리스트 테이블을 검색하여 해당 명령어의 목적지 주소에 물리 레지스터를 할당하고, 해당 명령어에 할당된 물리 레지스터 주소를 명령어의 원래 목적지 주소에 해당하는 하기 레지스터 맵 테이블의 엔트리에 기록하는 디코더와;When an instruction is fetched from the fetch unit, the following free list table is searched to assign a physical register to the destination address of the instruction, and the physical register address assigned to the instruction corresponds to the entry in the following register map table corresponding to the instruction's original destination address. A decoder to write to; 실행 유닛 내에서 명령어 실행 후 결과 오퍼랜드와 소스 오퍼랜드의 비트열을 비교하여 두 값의 총 M 비트 중 상위 L 비트가 같은 경우에 상기 결과 오퍼랜드와 소스 오퍼랜드가 유사성이 있다고 판정하는 비교기와; A comparator that compares the bit strings of the result operand and the source operand after executing the instruction in an execution unit and determines that the result operand and the source operand are similar when the upper L bits of the total M bits of the two values are the same; 상기 비교기에서 유사성이 있다는 판정이 출력된 경우에 참(truth)이 된 레지스터 변경 유효 비트와 함께 현재 명령어의 원래 목적지 물리 레지스터 주소, 유사한 것으로 판정된 소스 오퍼랜드의 물리 레지스터 주소, 결과 값의 하위 M-L 비트에 해당하는 결과 값과 소스 값의 차이값 정보를 상기 실행 유닛으로부터 하기 레지스터 맵 테이블, 명령어 대기 큐, 프리 레지스터 리스트로 전달하는 결과 버스와; The original destination physical register address of the current instruction, the physical register address of the source operand determined to be similar, and the lower ML bits of the result value, together with a register change valid bit that is true if the comparator determines that similarity is output. A result bus for transferring the difference value information between the result value and the source value corresponding to the register map table, the instruction waiting queue, and the free register list from the execution unit; 각 레지스터별로 현재 매핑된 최신의 물리 레지스터 주소를 보관하면서 상기 결과 버스의 내용과 일치되는 엔트리의 물리 레지스터 매핑을 변경할 수 있는 레지스터 맵 테이블과; A register map table for changing a physical register mapping of an entry that matches the contents of the result bus while maintaining the latest physical register address currently mapped for each register; 디코딩이 완료된 명령어와 소스 물리 레지스터 주소, 원래 목적지 물리 레지스터 주소를 보관하면서 상기 결과 버스의 내용과 일치되는 엔트리의 소스 물리 레지스터 주소를 변경할 수 있는 명령어 대기 큐와; An instruction waiting queue for storing a decoded instruction, a source physical register address, and an original destination physical register address while changing a source physical register address of an entry that matches the contents of the result bus; 하나의 물리 레지스터당 하나의 카운터 엔트리로 구성되고, 상기 카운터 엔트리의 카운터 값은 해당 물리 레지스터가 현재 동작 중인 명령어에 의하여 점유되어 있는 상태인가 혹은 프리하여 새로운 명령어의 리네이밍에 사용될 수 있는 상태인가를 나타내고, 몇 개의 명령어가 해당 물리 레지스터를 결과 물리 레지스터로 공유하고 있는가를 나타내도록 된 프리 리스트 테이블;It consists of one counter entry per one physical register, and the counter value of the counter entry indicates whether the corresponding physical register is occupied by a currently running instruction or can be used for renaming a new instruction. A free list table configured to indicate how many instructions share the corresponding physical register with the resulting physical register; 을 포함하는 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍 시스템. A register renaming system based on the similarity of register values, including. 청구항 1에 있어서,The method according to claim 1, 상기 실행 유닛은, 상기 명령어 대기 큐의 명령어가 실행 가능한 상태가 되어 전달되면, 소스 물리 레지스터 주소를 이용하여 물리 레지스터 파일을 읽고, 레지스터 파일로부터 읽어들인 값의 하위 M-L 비트 값을 미리 저장해 둔 상기 차이값으로 치환하여 소스 오프랜드를 얻도록 된 것을 특징으로 하는 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍 시스템.The execution unit reads a physical register file using a source physical register address when the instruction in the instruction waiting queue becomes executable and delivers the difference, and stores the lower ML bit value of the value read from the register file in advance. A register renaming system based on the similarity of register values characterized in that a source offland is obtained by substituting a value. 청구항 1에 있어서,The method according to claim 1, 상기 명령어 대기 큐의 소스 오퍼랜드 필드는, 결과 버스를 통해 전달된 데이터 필드의 레지스터 변경 유효 비트가 참(truth)이 된 상태일 때, 참(truth)이 되는 차이값 유효 비트와, 결과 버스를 통해 전달된 차이값을 저장하는 차이값 필드를 가지는 것을 특징으로 하는 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍 시스템.The source operand field of the instruction wait queue may include a difference value valid bit that is true when the register change valid bit of the data field transferred through the result bus becomes true and a result bus. A register renaming system based on the similarity of register values, characterized by having a difference value field storing the passed difference value. 청구항 1에 있어서,The method according to claim 1, 상기 레지스터 맵 테이블의 각 논리 레지스터 엔트리는, 결과 버스를 통해 전달된 데이터 필드의 레지스터 변경 유효 비트가 참(truth)이 된 상태일 때, 참(truth)이 되는 차이값 유효 비트와, 결과 버스를 통해 전달된 차이값을 저장하는 차이값 필드를 가지는 것을 특징으로 하는 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍 시스템.Each logical register entry of the register map table may include a difference value valid bit that is true when the register change valid bit of the data field transferred through the result bus becomes true, and a result bus. A register renaming system based on the similarity of register values, characterized by having a difference value field for storing the difference passed through. 청구항 1에 있어서,The method according to claim 1, 상기 디코더는 페치 유닛에서 명령어가 페치되면 프리 리스트 테이블을 검색하여 엔트리가 카운터 '0' 값을 가지고 있는 물리 레지스터를 찾아내어 해당 명령어의 목적지 물리 레지스터 주소에 할당하는 동시에 할당된 물리 레지스터에 해당하는 프리 리스트 테이블 엔트리의 카운터 값을 '1'로 증가시키고; When the instruction is fetched from the fetch unit, the decoder searches the free list table to find a physical register whose entry has a counter value of '0', assigns it to the destination physical register address of the corresponding instruction, and at the same time, the free register corresponding to the allocated physical register. Increment the counter value of the list table entry to '1'; 상기 프리 리스트 테이블은 결과 버스의 정보를 받아서 원래 목적지 물리 레지스터 주소가 가리키는 물리 레지스터 엔트리의 카운터 값을 '1' 만큼 감소시켜 해당 물리 레지스터가 프리한 상태를 나타내는 '0'으로 변경시키는 동시에 결과 버스 상의 소스 물리 레지스터 주소에 해당하는 엔트리의 카운터 값은 현재 동작 중 인 명령어에 의하여 점유되어 있는 상태를 나타내는 '1'로 증가시키는 것을 특징으로 하는 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍 시스템.The free list table receives the information of the result bus, decrements the counter value of the physical register entry pointed to by the original destination physical register address by '1', and changes it to '0' indicating the free state of the corresponding physical register. A register renaming system based on the similarity of register values, wherein a counter value of an entry corresponding to a source physical register address is incremented to '1' indicating a state occupied by an instruction in operation. 청구항 5에 있어서,The method according to claim 5, 명령어의 퇴거와 동반한 물리 레지스터의 퇴거시에는 해당 물리 레지스터의 프리 리스트 테이블 엔트리의 카운터 값이 '1'만큼 감소되어 프리한 상태를 나타내는 '0'으로 변경되는 것을 특징으로 하는 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍 시스템.In the retirement of a physical register accompanied by the retirement of the instruction, the counter value of the free list table entry of the corresponding physical register is decreased by '1' and changed to '0' indicating a free state. Based register renaming system. (a) 페치 유닛에서 명령어가 페치되면, 디코더에서 프리 리스트 테이블을 검색하여 해당 명령어의 목적지 주소에 물리 레지스터를 할당하고 해당 명령어에 할당된 물리 레지스터 주소를 명령어의 원래 목적지 주소에 해당하는 레지스터 맵 테이블 엔트리에 기록하는 단계와;(a) When an instruction is fetched from the fetch unit, the decoder retrieves the free list table, allocates a physical register to the destination address of the instruction, and maps the physical register address assigned to the instruction to the register destination table of the instruction's original destination address. Writing to an entry; (b) 이어 상기 명령어가 명령어 대기 큐에 등록된 후 실행이 완료되면, 실행 유닛의 유사성 비교기에서 명령어 실행 후 실행 결과 값과 소스 오퍼랜드 값을 비교하여 유사성 여부를 판정하는 단계와;(b) if the execution is completed after the instruction is registered in the instruction waiting queue, comparing the execution result value and the source operand value after executing the instruction in a similarity comparator of the execution unit to determine whether or not the similarity; (c) 상기 두 값의 총 M 비트 중 상위 L 비트가 같다면, 유사성이 있는 것으 로 판정하여, 상기 실행 유닛이, 디코드 단계에서 할당된 원래 목적지 물리 레지스터 주소, 유사한 것으로 판정된 소스 오퍼랜드의 물리 레지스터 주소, 결과 값의 하위 M-L 비트에 해당하는 결과 값과 소스 값의 차이값을 결과 버스를 통해 명령어 대기 큐, 레지스터 맵 테이블, 프리 레지스터 리스트로 전달하는 단계와;(c) if the upper L bits of the total M bits of the two values are the same, it is determined that there is similarity, so that the execution unit is the original destination physical register address assigned in the decode step, the physical of the source operand determined to be similar. Transferring a difference value between a result value and a source value corresponding to the register address and the lower ML bits of the result value to the instruction waiting queue, the register map table, and the free register list through the result bus; (d) 상기 결과 버스를 통해 명령어 대기 큐, 레지스터 맵 테이블, 프리 레지스터 리스트에 상기 정보들이 전달되면, 레지스터 변경이 수행되는 단계;(d) if the information is transferred to an instruction waiting queue, a register map table, or a free register list through the result bus, performing a register change; 를 포함하는 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍 방법.Register renaming method based on the similarity of register values, including. 청구항 7에 있어서,The method according to claim 7, 상기 (d) 단계에서, 상기 명령어 대기 큐에 등록되어 대기 중인 후행 명령어들의 소스 물리 레지스터 주소와 상기 결과 버스 상의 원래 목적지 물리 레지스터 주소가 일치하면, 해당 후행 명령어의 소스 오퍼랜드의 물리 레지스터 주소를 상기 결과 버스 상의 소스 오퍼랜드의 물리 레지스터 주소로 변경하고, 명령어 대기 큐의 소스 오퍼랜드 필드에 마련된 차이값 필드에 상기 결과 버스 상의 차이값을 저장하는 동시에 차이값 유효 비트를 참(truth)이 되도록 하는 것을 특징으로 하는 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍 방법 In step (d), if the source physical register address of the subsequent instructions registered in the instruction waiting queue and the original destination physical register address on the result bus match, the physical register address of the source operand of the subsequent instruction is determined as the result. Change to the physical register address of the source operand on the bus, and store the difference value on the result bus in the difference value field provided in the source operand field of the instruction wait queue, and at the same time, make the difference valid bit true. Register renaming method based on similarity of register values 청구항 7에 있어서,The method according to claim 7, 상기 (d) 단계에서, 상기 결과 버스 상의 원래 목적지 물리 레지스터 주소와 일치하는 값을 가진 레지스터 맵 테이블의 엔트리를 검색하여 일치하는 것이 발견되면, 해당 맵 테이블 엔트리의 물리 레지스터 주소를 상기 결과 버스 상의 소스 오퍼랜드의 물리 레지스터 주소로 변경하고, 맵 테이블 엔트리에 마련된 차이 값 필드에 상기 결과 버스 상의 차이값을 저장하는 동시에 차이값 유효 비트를 참(truth)이 되도록 하는 것을 특징으로 하는 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍 방법.In step (d), if a match is found by searching an entry of a register map table having a value that matches the original destination physical register address on the result bus, the physical register address of the corresponding map table entry is the source on the result bus. Based on the similarity of the register values, changing to the physical register address of the operand and storing the difference value on the result bus in the difference value field provided in the map table entry while making the difference valid bit true. Register renaming method. 청구항 7에 있어서,The method according to claim 7, 상기 (a) 단계에서, 디코더는 페치 유닛에서 명령어가 페치되면 프리 리스트 테이블을 검색하여 엔트리가 카운터 '0' 값을 가지고 있는 물리 레지스터를 찾아내어 해당 명령어의 목적지 물리 레지스터 주소에 할당하는 동시에 할당된 물리 레지스터에 해당하는 프리 리스트 테이블 엔트리의 카운터 값을 '1'로 증가시키고; In the step (a), when the instruction is fetched from the fetch unit, the decoder searches the free list table to find a physical register whose entry has a counter value of '0', and assigns it to the destination physical register address of the corresponding instruction. Increment the counter value of the free list table entry corresponding to the physical register to '1'; 상기 (d) 단계에서, 프리 리스트 테이블은 결과 버스의 정보를 받아서 원래 목적지 물리 레지스터 주소가 가리키는 물리 레지스터 엔트리의 카운터 값을 '1' 만큼 감소시켜 해당 물리 레지스터가 프리한 상태를 나타내는 '0'으로 변경시키는 동시에 결과 버스 상의 소스 물리 레지스터 주소에 해당하는 엔트리의 카운터 값은 현재 동작 중인 명령어에 의하여 점유되어 있는 상태를 나타내는 '1'로 증가시키는 것을 특징으로 하는 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍 방법.In step (d), the free list table receives the information of the result bus and decrements the counter value of the physical register entry pointed to by the original destination physical register address by '1' to '0' indicating the free state of the corresponding physical register. The register value based on the similarity of register values, wherein the counter value of the entry corresponding to the source physical register address on the result bus is incremented to '1' which indicates the state occupied by the currently running instruction. Naming method. 청구항 10에 있어서,The method according to claim 10, 이후의 명령어 퇴거 단계에서, 명령어의 퇴거와 동반한 물리 레지스터의 퇴거시에는 해당 물리 레지스터의 프리 리스트 테이블 엔트리의 카운터 값을 '1'만큼 감소시켜 프리한 상태를 나타내는 '0'으로 변경시키는 것을 특징으로 하는 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍 방법.In the subsequent instruction retirement step, upon retirement of the physical register accompanied by the retirement of the instruction, the counter value of the free list table entry of the corresponding physical register is decreased by '1' to be changed to '0' indicating the free state. Register renaming method based on similarity of register values. 청구항 7에 있어서,The method according to claim 7, 상기 실행 유닛은, 상기 명령어 대기 큐의 명령어가 실행 가능한 상태가 되어 전달되면, 소스 물리 레지스터 주소를 이용하여 물리 레지스터 파일을 읽고, 레지스터 파일로부터 읽어들인 값의 하위 M-L 비트 값을 미리 저장해 둔 상기 차이값으로 치환하여 소스 오프랜드를 얻도록 된 것을 특징으로 하는 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍 방법.The execution unit reads a physical register file using a source physical register address when the instruction in the instruction waiting queue becomes executable and delivers the difference, and stores the lower ML bit value of the value read from the register file in advance. A register renaming method based on similarity of register values, wherein the source offland is obtained by substituting the values.
KR1020070002742A 2007-01-10 2007-01-10 Register renaming system and method based on value similarity KR100861701B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070002742A KR100861701B1 (en) 2007-01-10 2007-01-10 Register renaming system and method based on value similarity

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070002742A KR100861701B1 (en) 2007-01-10 2007-01-10 Register renaming system and method based on value similarity

Publications (2)

Publication Number Publication Date
KR20080065733A KR20080065733A (en) 2008-07-15
KR100861701B1 true KR100861701B1 (en) 2008-10-06

Family

ID=39816416

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070002742A KR100861701B1 (en) 2007-01-10 2007-01-10 Register renaming system and method based on value similarity

Country Status (1)

Country Link
KR (1) KR100861701B1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102292580B1 (en) * 2020-03-19 2021-08-20 연세대학교 산학협력단 Apparatus and method for managing physical register file of high-performance out-of-order superscalar cores
CN113703842B (en) * 2021-09-10 2024-03-26 中国人民解放军国防科技大学 Value prediction method, device and medium based on branch prediction

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001018645A1 (en) 1999-09-08 2001-03-15 Hajime Seki Register renaming system
JP2004038753A (en) 2002-07-05 2004-02-05 Fujitsu Ltd Processor and instruction control method
KR20060022973A (en) * 2004-09-08 2006-03-13 삼성전자주식회사 Apparatus capable of execution of conditional instructions in out of order and method thereof

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001018645A1 (en) 1999-09-08 2001-03-15 Hajime Seki Register renaming system
JP2004038753A (en) 2002-07-05 2004-02-05 Fujitsu Ltd Processor and instruction control method
KR20060022973A (en) * 2004-09-08 2006-03-13 삼성전자주식회사 Apparatus capable of execution of conditional instructions in out of order and method thereof

Also Published As

Publication number Publication date
KR20080065733A (en) 2008-07-15

Similar Documents

Publication Publication Date Title
US7363467B2 (en) Dependence-chain processing using trace descriptors having dependency descriptors
CN108027771B (en) Block-based processor core composition register
CN108027807B (en) Block-based processor core topology register
US9037837B2 (en) Hardware assist thread for increasing code parallelism
US5944815A (en) Microprocessor configured to execute a prefetch instruction including an access count field defining an expected number of access
US10061588B2 (en) Tracking operand liveness information in a computer system and performing function based on the liveness information
US9286072B2 (en) Using register last use infomation to perform decode-time computer instruction optimization
US7003629B1 (en) System and method of identifying liveness groups within traces stored in a trace cache
EP2588958B1 (en) Apparatus, method, and system for improving power performance efficiency by coupling a first core type with a second core type
US9575754B2 (en) Zero cycle move
US8006075B2 (en) Dynamically allocated store queue for a multithreaded processor
US20140047219A1 (en) Managing A Register Cache Based on an Architected Computer Instruction Set having Operand Last-User Information
US20070050592A1 (en) Method and apparatus for accessing misaligned data streams
WO2017223006A1 (en) Load-store queue for multiple processor cores
US11068271B2 (en) Zero cycle move using free list counts
US20080141268A1 (en) Utility function execution using scout threads
US20140108768A1 (en) Computer instructions for Activating and Deactivating Operands
US20080250226A1 (en) Multi-Mode Register Rename Mechanism for a Highly Threaded Simultaneous Multi-Threaded Microprocessor
TWI730312B (en) Managing instruction order in a processor pipeline
US10545765B2 (en) Multi-level history buffer for transaction memory in a microprocessor
US20050251662A1 (en) Secondary register file mechanism for virtual multithreading
US20080244224A1 (en) Scheduling a direct dependent instruction
US7185181B2 (en) Apparatus and method for maintaining a floating point data segment selector
JP7064273B2 (en) Read / store unit with split reorder queue using a single CAM port
KR100861701B1 (en) Register renaming system and method based on value similarity

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: 20130823

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140630

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150922

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160922

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee