KR102056730B1 - Vliw 프로세서를 위한 명령어 압축 장치 및 방법과, 명령어 인출 장치 및 방법 - Google Patents

Vliw 프로세서를 위한 명령어 압축 장치 및 방법과, 명령어 인출 장치 및 방법 Download PDF

Info

Publication number
KR102056730B1
KR102056730B1 KR1020130044431A KR20130044431A KR102056730B1 KR 102056730 B1 KR102056730 B1 KR 102056730B1 KR 1020130044431 A KR1020130044431 A KR 1020130044431A KR 20130044431 A KR20130044431 A KR 20130044431A KR 102056730 B1 KR102056730 B1 KR 102056730B1
Authority
KR
South Korea
Prior art keywords
instruction
bundle
nop
command
code
Prior art date
Application number
KR1020130044431A
Other languages
English (en)
Other versions
KR20140126191A (ko
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 KR1020130044431A priority Critical patent/KR102056730B1/ko
Priority to US14/258,640 priority patent/US9804853B2/en
Publication of KR20140126191A publication Critical patent/KR20140126191A/ko
Application granted granted Critical
Publication of KR102056730B1 publication Critical patent/KR102056730B1/ko

Links

Images

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
    • 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/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • 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

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)

Abstract

VLIW(Very Long Instruction Word) 프로세서를 위한 명령어 압축 장치에 관한 것이다. 일 실시예에 따르면 명령어 압축 장치는 프로세서에서 수행될 번들 명령어(bundle instruction)에 대하여 이슈 폭(issue width)과 번들 명령어 이후의 번들 NOP 명령어의 수를 지시하는 코드를 생성하는 지시 코드 생성부와, 그 지시 코드에 대응하여 번들 명령어에 포함된 NOP 명령어 또는 번들 명령어 이후의 번들 NOP 명령어를 삭제하는 명령어 압축부 및 번들 명령어에 생성된 지시 코드를 포함시키는 명령어 변환부를 포함할 수 있다.

Description

VLIW 프로세서를 위한 명령어 압축 장치 및 방법과, 명령어 인출 장치 및 방법{APPARATUS AND METHOD FOR COMPRESSING INSTRUCTION FOR VLIW PROCESSOR, APPARATUS AND METHOD FOR FETCHING INSTRUCTION}
컴퓨터 구조(computer architecutre) 상의 명령어 집합 구조(Instruction Set Architecture, ISA)에 관한 것으로, VLIW(Very Long Instruction Word) 프로세서를 위한 명령어 압축 장치 및 방법과, 그 명령어 인출 장치 및 방법과 관련된다.
VLIW(Very Long Instruction Word) 프로세서는 복수의 명령어를 동시에 수행하기 위한 복수의 기능 유닛(Functional Unit)을 포함한다. VLIW 프로세서에 입력되는 명령어들은 기능 유닛의 개수에 대응하는 복수의 명령어들을 포함하는 명령어 번들로 그룹화될 수 있으며, 복수의 기능 유닛에서 동시에 수행되는 명령어들의 집합을 명령어 그룹(instruction group) 또는 명령어 번들(instruction bundle)이라고 한다. 하나의 명령어 번들에 포함되는 명령어는 각 기능 유닛에 분배되어 동시에 처리될 수 있으므로, VLIW 프로세서는 전체 명령어를 처리하는 시간을 단축할 수 있다.
VLIW 프로세서에서 동시에 수행될 수 있는 명령어의 최대 개수는 이론적으로는 기능 유닛의 개수와 동일하다. 다만, 명령어들 사이의 의존성으로 인하여 각 명령어의 수행 시점에 동시에 수행될 수 있는 유효 명령어의 개수는 기능 유닛의 개수보다 적을 수 있다. 예를 들어, 이전 명령어에 따른 연산 결과가 도출되지 않아서, 특정 시점에 기능 유닛의 일부 또는 전부에서 어떤 명령어도 처리될 수 없는 경우가 빈번히 발생한다. 이와 같이, 각 수행 시점에 아무런 명령어도 처리하지 않는 기능 유닛에는 무연산(No OPeration, NOP) 명령어가 할당된다.
그 결과, VLIW 프로세서에서는 필요 없는 NOP 명령어로 인하여 전체 명령어의 개수는 증가하며 이로 인하여 성능 저하가 발생할 수가 있다. 전체 명령어의 개수가 증가하므로 기본적으로 큰 사이즈의 메모리가 요구되고 큰 메모리 사이즈로 인하여 캐쉬 불일치(cache miss)가 발생할 확률이 증가하여 시스템의 속도가 저하될 수 있다. 뿐만 아니라, 명령어의 개수가 많기 때문에, 명령어 페치(fetch) 과
부하(instruction fetch overhead)가 발생할 수 있다.
VLIW 컴퓨터의 성능 저하를 방지하기 위하여 명령어들을 압축하여 메모리에 저장하는 명령어 압축에 관한 연구가 진행되고 있다. 일 예로, VLIW의 모든 이슈 슬롯(Issue slot)들에서 NOP 연산이 수행되는 번들(Bundle) NOP를 제거하기 위한 별도의 연산을 생성하는 것이다. 그 별도의 연산은 몇 개의 연속적인 사이클 동안 번들 NOP이 수행될 것인지를 나타내는 정보와 다음 연산이 병렬로 수행될 수 있는지를 나타내는 P 비트를 포함한다. 하지만, 그 별도의 연산을 위해 코드를 할당하여야 하고, 연속적인 사이클 동안 번들 NOP이 수행될지를 나타내는 정보를 레지스트리 파일에 저장하여야 하므로 명령어 페치의 클록 속도(clock speed)를 나빠지게 할 수 있다.
NOP 연산의 압축을 위해 별도의 연산을 할당하는 대신 명령어의 정지 비트(stop bit)를 사용하여 가변 이슈 폭(issue width)을 갖는 VLIW 프로세서를 위해 효과적으로 번들 NOP 명령어를 압축하는 장치 및 방법이 제시된다.
일 양상에 따르면, 명령어 압축 장치는 VLIW(Very Long Instruction Word) 프로세서에서 수행될 번들 명령어(bundle instruction)에 대하여 이슈 폭(issue width)과, 번들 명령어 이후의 번들 NOP 명령어의 수를 지시하는 코드를 생성하는 지시 코드 생성부와, 생성된 지시 코드에 대응하여 번들 명령어에 포함된 NOP 명령어 또는 번들 명령어 이후의 번들 NOP 명령어를 삭제하는 명령어 압축부 및 번들 명령어에 생성된 지시 코드를 포함시키는 명령어 변환부를 포함할 수 있다.
이때, 번들 명령어의 이슈 폭은 프로세서에서 지원 가능한 이슈 폭(issue width) 및 번들 명령어에 포함된 NOP 명령어의 수 가운데 적어도 하나에 기초하여 결정될 수 있다.
또한, 번들 명령어의 이슈 폭은 프로세서에서 최대 지원 가능한 이슈 폭(issue width)의 한도에서 2 이상 수의 배수 형태로 가변적으로 결정될 수 있다.
명령어 압축부가 삭제할 수 있는 최대 번들 NOP 명령어의 수는 번들 명령어의 이슈 폭에 기초하여 결정될 수 있다.
지시 코드는 상기 번들 명령어를 구성하는 각 명령어의 정지 비트(stop bit)에 대응되는 비트로 이루어질 수 있다.
번들 명령어를 구성하는 각 명령어는 명령어 압축부에 의해 삭제되지 않은 명령어일 수 있다.
명령어 변환부는 번들 명령어를 구성하는 각 명령어의 정지 비트를 지시 코드의 대응되는 각 비트로 치환할 수 있다.
일 양상에 따르면, 명령어 압축 방법은 VLIW(Very Long Instruction Word) 프로세서에서 수행될 번들 명령어(bundle instruction)에 대하여 이슈 폭(issue width)과 번들 명령어 이후의 번들 NOP 명령어의 수를 지시하는 코드를 생성하는 단계와, 생성된 지시 코드에 대응하여 번들 명령어에 포함된 NOP 명령어 또는 번들 명령어 이후의 번들 NOP 명령어를 삭제하는 단계 및 번들 명령어에 생성된 지시 코드를 포함시키는 단계를 포함할 수 있다.
이때, 번들 명령어의 이슈 폭은 프로세서에서 지원 가능한 이슈 폭(issue width) 및 번들 명령어에 포함된 NOP 명령어의 수 가운데 적어도 하나에 기초하여 가변적으로 결정될 수 있다.
번들 명령어의 이슈 폭은 상기 프로세서에서 최대 지원 가능한 이슈 폭(issue width)의 한도에서 2 이상 수의 배수 형태로 가변적으로 결정될 수 있다.
명령어를 삭제하는 단계에서 삭제될 수 있는 최대 번들 NOP 명령어의 수는 번들 명령어의 이슈 폭에 기초하여 결정될 수 있다.
지시 코드는 번들 명령어를 구성하는 각 명령어의 정지 비트(stop bit)에 대응되는 비트로 이루어질 수 있다.
번들 명령어를 구성하는 각 명령어는 명령어 삭제 단계에서 삭제되지 않은 명령어일 수 있다.
지시 코드를 포함시키는 단계는 번들 명령어를 구성하는 각 명령어의 정지 비트를 지시 코드의 대응되는 각 비트로 치환할 수 있다.
일 양상에 따르면, 프로세서를 위한 명령어 인출 장치는 명령어 캐시로부터 PC(Program Counter)가 지시하는 주소의 번들 명령어를 선택하는 명령어 선택부와, 명령어 선택부에 의해 선택된 번들 명령어를 저장하는 명령어 버퍼 및 현재 사이클에 명령어 버퍼에서 명령어 해독 장치로 전달되는 번들 명령어에 포함된 지시 코드를 통해 다음 사이클에 대한 번들 명령어의 인출을 제어하는 번들 NOP 제어부를 포함할 수 있다.
명령어 선택부는 PC가 지시하는 명령어 캐시의 주소에 해당하는 번들 명령어가 없는 경우 외부 메모리로부터 해당하는 번들 명령어를 가져와서 명령어 캐시에 기록하고, 그 번들 명령어를 선택할 수 있다.
번들 NOP 제어부는 현재 사이클에 명령어 해독 장치로 전달되는 번들 명령어에 포함된 각 명령어의 정지 비트(stop bit)의 값을 기초로 지시 코드를 추출할 수 있다.
번들 NOP 제어부는 현재 사이클의 번들 명령어에 포함된 첫 번째 명령어의 정지 비트의 값에 기초하여 추출될 지시 코드의 크기를 결정할 수 있다.
번들 NOP 제어부는 추출된 지시 코드를 기초로 현재 사이클 이후에 번들 NOP 명령어가 존재하는 번들 NOP 사이클을 결정하고, 결정된 번들 NOP 사이클 동안 명령어 버퍼에서 명령어 해독장치로 전달하기 위한 번들 명령어의 인출을 차단하도록 제어할 수 있다.
번들 NOP 제어부는 번들 명령어의 인출이 차단되는 동안 명령어 해독 장치에서 이전 사이클의 번들 명령어가 계속 유지되도록 제어하고 그 유지되는 번들 명령어가 유효하지 않음을 지시하는 신호를 명령어 해독 장치로 전송할 수 있다.
일 양상에 따르면, 프로세서를 위한 명령어 인출 방법은 명령어 캐시로부터 PC(Program Counter)가 지시하는 주소의 번들 명령어를 선택하는 단계, 선택된 번들 명령어를 명령어 버퍼에 저장하는 단계 및 현재 사이클에 명령어 버퍼에서 명령어 해독 장치로 전달되는 번들 명령어에 포함된 지시 코드를 통해 다음 사이클에 대한 번들 명령어의 인출을 제어하는 단계를 포함할 수 있다.
명령어 선택 단계는 PC가 지시하는 명령어 캐시의 주소에 해당하는 번들 명령어가 없는 경우 외부 메모리로부터 해당하는 번들 명령어를 가져오는 단계, 외부 메모리로부터 가져온 번들 명령어를 명령어 캐시에 기록하는 단계 및 그 외부 메모리로부터 가져온 번들 명령어를 선택하는 단계를 포함할 수 있다.
번들 명령어 인출 제어 단계는 현재 사이클에 명령어 해독 장치로 전달되는 번들 명령어에 포함된 각 명령어의 정지 비트(stop bit)의 값을 기초로 지시 코드를 추출하는 단계를 포함할 수 있다.
지시 코드 추출 단계는 현재 사이클의 번들 명령어에 포함된 첫 번째 명령어의 정지 비트의 값에 기초하여 추출될 지시 코드의 크기를 결정할 수 있다.
번들 명령어 인출 제어 단계는 추출된 지시 코드를 기초로 현재 사이클 이후에 번들 NOP 명령어가 존재하는 번들 NOP 사이클을 결정하는 단계 및 결정된 번들 NOP 사이클 동안 명령어 버퍼에서 명령어 해독장치로 번들 명령어가 전달되는 것을 차단하도록 제어하는 단계를 더 포함할 수 있다.
또한, 번들 명령어 인출 제어 단계는 번들 명령어의 인출이 차단되는 동안 명령어 해독 장치에서 이전 사이클의 번들 명령어가 계속 유지되도록 제어하고 그 유지되는 번들 명령어가 유효하지 않음을 지시하는 신호를 명령어 해독 장치로 전송하는 단계를 더 포함할 수 있다.
NOP 연산의 압축을 위해 별도의 연산을 할당하여 코드를 사용하지 않으므로 명령어 페치 성능의 저하 없이 가변 이슈 폭(issue width)을 갖는 VLIW 프로세서를 위해 하나 이상의 번들 NOP을 효과적으로 압축할 수 있다.
도 1은 일 실시예에 따른 명령어 압축 장치의 블록도이다.
도 2a는 도 1의 실시예에 따른 명령어 압축 장치를 설명하기 위한 압축되기 전의 명령어의 일 예이다.
도 2b는 도 2a의 예를 일 실시예에 따라 압축한 후의 명령어의 일 예이다.
도 3은 일 실시예에 따른 명령어 압축 방법의 흐름도이다.
도 4는 일 실시예에 따른 명령어 인출 장치의 블록도이다.
도 5는 일 실시예에 따른 명령어 인출 방법의 흐름도이다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다. 기재된 기술의 이점 및 특징, 그리고 그것들을 달성하는 방법은 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, VLIW(Very Long Instruction Word) 프로세서를 위한 명령어 압축 장치 및 방법과, 명령어 인출 장치 및 방법의 실시예들을 도면들을 참고하여 자세히 설명하도록 한다.
도 1은 일 실시예에 따른 명령어 압축 장치의 블록도이다. 일 실시예에 따른 명령어 압축 장치(100)는 2 이상 수의 배수 형태로 가변적으로 지원하는 이슈 폭(issue width)을 갖는 VLIW 프로세서를 위해 NOP 명령어를 효율적으로 압축할 수 있다.
도 1을 참조하면, 명령어 압축 장치(100)는 지시코드 생성부(110), 명령어 압축부(120) 및 명령어 변환부(130)를 포함한다. 도 1에 도시된 지시코드 생성부(110), 명령어 압축부(120) 및 명령어 변환부(130)는 그 기능에 따른 논리적인 구분으로서, 둘 이상의 구성요소들이 통합되어 일체로 구현될 수 있다. 또한, 각 구성요소들(110,120,130)의 논리적인 기능 구분도 단지 설명의 편의를 위한 것으로서, 그 본질에 반하지 않는 한 어느 하나의 구성요소에서 수행되는 일부 기능이 다른 구성요소에서 수행될 수도 있다.
지시코드 생성부(110)는 VLIW 프로세서에서 수행될 번들 명령어(bundle instruction)에 대하여 지시 코드를 생성한다. 지시 코드는 프로세서에서 수행될 번들 명령어의 이슈 폭(issue width)과 그 번들 명령어 이후의 번들 NOP 명령어의 수와 관련된 정보를 지시한다. 여기서, 번들 명령어(bundle instruction)는 한 사이클에 수행될 명령어들의 그룹을 의미하며, 그 명령어들은 대체로 유효 명령어이나 일부 NOP 명령어를 포함할 수 있다. 유효 명령어는 해당 명령어가 입력되면 프로세서의 기능 유닛에서 소정의 연산을 수행하도록 지시하는 명령어를 가리키며, 연산의 종류나 연산의 복잡도, 연산 간의 의존성 등에는 아무런 제한이 없다. NOP 명령어는 해당 명령어가 입력되는 시점에 프로세서의 기능 유닛이 아무런 연산을 수행하지 않도록 지시하는 명령어를 가리킨다. 번들 NOP 명령어란 한 사이클에 입력되는 명령어가 전부 NOP 명령어인 경우를 의미한다.
번들 명령어의 이슈 폭은 동일 사이클에 프로세서에서 처리될 명령어들의 개수와 관련된 정보를 지시할 수 있다. 이는 곧 동일 사이클에 아무런 연산도 수행되지 않아야 하는 NOP 명령어의 수와 관련된다. 예컨대, 2와 4의 가변 이슈 폭을 갖는 VLIW 프로세서의 경우 어느 한 사이클에 입력될 번들 명령어가 2 이슈 폭을 갖는지 4 이슈 폭을 갖는지를 나타낼 수 있다. 따라서, 어느 사이클에 대한 번들 명령어의 이슈 폭이 2라면 그 번들 명령어의 나머지 2 이슈 폭에 대해서는 NOP 명령어가 포함되는 것으로 해석할 수 있다.
한편, 번들 명령어의 이슈 폭은 프로세서에서 지원 가능한 이슈 폭 및 번들 명령어에 포함된 NOP 명령어의 수 중의 하나 이상에 기초하여 가변적으로 결정될 수 있으며, 일 예로 프로세서에 최대로 지원할 수 있는 이슈 폭의 한도에서 2 이상 정수의 배수 형태로 가변적으로 결정될 수 있다.
그 번들 명령어 이후의 번들 NOP 명령어의 수와 관련된 정보는 그 번들 명령어를 수행하는 사이클 이후에 몇 개의 연속적인 번들 NOP 명령어가 존재하는지를 지시한다. 이를 위해 지시코드는 2 비트 이상을 이용하여 나타낼 수 있다. 일 예로, 지시코드는 번들 명령어, 구체적으로는 삭제되지 않는 명령어들의 그룹에 속한 각 명령어들의 정지 비트(stop bit)에 대응될 수 있다.
이와 같이, 지시코드는 특정 사이클의 번들 명령어에 NOP 명령어가 포함되어 있는지와 NOP 명령어의 수를 지시할 수 있으며, 이와 더불어 그 특정 사이클의 이후의 연속되는 사이클에 전체 NOP 명령어로 이루어진 번들 NOP 명령어가 몇 개인지를 지시할 수 있다.
아래의 표 1은 2 이슈 폭 또는 4 이슈 폭을 가변적으로 지원하는 VLIW 프로세서를 위해 지시코드 생성부(110)가 생성하는 지시코드의 일 예이다.
지시코드[0:3] 의미(description)
0 0 1 0 이슈 폭 - 4, 다음 번들 NOP 명령어 수 - 0
0 0 1 1 이슈 폭 - 4, 다음 번들 NOP 명령어 수 - 2
0 1 1 0 이슈 폭 - 4, 다음 번들 NOP 명령어 수 - 1
0 1 1 1 이슈 폭 - 4, 다음 번들 NOP 명령어 수 - 3
1 0 0 0 이슈 폭 - 2, 다음 번들 NOP 명령어 수 - 0
1 0 0 1 이슈 폭 - 2, 다음 번들 NOP 명령어 수 - 0
1 0 1 0 이슈 폭 - 2, 다음 번들 NOP 명령어 수 - 0
1 0 1 1 이슈 폭 - 2, 다음 번들 NOP 명령어 수 - 0
1 1 0 0 이슈 폭 - 2, 다음 번들 NOP 명령어 수 - 1
1 1 0 1 이슈 폭 - 2, 다음 번들 NOP 명령어 수 - 1
1 1 1 0 이슈 폭 - 2, 다음 번들 NOP 명령어 수 - 1
1 1 1 1 이슈 폭 - 2, 다음 번들 NOP 명령어 수 - 1
표 1을 참조하면, 지시코드는 전술한 바와 같이 번들 명령어에 포함된 각 명령어의 정지 비트에 대응될 수 있으므로 최대 4 개의 명령어의 정지 비트에 대응하여 총 4 비트로 이루어질 수 있다. 지시코드의 비트[0]과 비트[2]는 이슈 폭에 대한 정보를 지시하며, 비트[1]과 비트[3]은 다음 번들 NOP 명령어의 수를 나타낸다. 예컨대, 비트[0]의 값이 '0'이면 4 이슈 폭을 의미하며, '1'이면 2 이슈 폭을 의미한다. 또한, 비트[3]과 [1]의 2비트의 값이 '00'이면 0개, '01'이면 1개, '10'이면 2개, '11'이면 3개의 번들 NOP 명령어가 다음 사이클에 연속적으로 존재하는 것을 의미한다.
한편, 비트[0]이 1이면 그 번들 명령어는 2 이슈 폭을 의미하고, 이 경우에는 나머지 2 이슈는 NOP 명령어가 포함됨을 의미한다. 이때, 지시코드는 비트[1:0]의 값만 의미가 있으며, 나머지 비트 [3:2]의 값은 명령어 인출 단계에서 고려되지 않는다. 이는 후술하는 바와 같이, 압축된 명령어 코드가 메모리에 저장될 때, 나머지 2 이슈에 대한 NOP 명령어가 삭제되고 이후 사이클에 존재하는 번들 명령어에 포함된 2 이슈의 명령어가 저장되기 때문이다.
명령어 압축부(120)는 지시코드 생성부(110)에 의해 생성된 지시코드에 대응하여 번들 명령어에 포함된 NOP 명령어 또는 번들 명령어 이후의 번들 NOP 명령어를 삭제할 수 있다.
예컨대, 2 또는 4 이슈 폭을 가변적으로 지원하는 VLIW 프로세서에서 특정 사이클에 대한 번들 명령어의 지시 코드에서 이슈 폭에 대한 정보가 2라면 그 특정 사이클에는 2 개의 NOP 명령어가 삭제될 수 있다. 또한, 그 지시코드에서 번들 NOP 명령어의 수가 3이라면, 그 특정 사이클 이후에 연속적으로 3개의 번들 NOP 명령어를 삭제할 수 있다. 전술한 바와 같이, 그 지시코드의 실제 의미 있는 정보가 이슈 폭에 의해 결정될 수 있으므로, 명령어 압축부(120)에 의해 삭제될 수 있는 번들 NOP 명령어의 수가 지시코드 중의 이슈 폭 정보에 의해 결정될 수 있다.
명령어 변환부(130)는 번들 명령어, 예컨대, 명령어 압축부(120)에 의해 삭제되지 않은 명령어 그룹에 생성된 지시코드를 포함시킨다. 예를 들어, 지시코드는 번들 명령어에 포함된 각 명령어의 정지 비트를 치환하여 포함될 수 있다. 따라서, 지시코드는 번들 명령어에 포함된 각 명령어의 정지 비트에 대응되는 비트로 이루어질 수 있다. 하지만, 여기에 한정되는 것은 아니며 지시코드를 포함시키는 방법에는 특별한 제한이 없다.
도 2a는 도 1의 실시예에 따른 명령어 압축 장치(100)를 설명하기 위한 압축되기 전의 명령어의 일 예로서, 총 8개의 명령어 그룹(R1 ~ R8)을 도시하였다. 각 명령어 그룹은 프로세서의 하나의 사이클에 수행된다. 도시된 바와 같이, 명령어 그룹 R1, R5 및 R6는 하나 이상의 유효 명령어로 이루어진 번들 명령어이며, 나머지 명령어 그룹인 R2,R3,R4, R7 및 R8은 모두 NOP 명령어로만 이루어진 번들 NOP 명령어이다. 각 명령어가 32 비트로 이루어질 때 전체 8개의 명령어 그룹(R1 ~ R8)에 대해 메모리에 저장될 공간은 총 128 바이트(byte)가 필요하다.
지시코드 생성부(110)는 번들 NOP 명령어가 아닌 번들 명령어 R1, R5 및 R6 각각에 대해 아래의 표 2와 같이 지시코드를 생성할 수 있다.
번들 명령어 지시코드 [3:0]
R1 1110
R5 0001
R6 1100
도 2a 및 표 2를 참조하면, 번들 명령어 R1은 NOP 명령어를 전혀 포함하고 있지 않으므로 4 이슈 폭을 가진다. 따라서, 비트[0]은 0, 비트[2]는 마지막 2 이슈 폭을 의미하는 1이 되고, 다음 3 사이클이 모두 NOP 명령어로 이루어진 번들 NOP 명령어(R2,R3,R4)이므로 비트{3,1}은 '11'이 된다. 이때, 지시코드의 비트[3:0]은 전술한 바와 같이 번들 명령어 R1에 포함된 4개의 명령어(OP3,OP2,OP1,OP0)의 각 정지 비트에 대응된다.
또한, 번들 명령어 R5는 2개의 유효 명령어(OP4,OP5)와 2개의 NOP 명령어를 포함하므로 2 이슈 폭을 가지고, 다음 번들 NOP 명령어가 존재하지 않으므로 비트[0]은 '1'이 되고, 비트[1]은 '0'이 된다. 이때, 비트 [2]와 [3]의 값은 전술한 바와 같이 고려되지 않는 의미 없는 값이다. 번들 명령어 R6는 4개의 유효 명령어(OP6,OP7,OP8,OP9)로 이루어지고, 다음 2개의 번들 NOP 명령어(R7,R8)를 가지므로, 지시코드 [3:0]은 '1100'이 된다.
도 2b는 도 2b는 도 2a의 예를 일 실시예에 따라 압축한 후의 명령어의 일 예로서, 도 2a의 명령어 그룹에 대해 지시코드 생성부(110)에 의해 생성된 지시코드를 이용하여 명령어 압축부(120)가 NOP 명령어를 삭제하고 메모리에 저장한 코드의 예이다. 명령어 압축부(120)는 생성된 지시코드에 대응하여 번들 NOP 명령어인 R2, R3, R4, R7 및 R8을 삭제하고, 번들 명령어 R5에 포함된 NOP 명령어를 삭제한다. 도 2b를 참조하면, 이와 같이 압축된 후의 명령어는 총 40 바이트(byte)의 메모리 공간을 필요로 하므로 도 2에 도시된 압축 전에 비해 메모리 소모를 최소화할 수 있다.
명령어 변환부(130)는 지시코드 생성부(110)에 의해 생성된 지시코드를 대응되는 각 번들 명령어에 포함시키며, 이때, 각 번들 명령어에 포함된 명령어의 정지 비트를 지시코드의 대응되는 값으로 치환하여 포함시킬 수 있다.
도 3은 일 실시예에 따른 명령어 압축 방법의 흐름도이다. 도 3에 도시된 절차의 일부 단계는 반드시 선후 관계가 있는 것은 아니며, 순서가 바뀌거나 또는 동시에 수행될 수 있다. 도 3에 도시된 명령어 압축 방법은 도 1의 실시예에 따른 명령어 압축 장치(100)에 의해 수행될 수 있으므로, 중복 설명을 피하기 위해 이하 간략하게 설명한다.
도 3을 참조하면, 먼저, VLIW 프로세서에서 수행될 번들 명령어에 대하여 그 번들 명령어의 이슈 폭(issue width)과 그 번들 명령어 이후의 번들 NOP 명령어의 수와 관련된 정보를 지시하는 코드를 생성한다(단계 310). 이때, 표 1에 예시한 바와 같이, 번들 명령어의 이슈 폭은 동일 사이클에 프로세서에서 처리될 명령어들의 개수와 관련된 정보, 다시 말해, 동일 사이클에 NOP 명령어의 수와 관련된 정보를 지시할 수 있다. 또한, 그 번들 명령어를 수행하는 사이클 이후에 몇 개의 연속적인 번들 NOP 명령어가 존재하는지를 지시하는 번들 명령어 이후의 번들 NOP 명령어의 수와 관련된 정보가 포함될 수 있다. 지시코드는 번들 명령어에 속한 각 명령어들의 정지 비트(stop bit)에 대응되는 2 비트 이상으로 구현될 수 있다.
그 다음, 단계 310에서 지시코드가 생성되면 그 지시코드에 대응하여 번들 명령어에 포함된 NOP 명령어 또는 번들 명령어 이후의 번들 NOP 명령어를 삭제한다(단계 320). 단계 320에서 NOP 명령어 또는 번들 NOP 명령어가 삭제되면 각 번들 명령어에 지시코드를 포함시킨다(단계 330). 이때, 다양한 방법을 통해 번들 명령어에 지시코드를 포함시킬 수 있으며, 예컨대, 번들 명령어에 포함된 각 명령어의 정지 비트를 대응되는 지시코드의 비트 값으로 치환함으로써 번들 명령어에 포함시키는 것이 가능하다.
도 4는 일 실시예에 따른 명령어 인출 장치의 블록도이다.
도 4의 명령어 인출 장치(500)는 전술한 바와 같이 가변 이슈 폭을 지원하는 VLIW 프로세서의 일 구성이 될 수 있다. 특히, 명령어 인출 장치(500)는 VLIW 프로세서에서 명령어를 인출(fetch)하고 해독(decode)하는 프론트 엔드 유닛(Front End Unit)의 일부 구성일 수 있다. 명령어 인출 장치(500)는 도 1의 실시예에 따른 명령어 압축 장치(100)가 명령어를 압축하여 명령어 캐시(400)에 저장한 번들 명령어를 인출하여 명령어 해독 장치(Instruction Decode Unit)(600)로 전달하는 기능을 수행한다.
도 4를 참조하면, 명령어 인출 장치(500)는 명령어 선택부(510), 명령어 버퍼(520) 및 번들 NOP 제어부(530)를 포함한다.
전술한 바에 따라, 명령어 압축 장치(100)는 지시코드를 생성하여 번들 명령어에 포함시켜 명령어 캐시(400)에 저장할 수 있다. 명령어 선택부(510)는 PC(Program Counter)의 일부를 명령어 캐시(400)의 주소로 입력하여 그 주소에서 해당하는 번들 명령어를 선택하여 인출하고, 그 번들 명령어를 명령어 버퍼(520)에 저장할 수 있다.
만약, 명령어 캐시(400)의 해당하는 주소에 번들 명령어가 존재하지 않으면 외부 메모리로부터 번들 명령어를 가져와서 명령어 캐시(400)에 기록하고, 그 번들 명령어를 선택한다. 그리고, 선택한 번들 명령어를 명령어 버퍼(520)에 저장한다. 이때, 명령어 버퍼(520)는 큐(Queue)일 수 있으며, 명령어 해독 장치(600)로 번들 명령어가 전달되는 것을 조절하는 기능을 수행할 수 있다.
번들 NOP 제어부(530)는 현재 사이클에 명령어 버퍼(520)에서 명령어 해독 장치(600)로 전달되는 번들 명령어에 포함된 지시코드를 통해 다음 사이클에 대한 번들 명령어의 인출을 제어한다. 또한, 번들 NOP 제어부(530)는 현재 사이클에 포함된 NOP 명령어를 결정하고 제어할 수 있다.
명령어 압축 장치(100)에 의해 압축되어 저장된 번들 명령어를 명령어 인출 장치(500)가 인출하는 절차를 예를 들어 설명하면, 명령어 선택부(510)는 PC가 지시하는 명령어 캐시의 주소에서 32비트의 명령어 4개를 포함하는 128비트의 번들 명령어를 인출한다. 인출된 128비트의 번들 명령어는 명령어 버퍼(520)에 저장되고, 해당하는 사이클이 되면 32비트 단위로 나뉘어 명령어 해독 장치(600) IDU0, IDU1, IDU2 및 IDU3으로 전달된다.
이때, 번들NOP 제어부(530)는 32비트 단위로 나뉘어진 각 명령어의 정지비트를 읽어 지시코드를 추출할 수 있다. 지시코드가 추출되면 그 지시코드를 기초로 현재 사이클 이후에 번들 NOP 명령어가 존재하는 번들 NOP 사이클을 결정한다. 즉, 현재 사이클 이후에 연속적으로 몇 개의 사이클이 번들 NOP 명령어인지를 결정하고, 그 번들 NOP 사이클 동안 명령어 버퍼(520)에서 명령어 해독 장치(600)로 전달될 번들 명령어의 인출을 차단하도록 제어할 수 있다.
예를 들어, 아래의 표 3은 추출된 지시코드와, 그 지시코드에 따라 명령어 해독 장치(600)로 전달되는 명령어를 나타낸다.
사이클 지시코드[3:0] 전달 명령어
1 0011 OP0,OP1,NOP,NOP
2 번들 NOP
3 1100 OP5,OP6,OP7,OP8
4 번들 NOP
5 번들 NOP
6 1110 OP9,OP10,OP11,OP12
7 번들 NOP
8 번들 NOP
9 번들 NOP
표 3을 참조하여 번들 NOP 제어부(530)가 추출한 지시코드에 따라 명령어 버퍼(520)에서 번들 명령어 인출을 제어하는 절차와, 명령어 해독 장치(600)로 실제 전달되는 명령어에 대해 설명한다.
사이클 1에 번들 NOP 제어부(530)가 명령어 해독 장치(600)로 전달되는 명령어의 각 정지비트에서 추출한 지시코드[3:0]는 '0011'이다. 이때, 이슈 폭을 지시하는 비트[0]이 '1'이므로 전술한 바에 따르면, 현재 사이클의 번들 명령어는 2 이슈 폭을 갖는다. 이때, 비트[0]은 현재 사이클 1의 번들 명령어에 포함된 첫 번째 명령어의 정지 비트의 값일 수 있다. 따라서, 전달될 명령어는 2개의 유효한 명령어(OP0,OP1)와 2개의 NOP 명령어가 된다.
번들 NOP 제어부(530)는 사이클 1에 명령어 해독 장치(600)로 전달된 번들 명령어의 4개의 명령어 중에서 NOP 명령어에 대응하는 명령어에 대해서 유효하지 않음을 지시하는 신호(예: 0)를 명령어 해독 장치(600)로 전송할 수 있다.
한편, 지시코드의 이슈 폭이 2이므로 나머지 비트[3:2]의 값은 고려되지 않는다. 따라서, 다음 번들 NOP 명령어가 존재하는 번들 NOP 사이클은 지시코드의 비트[1]의 값에 따라 1이 된다. 번들 NOP 제어부(530)는 다음 사이클 2가 번들 NOP 사이클로 판단하고, 사이클 2가 되면 명령어 버퍼(520)에서 번들 명령어가 인출되는 것을 차단하도록 제어한다. 또한, 번들 NOP 제어부(530)는 명령어 해독 장치(600)에서 이전 사이클 1에 전달된 번들 명령어가 계속 유지되도록 제어하고, 그 유지되는 번들 명령어가 유효하지 않음을 지시하는 신호(예: 0)를 명령어 해독 장치(600)로 전송한다.
사이클 3이 되면 번들 명령어가 명령어 버퍼(520)에서 인출되어 명령어 해독 장치(600)로 32비트 단위로 나뉘어져 전달된다. 이때, 번들 NOP 제어부(530)가 추출한 지시코드[3:0]가 '1100'이므로 이슈 폭은 지시코드의 비트{2,0}의 값 '10'에 의해 4가 되고, 다음 번들 NOP 사이클은 지시코드의 비트{3,1} 값 '10'에 의해 2가 된다.
따라서, 사이클 3에 명령어 해독 장치로 전달되는 명령어는 모두 유효한 명령어(OP5,OP6,OP7,OP8)이다. 다음 번들 NOP 사이클 4와 5 동안에는 번들 NOP 제어부(530)의 제어에 따라 명령어 버퍼(520)에서 번들 명령어의 인출이 차단되고 이전 사이클 3에 전달된 명령어가 계속 유지된다. 번들 NOP 제어부(530)는 그 유지되는 명령어가 유효하지 않음을 지시하는 신호를 사이클 4와 5 동안 명령어 해독 장치(600)로 전송한다.
마찬가지로, 사이클 6이 되면 번들 명령어는 명령어 버퍼(520)에서 명령어 해독 장치(600)로 전달되고, 지시코드[3:0]가 '1110'이므로 이슈 폭은 4, 다음 번들 NOP 사이클은 3이 된다. 번들 NOP 제어부(530)는 전술한 바와 같이 사이클 7,8,9 동안 이전 사이클 6의 결과가 유지되도록 하고 동시에 유효하지 않음을 지시하는 신호를 계속 전송한다.
도 5는 일 실시예에 따른 명령어 인출 방법의 흐름도이다. 도 5의 명령어 인출 방법은 도 4의 실시예에 따른 명령어 인출 장치(500)에 의해 수행될 수 있다. 도 4를 참조하여 자세히 설명하였으므로 중복 설명을 피하기 위해 이하 간단하게 설명한다.
도 5를 참조하면, PC(Program Counter)의 일부를 명령어 캐시(400)의 주소로 입력하여 그 주소에서 해당하는 번들 명령어를 선택하여 인출하고(단계 710), 그 번들 명령어를 명령어 버퍼(520)에 저장할 수 있다(단계 720). 이때, 명령어 캐시(400)의 해당하는 주소에 번들 명령어가 존재하지 않으면 외부 메모리로부터 번들 명령어를 가져와서 명령어 캐시(400)에 기록하고 그 번들 명령어를 선택할 수 있다.
이후, 현재 사이클에 명령어 버퍼(520)에서 명령어 해독 장치(600)로 전달되는 번들 명령어에 포함된 지시코드를 추출하고, 그 지시코드를 기초로 현재 사이클에 포함된 NOP 명령어를 제어하거나 다음 사이클에 대한 번들 명령어의 인출을 제어할 수 있다(단계 730).
이때, 번들 명령어는 32 비트의 명령어 4개로 이루어진 128 비트 명령어일 수 있으며, 32비트 단위로 나뉘어져 명령어 해독 장치(600)로 전달되는 각 명령어의 정지비트를 읽어 지시코드를 추출할 수 있다.
추출된 지시코드를 기초로 현재 사이클에 명령어 해독 장치(600)로 전달될 NOP 명령어를 결정하고, 실제 명령어 해독 장치(600)로 전달된 명령어 중에서 NOP 명령어에 해당하는 명령어가 유효하지 않음을 나타내는 신호를 전송할 수 있다.
또한, 추출된 지시코드를 통해 현재 사이클 이후에 번들 NOP 명령어가 존재하는 번들 NOP 사이클을 결정하고, 그 번들 NOP 사이클 동안 명령어 버퍼(520)에서 명령어 해독 장치(600)로 전달될 번들 명령어의 인출을 차단하도록 제어할 수 있다. 또한, 번들 명령어의 인출이 차단되는 동안 명령어 해독 장치에서 이전 사이클의 번들 명령어가 계속 유지되도록 제어하고 그 유지되는 번들 명령어가 유효하지 않음을 지시하는 신호를 상기 명령어 해독 장치로 전송할 수 있다.
한편, 본 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 실시예들을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
본 개시가 속하는 기술분야의 통상의 지식을 가진 자는 개시된 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 명령어 압축 장치 110: 지시코드 생성부
120: 명령어 압축부 130: 명령어 변환부
500: 명령어 인출 장치 510: 명령어 선택부
520: 명령어 버퍼 530: 번들 NOP 제어부

Claims (26)

  1. VLIW(Very Long Instruction Word) 프로세서에서 수행될 번들 명령어(bundle instruction)에 대하여 이슈 폭(issue width)과, 상기 번들 명령어 이후의 번들 NOP 명령어의 수를 지시하는 코드를 생성하는 지시코드 생성부;
    상기 생성된 지시 코드에 대응하여 상기 번들 명령어에 포함된 NOP 명령어 또는 상기 번들 명령어 이후의 번들 NOP 명령어를 삭제하는 명령어 압축부; 및
    상기 번들 명령어에 상기 생성된 지시 코드를 포함시키는 명령어 변환부;를 포함하며,
    상기 명령어 변환부는,
    상기 번들 명령어를 구성하는 각 명령어의 정지 비트(stop bit)를 상기 지시 코드의 대응되는 각 비트로 치환하는 명령어 압축 장치.
  2. 제1항에 있어서,
    상기 번들 명령어의 이슈 폭은 상기 프로세서에서 지원 가능한 이슈 폭(issue width) 및 상기 번들 명령어에 포함된 NOP 명령어의 수 가운데 적어도 하나에 기초하여 결정되는 명령어 압축 장치.
  3. 제2항에 있어서,
    상기 번들 명령어의 이슈 폭은 상기 프로세서에서 최대 지원 가능한 이슈 폭(issue width)의 한도에서 2 이상의 수의 배수 형태로 가변적으로 결정되는 명령어 압축 장치.
  4. 제1항에 있어서,
    상기 명령어 압축부가 삭제할 수 있는 최대 번들 NOP 명령어의 수는 상기 번들 명령어의 이슈 폭에 기초하여 결정되는 명령어 압축 장치.
  5. 제1항에 있어서,
    상기 지시 코드는 상기 번들 명령어를 구성하는 각 명령어의 정지 비트(stop bit)에 대응되는 비트로 이루어지는 명령어 압축 장치.
  6. 제5항에 있어서,
    상기 번들 명령어를 구성하는 각 명령어는 상기 명령어 압축부에 의해 삭제되지 않은 명령어인 명령어 압축 장치.
  7. 삭제
  8. VLIW(Very Long Instruction Word) 프로세서에서 수행될 번들 명령어(bundle instruction)에 대하여 이슈 폭(issue width)과, 상기 번들 명령어 이후의 번들 NOP 명령어의 수를 지시하는 코드를 생성하는 단계;
    상기 생성된 지시 코드에 대응하여 상기 번들 명령어에 포함된 NOP 명령어 또는 상기 번들 명령어 이후의 번들 NOP 명령어를 삭제하는 단계; 및
    상기 번들 명령어에 상기 생성된 지시 코드를 포함시키는 단계;를 포함하며,
    상기 지시 코드를 포함시키는 단계는,
    상기 번들 명령어를 구성하는 각 명령어의 정지 비트를 상기 지시 코드의 대응되는 각 비트로 치환하는 명령어 압축 방법.
  9. 제8항에 있어서,
    상기 번들 명령어의 이슈 폭은 상기 프로세서에서 지원 가능한 이슈 폭(issue width) 및 상기 번들 명령어에 포함된 NOP 명령어의 수 가운데 적어도 하나에 기초하여 가변적으로 결정되는 명령어 압축 방법.
  10. 제9항에 있어서,
    상기 번들 명령어의 이슈 폭은 상기 프로세서에서 최대 지원 가능한 이슈 폭(issue width)의 한도에서 2 이상의 수의 배수 형태로 가변적으로 결정되는 명령어 압축 방법.
  11. 제8항에 있어서,
    상기 명령어를 삭제하는 단계에서 삭제될 수 있는 최대 번들 NOP 명령어의 수는 상기 번들 명령어의 이슈 폭에 기초하여 결정되는 명령어 압축 방법.
  12. 제8항에 있어서,
    상기 지시 코드는 상기 번들 명령어를 구성하는 각 명령어의 정지 비트(stop bit)에 대응되는 비트로 이루어지는 명령어 압축 방법.
  13. 제12항에 있어서,
    상기 번들 명령어를 구성하는 각 명령어는 상기 명령어 삭제 단계에서 삭제되지 않은 명령어인 명령어 압축 방법.
  14. 삭제
  15. 프로세서를 위한 명령어 인출 장치에 있어서,
    명령어 캐시로부터 PC(Program Counter)가 지시하는 주소의 번들 명령어를 선택하는 명령어 선택부;
    상기 명령어 선택부에 의해 선택된 번들 명령어를 저장하는 명령어 버퍼; 및
    현재 사이클에 상기 명령어 버퍼에서 명령어 해독 장치로 전달되는 번들 명령어에 포함된 지시 코드를 통해 다음 사이클에 대한 번들 명령어의 인출을 제어하는 번들 NOP 제어부;를 포함하며,
    상기 번들 NOP 제어부는,
    현재 사이클에 상기 명령어 해독 장치로 전달되는 번들 명령어에 포함된 각 명령어의 정지 비트(stop bit)의 값을 기초로 상기 지시 코드를 추출하고,
    현재 사이클의 번들 명령어에 포함된 첫 번째 명령어의 정지 비트의 값에 기초하여 추출될 지시 코드의 크기를 결정하는 명령어 인출 장치.
  16. 제15항에 있어서, 상기 명령어 선택부는
    상기 PC가 지시하는 상기 명령어 캐시의 주소에 해당하는 번들 명령어가 없는 경우 외부 메모리로부터 해당하는 번들 명령어를 가져와서 상기 명령어 캐시에 기록하고, 그 번들 명령어를 선택하는 명령어 인출 장치.
  17. 삭제
  18. 삭제
  19. 제15항에 있어서, 상기 번들 NOP 제어부는
    상기 추출된 지시 코드를 기초로 현재 사이클 이후에 번들 NOP 명령어가 존재하는 번들 NOP 사이클을 결정하고, 상기 결정된 번들 NOP 사이클 동안 상기 명령어 버퍼에서 상기 명령어 해독 장치로 전달하기 위한 번들 명령어의 인출을 차단하도록 제어하는 명령어 인출 장치.
  20. 제19항에 있어서, 상기 번들 NOP 제어부는
    상기 번들 명령어의 인출이 차단되는 동안 상기 명령어 해독 장치에서 이전 사이클의 번들 명령어가 계속 유지되도록 제어하고 그 유지되는 번들 명령어가 유효하지 않음을 지시하는 신호를 상기 명령어 해독 장치로 전송하는 명령어 인출 장치.
  21. 명령어 캐시로부터 PC(Program Counter)가 지시하는 주소의 번들 명령어를 선택하는 단계;
    상기 선택된 번들 명령어를 명령어 버퍼에 저장하는 단계; 및
    현재 사이클에 상기 명령어 버퍼에서 명령어 해독 장치로 전달되는 번들 명령어에 포함된 지시 코드를 통해 다음 사이클에 대한 번들 명령어의 인출을 제어하는 단계;를 포함하며,
    상기 번들 명령어 인출 제어 단계는,
    현재 사이클에 상기 명령어 해독 장치로 전달되는 번들 명령어에 포함된 각 명령어의 정지 비트(stop bit)의 값을 기초로 지시 코드를 추출하는 단계;를 포함하고,
    상기 지시 코드 추출 단계는,
    현재 사이클의 번들 명령어에 포함된 첫 번째 명령어의 정지 비트의 값에 기초하여 추출될 지시 코드의 크기를 결정하는 명령어 인출 방법.
  22. 제21항에 있어서, 상기 명령어 선택 단계는
    상기 PC가 지시하는 상기 명령어 캐시의 주소에 해당하는 번들 명령어가 없는 경우 외부 메모리로부터 해당하는 번들 명령어를 가져오는 단계;
    상기 외부 메모리로부터 가져온 번들 명령어를 명령어 캐시에 기록하는 단계; 및
    그 외부 메모리로부터 가져온 번들 명령어를 선택하는 단계;를 포함하는 명령어 인출 방법.
  23. 삭제
  24. 삭제
  25. 제21항에 있어서, 상기 번들 명령어 인출 제어 단계는
    상기 추출된 지시 코드를 기초로 현재 사이클 이후에 번들 NOP 명령어가 존재하는 번들 NOP 사이클을 결정하는 단계; 및
    상기 결정된 번들 NOP 사이클 동안 상기 명령어 버퍼에서 상기 명령어 해독 장치로 번들 명령어가 전달되는 것을 차단하도록 제어하는 단계;를 더 포함하는 명령어 인출 방법.
  26. 제25항에 있어서, 상기 번들 명령어 인출 제어 단계는
    상기 번들 명령어의 인출이 차단되는 동안 상기 명령어 해독 장치에서 이전 사이클의 번들 명령어가 계속 유지되도록 제어하고 그 유지되는 번들 명령어가 유효하지 않음을 지시하는 신호를 상기 명령어 해독 장치로 전송하는 단계;를 더 포함하는 명령어 인출 방법.



KR1020130044431A 2013-04-22 2013-04-22 Vliw 프로세서를 위한 명령어 압축 장치 및 방법과, 명령어 인출 장치 및 방법 KR102056730B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130044431A KR102056730B1 (ko) 2013-04-22 2013-04-22 Vliw 프로세서를 위한 명령어 압축 장치 및 방법과, 명령어 인출 장치 및 방법
US14/258,640 US9804853B2 (en) 2013-04-22 2014-04-22 Apparatus and method for compressing instruction for VLIW processor, and apparatus and method for fetching instruction

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130044431A KR102056730B1 (ko) 2013-04-22 2013-04-22 Vliw 프로세서를 위한 명령어 압축 장치 및 방법과, 명령어 인출 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20140126191A KR20140126191A (ko) 2014-10-30
KR102056730B1 true KR102056730B1 (ko) 2019-12-17

Family

ID=51729946

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130044431A KR102056730B1 (ko) 2013-04-22 2013-04-22 Vliw 프로세서를 위한 명령어 압축 장치 및 방법과, 명령어 인출 장치 및 방법

Country Status (2)

Country Link
US (1) US9804853B2 (ko)
KR (1) KR102056730B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102210997B1 (ko) * 2014-03-12 2021-02-02 삼성전자주식회사 Vliw 명령어를 처리하는 방법 및 장치와 vliw 명령어를 처리하기 위한 명령어를 생성하는 방법 및 장치
KR20180031266A (ko) 2016-09-19 2018-03-28 삼성전자주식회사 전자 장치, vliw 프로세서 및 그 제어 방법들
US10833704B1 (en) * 2018-12-12 2020-11-10 Xilinx, Inc. Low-density parity check decoder using encoded no-operation instructions
EP4211567A1 (en) * 2020-09-09 2023-07-19 Ascenium, Inc. Highly parallel processing architecture with shallow pipeline
US11928470B1 (en) * 2022-04-20 2024-03-12 Verisilicon Holdings Co., Ltd. Advancing a program counter to a start of a subsequent cache line based on a straddling group indicator in a current cache line

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020099924A1 (en) * 1995-03-17 2002-07-25 Hitachi, Ltd. Processor
US20080235492A1 (en) * 2007-03-23 2008-09-25 Samsung Electronics Co., Ltd. Apparatus for compressing instruction word for parallel processing vliw computer and method for the same
US20090063822A1 (en) * 2007-08-31 2009-03-05 Kabushiki Kaisha Toshiba Microprocessor

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010042187A1 (en) 1998-12-03 2001-11-15 Marc Tremblay Variable issue-width vliw processor
US7062634B1 (en) * 2002-01-29 2006-06-13 Stmicroelectronics Limited Processor and a method for handling and encoding no-operation instructions
KR100548576B1 (ko) 2004-04-22 2006-02-02 주식회사 하이닉스반도체 반도체 소자의 제조방법
KR101603751B1 (ko) 2010-02-18 2016-03-16 삼성전자주식회사 명령어 병렬 처리 컴퓨터를 위한 명령어 압축 장치 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020099924A1 (en) * 1995-03-17 2002-07-25 Hitachi, Ltd. Processor
US20080235492A1 (en) * 2007-03-23 2008-09-25 Samsung Electronics Co., Ltd. Apparatus for compressing instruction word for parallel processing vliw computer and method for the same
US20090063822A1 (en) * 2007-08-31 2009-03-05 Kabushiki Kaisha Toshiba Microprocessor

Also Published As

Publication number Publication date
KR20140126191A (ko) 2014-10-30
US9804853B2 (en) 2017-10-31
US20140317383A1 (en) 2014-10-23

Similar Documents

Publication Publication Date Title
KR101603751B1 (ko) 명령어 병렬 처리 컴퓨터를 위한 명령어 압축 장치 및 방법
KR102056730B1 (ko) Vliw 프로세서를 위한 명령어 압축 장치 및 방법과, 명령어 인출 장치 및 방법
KR102376117B1 (ko) 병렬 결정 트리 프로세서 아키텍처
KR101081090B1 (ko) 명령어 스트림의 효율적인 에뮬레이션을 가능하게 하기 위한 레지스터 기반의 명령어 최적화
US7673187B2 (en) Data processing apparatus and method for reducing trace bandwidth
KR100875836B1 (ko) 병렬 처리 vliw 컴퓨터를 위한 인스트럭션 명령어 압축장치 및 그 방법
JP2009542092A5 (ko)
JP2015228241A5 (ko)
WO2012053015A2 (en) Compression and decompression of data at high speed in solid state storage
TWI498818B (zh) 指示可變長度指令集的指令長度之技術
CN110832455B (zh) 测试向量元素内部的位值
KR101849110B1 (ko) 다음-명령-타입 필드
CN107801044B (zh) 后向适应装置与相关方法
KR101497346B1 (ko) 명령으로서 데이터 값을 평가하기 위한 시스템 및 방법
CN116627502B (zh) 跳转指令的优化方法、指令的跳转方法、装置、电子设备
CN101714076B (zh) 对指令束进行解压缩的处理器和方法
KR102586258B1 (ko) 벡터 길이 질의 명령
KR20130066402A (ko) 트레이스 데이터 저장 장치 및 방법
US20120110307A1 (en) Compressed instruction processing device and compressed instruction generation device
US11036616B2 (en) Tracing the data processing activities of a data processing apparatus
CN110247666B (zh) 一种硬件并行压缩的系统及方法
US7716456B2 (en) Memory-efficient instruction processing scheme
JP2003084973A (ja) 並列演算処理装置及び並列演算処理用の命令コードのデータ構造、並びに並列演算処理用の命令コードの生成方法
JP3861452B2 (ja) プロセッサおよびプログラム生成装置
CN117472840B (zh) 多核系统以及用于多核系统的数据处理的方法

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