KR101603751B1 - 명령어 병렬 처리 컴퓨터를 위한 명령어 압축 장치 및 방법 - Google Patents

명령어 병렬 처리 컴퓨터를 위한 명령어 압축 장치 및 방법 Download PDF

Info

Publication number
KR101603751B1
KR101603751B1 KR1020100014851A KR20100014851A KR101603751B1 KR 101603751 B1 KR101603751 B1 KR 101603751B1 KR 1020100014851 A KR1020100014851 A KR 1020100014851A KR 20100014851 A KR20100014851 A KR 20100014851A KR 101603751 B1 KR101603751 B1 KR 101603751B1
Authority
KR
South Korea
Prior art keywords
instruction
nop
group
code
instruction group
Prior art date
Application number
KR1020100014851A
Other languages
English (en)
Other versions
KR20110095049A (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 KR1020100014851A priority Critical patent/KR101603751B1/ko
Priority to US12/912,533 priority patent/US9286074B2/en
Publication of KR20110095049A publication Critical patent/KR20110095049A/ko
Application granted granted Critical
Publication of KR101603751B1 publication Critical patent/KR101603751B1/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
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • 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

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 컴퓨터 등과 같은 병렬 처리 컴퓨터를 위한 명령어 압축 장치 및 방법이 개시된다. 명령어 압축 장치는 번들 코드 생성부, 명령어 압축부, 및 명령어 변환부를 포함한다. 압축될 명령어들이 입력되면 번들 코드 생성부는 번들 코드를 생성하는데, 이 번들 코드는 현재 명령어 그룹이 종료되었는지 여부를 지시하며, 또한 현재 명령어 그룹이 종료된 경우에는 뒤따르는 명령어 그룹이 무연산(No OPeration, NOP) 명령어 그룹인지도 함께 지시한다. 명령어 압축부는 번들 코드 생성부에서 생성된 번들 코드에 대응하여 입력되는 명령어들에 포함된 NOP 명령어 및/또는 NOP 명령어 그룹을 삭제한다. 번들 코드를 생성하는 과정과 명령어 압축 과정은 동시에 또는 순차적으로 수행될 수 있다. 그리고 명령어 변환부는 명령어 압축부에서 삭제되지 않은 명령어들 각각에 번들 코드 생성부에서 생성된 대응하는 번들 코드를 포함시킨다.

Description

명령어 병렬 처리 컴퓨터를 위한 명령어 압축 장치 및 방법{Instruction word compression apparatus and method for instruction level parallelism computer}
컴퓨터 구조(computer architecture) 상의 명령어 집합 구조(Instruction Set Architecture, ISA)에 관한 것으로, 보다 구체적으로 매우 긴 명령어(Very Long Instruction Word, VLIW) 컴퓨터 등과 같은 명령어 병렬 처리 컴퓨터를 위한 명령어 압축에 관한 것이다.
매우 긴 명령어(Very Long Instruction Word, VLIW) 컴퓨터는 명령어의 병렬 처리(Instruction Level Parallelism, ILP)를 이용하기 위해 설계된 중앙처리장치(Central Processing Unit, CPU) 구조를 가리킨다. VLIW 컴퓨터는 복수의 명령어를 동시에 수행하기 위한 복수의 연산 장치(Functional Unit, FU)를 포함한다. VLIW 컴퓨터에서는 입력되는 명령어들은 FU의 개수에 대응하는 복수의 명령어들을 포함하는 명령어 번들로 그룹화될 수 있으며, 복수의 FU에서 동시에 수행되는 명령어들의 집합을 명령어 그룹(instruction group) 또는 명령어 번들(instruction bundle)이라고 한다. 하나의 명령어 번들에 포함되는 명령어는 각 FU에 분배되어 동시에 처리될 수 있으므로, VLIW 컴퓨터는 전체 명령어를 처리하는 시간을 단축할 수 있다.
VLIW 컴퓨터와 같은 명령어 병렬 처리 컴퓨터에서는 동시에 수행될 수 있는 명령어의 최대 개수는 이론적으로는 FU의 개수와 동일하다. 다만, 명령어들 사이의 의존성으로 인하여, 각 명령어의 수행 시점에 동시에 수행될 수 있는 유효 명령어의 개수는 FU의 개수보다 적을 수 있다. 예를 들어, 이전 명령어에 따른 연산 결과가 도출되지 않아서, 특정 시점에 FU의 일부 또는 전부에서 어떤 명령어도 처리될 수 없는 경우가 빈번히 발생한다. VLIW 컴퓨터에서는 각 수행 시점에 아무런 명령어도 처리하지 않는 FU에게는 무연산(No OPeration, NOP) 명령어가 할당된다.
그 결과, VLIW 컴퓨터에서는 필요 없는 NOP 명령어로 인하여 전체 명령어의 개수는 증가하며, 이로 인하여 성능 저하가 발생할 수가 있다. 보다 구체적으로, 전체 명령어의 개수가 증가하므로 기본적으로 큰 사이즈의 메모리가 요구된다. 그리고 큰 메모리 사이즈로 인하여 캐쉬 불일치(cache miss)가 발생할 확률이 증가하여, 시스템의 속도를 저하시키는 주요한 원인이 될 수 있다. 뿐만 아니라, 명령어의 개수가 많기 때문에, 명령어 페치 과부하(instruction fetch overhead)가 발생할 수 있다.
VLIW 컴퓨터의 성능 저하를 방지하기 위한 한 가지 방법으로 명령어들을 압축하여 저장하는 명령어 압축에 관한 연구가 진행되고 있다. 예를 들어, 명령어 내에 종료 비트(stop-bit) 또는 병렬 비트(p-bit) 등을 할당하여 명령어 그룹 내에서 유효 명령어의 종료를 알리는 방법이나 명령어 그룹별로 그룹 헤더(group header)를 두어 그룹의 크기와 NOP 명령어의 위치를 알리는 방법 등이 명령어 압축 방법으로 제안되었다. 그리고 명령어 그룹 내에서 후속되는 NOP 명령어의 개수를 지시하는 인덱스 코드를 유효 명령어 내에 할당하거나 또는 명령어 그룹 내의 각 유효 명령어의 순서를 지시하는 지시 코드를 유효 명령어 내에 할당하여 명령어를 압축하는 방법도 제안되었다.
명령어 그룹 내에서 NOP 명령어를 효과적으로 제거할 수 있을 뿐만 아니라 하나 또는 그 이상의 연속된 무연산(NOP) 명령어 그룹을 효과적으로 제거할 수 있는 명령어 병렬 처리 컴퓨터를 위한 명령어 압축 장치 및 방법을 제공하는 것이다.
명령어 압축 장치는 VLIW 컴퓨터 등과 같은 병렬 처리 컴퓨터에서 수행될 명령어들을 압축하는 장치이다. 명령어 압축 장치는 번들 코드 생성부, 명령어 압축부, 및 명령어 변환부를 포함한다. 번들 코드 생성부는 압축될 명령어들이 입력되면, 현재 명령어 그룹이 종료되었는지 여부를 지시하며, 또한 현재 명령어 그룹이 종료된 경우에는 뒤따르는 명령어 그룹이 무연산(No OPeration, NOP) 명령어 그룹인지도 함께 지시하는 번들 코드(bundle code)를 생성한다. 그리고 명령어 압축부는 번들 코드 생성부에서 생성된 번들 코드에 대응하여 입력되는 명령어들에 포함된 NOP 명령어 및/또는 NOP 명령어 그룹을 삭제한다. 여기서, 번들 코드와 삭제되는 NOP 명령어 및/또는 NOP 명령어 그룹과의 대응 관계란, 삭제되는 NOP 명령어 및/또는 NOP 명령어 그룹이 명령어 변환부에서 번들 코드가 삽입되는 명령어(유효 명령어이거나 또는 NOP 명령어일 수 있다)에 뒤따르는 명령어 또는 명령어 그룹인 관계를 가리킨다. 그리고 명령어 변환부는 명령어 압축부에서 삭제되지 않은 명령어들 각각에 번들 코드 생성부에서 생성된 대응하는 번들 코드를 포함시킨다.
명령어 압축 방법은 VLIW 컴퓨터 등과 같은 병렬 처리 컴퓨터에서 수행될 명령어들을 압축하는 방법이다. 우선, 명령어들을 입력 받아서 일부 명령어들에 대하여 번들 코드를 생성하는데, 번들 코드는 현재 명령어 그룹이 종료되었는지 여부를 지시하며, 또한 현재 명령어 그룹이 종료된 경우에는 뒤따르는 명령어 그룹이 무연산(No OPeration, NOP) 명령어 그룹인지도 함께 지시하는 소정 비트의 정보이다. 그리고 생성된 번들 코드에 대응하여 입력되는 명령어들에 포함된 NOP 명령어 및/또는 NOP 명령어 그룹을 삭제한다. 이러한 번들 코드를 생성하는 과정과 NOP 명령어 및/또는 NOP 명령어 그룹을 삭제하는 과정은 순차적으로 수행되거나 또는 동시에 수행될 수 있다. 그리고 입력된 명령어들 중에서 삭제되지 않은 명령어들 각각에 대응하는 번들 코드를 포함시켜서 압축된 명령어를 출력한다.
명령어 압축 장치 및 방법에서는 별로의 그룹 헤더(group header)를 사용하지 않는다. 그리고 하나 또는 그 이상의 NOP 번들을 제거할 수 있으므로, NOP 번들을 페치(fetch)하지 않아도 되어서 NOP 번들이 빈번하게 발생하는 VLIW 컴퓨터 등과 같은 병렬 처리 프로세서에 유용하다. 또한, NOP 번들을 제거하면 압축 효율을 높여서 명령어의 양을 크게 줄일 수 있으므로, 캐쉬 불일치에 따른 시스템의 속도 저하는 물론 페치 오버헤드(fetch overhead)를 방지할 수 있다.
도 1은 일 실시예에 따른 명령어 병렬 처리 컴퓨터를 위한 명령어 압축 장치의 구성을 보여 주는 블록도이다.
도 2는 일 실시예에 따른 명령어 병렬 처리 컴퓨터를 위한 명령어 압축 방법을 보여 주는 흐름도이다.
도 3a는 일 실시예에 따른 명령어 압축 방법을 설명하기 위한 입력 명령어들의 일례이며, 도 3b는 도 3a의 입력 명령어들을 명령어 그룹으로 나누어서 도시한 도면이며, 도 3c는 일 실시예에 따른 명령어 압축 방법을 적용하여 압축된 명령어를 도시한 도면이다.
이하, 첨부된 도면들을 참조하여 본 발명의 실시예를 상세하게 설명한다. 사용되는 용어들은 실시예에서의 기능을 고려하여 선택된 용어들로서, 그 용어의 의미는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 후술하는 실시예들에서 사용된 용어의 의미는, 본 명세서에 구체적으로 정의된 경우에는 그 정의에 따르며, 구체적인 정의가 없는 경우는 당업자들이 일반적으로 인식하는 의미로 해석되어야 할 것이다.
도 1은 일 실시예에 따른 명령어 병렬 처리 컴퓨터를 위한 명령어 압축 장치의 구성을 보여 주는 블록도이다. 도 1을 참조하면, 명령어 압축 장치(100)는 번들 코드 생성부(bundle code generating unit, 110), 명령어 압축부(instruction compressing unit, 120), 및 명령어 변환부(instruction converting unit, 130)를 포함한다. 도 1에 도시되어 있는 번들 코드 생성부(110), 명령어 압축부(120), 및 명령어 변화부(130)는 그 기능에 따른 논리적인 구분으로서, 둘 이상의 구성요소들이 통합되어 일체로 구현될 수도 있다. 또한, 각 구성요소들(110, 120, 130)의 논리적인 기능 구분도 단지 설명의 편의를 위한 것으로서, 그 본질에 반하지 않는 한 어느 하나의 구성요소에서 수행되는 일부 기능이 다른 구성요소에서 수행될 수도 있다.
번들 코드 생성부(110)는 VLIW 컴퓨터에서 수행하기 위한 명령어(입력 명령어) 그룹들 각각(보다 구체적으로는, 명령어 압축부(120)에서 삭제되지 않고 잔류하는 명령어들 각각)에 대하여 하나 또는 그 이상의 번들 코드(bundle code)를 생성한다. 번들 코드는 현재 명령어 그룹 및/또는 하나 또는 그 이상의 다음 명령어 그룹의 NOP 명령어와 관련된 정보를 나타낸다. 보다 구체적으로, 번들 코드는 해당 명령어에서 현재 명령어 그룹 또는 현재 번들이 종료되었는지 여부를 지시한다. 또한, 해당 명령어에서 현재 번들이 종료된 경우에는, 번들 코드는 뒤따르는 하나 또는 그 이상의 명령어 그룹들 각각의 모든 명령어가 NOP 명령어(이하, 이를 'NOP 명령어 그룹' 또는 'NOP 번들'이라 한다)인지도 함께 지시한다. 이를 위하여, 번들 코드는 2비트 이상을 이용하여 나타낼 수 있다.
여기서, '유효 명령어'란 해당 명령어가 입력되면 FU에서 소정의 연산을 수행하도록 지시하는 명령어를 가리키는데, 연산의 종류나 연산의 복잡도, 이웃하는 연산과의 의존성 등에는 아무런 제한이 없다. 반면, 'NOP 명령어'는 해당 명령어가 입력되는 시점에서 FU가 아무런 연산을 수행하지 않도록 지시하는 명령어를 가리킨다. 그리고 '현재 번들이 종료되었다'는 것은 현재 명령어 그룹 내에서 해당 번들 코드를 포함하는 명령어(일반적으로 유효 명령어이지만 NOP 명령어일 수도 있다)의 뒤에는 더 이상 유효 명령어가 없다(즉, 뒤따르는 모든 명령어는 NOP 명령어이다)는 것을 가리킨다. 또한, '현재 번들이 종료되지 않았다'는 것은 명령어 그룹 내에서 해당 번들 코드를 포함하는 명령어의 뒤쪽에 하나 또는 그 이상의 유효 명령어가 있다는 것을 가리킨다. 따라서 같은 명령어 그룹에서 현재 명령어의 뒤에 NOP 명령어가 있더라도 그 NOP 명령어 뒤에 다른 유효 명령어가 있는 경우에는, 현재 번들이 종료되지 않은 것에 해당된다.
이와 같이, 번들 코드는 현재 번들의 종료 여부를 지시하는 외에 현재 번들이 종료된 경우에는 후속 명령어 그룹에 포함되는 전체 명령어가 NOP 명령어인지, 즉 NOP 번들인지를 지시하는 압축 비트(compression bit)이다. 번들 코드는, 뒤따르는 명령어에 NOP 명령이 몇 개 있는지를 지시하는 것이 아니라, 뒤따르는 명령어 그룹 전체가 NOP 번들인지 또는 아닌지를 지시한다. 예를 들어, 번들 코드는 후속 명령어 그룹이 NOP 번들인지, 만일 NOP 번들인 경우에는 후속되는 하나의 명령어 그룹이 NOP 번들인지 또는 후속되는 두 개의 명령어 그룹이 NOP 번들인지를 지시할 수 있다. 따라서 번들 코드는 NOP 번들이 빈번하게 나타나는 명령어들을 압축하는데 있어서 효과적이다.
이러한 번들 코드는 후속되는 NOP 명령어의 개수를 지시하는 코드나 유효 명령어들 사이에 위치하는 NOP 명령어의 개수를 지시하는 코드와는 상이하다. NOP 명령어의 개수를 지시하는 코드를 사용할 경우에는 NOP의 개수가 많은 경우에는 크기가 큰 비트를 코드로 사용해야 하거나 또는 코드의 크기가 한정되어 있으면 NOP 번들과 같이 많은 NOP 명령어가 연속되는 경우에는 이를 나타낼 수가 없다. 따라서 NOP 명령어의 개수를 지시하는 코드는 NOP 번들이 빈번하게 나타나는 명령어의 압축 효율에는 한계가 있을 수 밖에 없다.
코드를 사용하여 현재 번들의 종료 여부만을 표시하고자 할 경우에는, 1비트 코드로도 충분하다. 그런데, 번들 코드는 현재 번들이 종료인 것을 지시하는 경우에는 뒤따르는 하나 이상의 명령어 그룹이 NOP 번들인지도 함께 표시하므로, 번들 코드에는 추가 비트가 필요하다. 따라서 번들 코드는 최소한 2비트 이상이 될 수 있다. 만일, 번들 코드가 2비트의 압축 비트인 경우에는, 번들 코드를 이용하여 최대로 뒤따르는 2개의 명령어 그룹이 연속적으로 모두 NOP 번들인 것을 표현할 수 있다(후술하는 표 1 참조). 반면, 번들 비트로 3비트 이상을 사용하는 경우에는, 뒤따르는 3개 이상의 명령어 그룹(최대 6개의 명령어 그룹)이 연속적으로 모두 NOP 번들인 것을 표시할 수도 있다.
표 1은 번들 코드로 2비트를 사용할 경우에, 각 번들 코드가 지시하는 정보의 일례를 보여 주는 것이다. 표 1을 참조하면, 번들 코드 '00'은 현재 번들이 종료되지 않았음을 나타내고, 다른 번들 코드 '01', '10', '11'은 현재 번들이 종료되었음을 나타낸다. 따라서 번들 코드 '00'은 명령어 그룹의 마지막에는 발생할 수 없다. 그리고 번들 코드 '01'은 현재 번들이 종료되었으며, 다음 명령어 그룹은 NOP 번들이 아니다(다음 번들이 비어있지 않다)라는 것을 나타내고, 번들 코드 '10'은 현재 번들이 종료되었으며, 다음 하나의 명령어 그룹이 NOP 번들이다(다음 번들이 비어 있다)라는 것을 나타내며, 번들 코드 '11'은 현재 번들이 종료되었으며, 다음 두 개의 명령어 그룹이 NOP 번들이다(다음 두 개의 번들이 비어 있다)라는 것을 나타낸다.
Figure 112010010824842-pat00001
명령어 압축부(120)는 번들 코드 생성부(110)에서 생성되는 번들 코드에 대응하도록 입력 명령어들에 포함되는 NOP 명령어를 삭제한다. 이를 위하여, 번들 코드 생성부(110)에서 생성된 번들 코드 정보는 명령어 압축부(120)로 전달되거나 또는 번들 코드 생성부(110)의 동작과 명령어 압축부(120)의 동작이 동시에 진행될 수도 있다. 이하, 표 1의 번들 코드를 사용하는 경우를 예로 들어서, 명령어 압축부(120)의 동작에 관해서 설명한다.
우선, 번들 코드 생성부(110)에서 번들 코드 '00'이 생성되는 경우에는, 명령어 압축부(120)에서는 현재 명령어 그룹에서 비록 NOP 명령어가 뒤따르더라도 이를 삭제하지 않는다. 왜냐하면, 현재 명령어 그룹내에서 이 NOP 명령어의 뒤에 다른 유효 명령어가 존재하기 때문이다. 번들 코드 생성부(110)에서 번들 코드 '01'이 생성되는 경우에는, 명령어 압축부(120)는 현재 명령어 그룹에서 뒤따르는 NOP 명령어를 모두 삭제한다. 그리고 번들 코드 생성부(120)에서 번들 코드 '10'이 생성되는 경우에, 명령어 압축부(120)는 현재 명령어 그룹에서 뒤따르는 NOP 명령어는 물론 NOP 번들인 다음 명령어 그룹 전체를 삭제한다.
또한, 번들 코드 생성부(110)에서 번들 코드 '11'이 생성되는 경우에, 명령어 압축부(120)는 현재 명령어 그룹 내에서 뒤따르는 NOP 명령어는 물론 NOP 번들인 다음 두 개의 명령어 그룹 전체를 삭제한다. 만일, 세 개 또는 그 이상의 NOP 번들이 현재 명령어 그룹에 뒤따르는 경우에는, 세 번째 NOP 번들의 첫 번째 NOP 명령어는 삭제되지 않는다. 이 경우에, 삭제되지 않은 첫 번째 NOP 명령어에 번들 코드를 포함시켜서 그룹 내의 다른 NOP 명령어는 물론 뒤따르는 NOP 번들을 삭제할 수 있다(또한, 번들 코드 생성부(110)에서 사용하는 번들 코드가 3비트 이상인 경우에는, 명령어 압축부(120)에서 뒤따르는 NOP 번들이 연속적으로 세 개 이상인 경우에도 삭제가 가능하다는 것은 자명하다).
명령어 변화부(130)는 명령어 압축부(120)에서 삭제되지 않고 남은 명령어들(유효 명령어이거나 또는 NOP 명령어일 수 있다) 각각에 번들 코드 생성부(110)에서 생성된 번들 코드를 포함시킨다. 번들 코드는 예컨대 잔존하는 각 명령어의 말미에 포함(기존의 명령어에 추가되거나 또는 기존의 명령어의 말미에 있는 비트와 치환되는 등, 번들 코드를 포함시키는 방법에는 특별한 제한이 없다)될 수 있으나, 여기에만 한정되는 것은 아니다. 그 결과, 명령어 변환부(130)는 번들 코드가 포함된 명령어들로 이루어진 압축된 명령어를 출력한다.
도 2는 일 실시예에 따른 명령어 압축 절차를 보여 주는 흐름도이다. 도 2에 도시된 절차의 일부 단계(예컨대, 단계 210과 단계 220)는 반드시 시간적 선후 관계가 있는 것은 아니며, 순서가 바뀌거나 또는 동시에 수행될 수 있다. 그리고 도 2에 도시된 명령어 압축 절차는 도 1에 도시된 명령어 압축 장치(100)에서 수행되는 절차일 수 있다. 따라서 불필요한 중복 설명을 피하기 위하여 명령어 압축 절차는 간략히 설명한다.
도 2를 참조하면, 명령어들이 입력되면 유효 명령어 및 일부 NOP 명령어에 대한 번들 코드를 생성한다(210). 번들 코드는 해당 명령어에서 현재 명령어 그룹 또는 현재 번들이 종료되었는지 여부를 지시하며, 또한 현재 번들이 종료된 경우에는 뒤따르는 하나 또는 그 이상의 명령어 그룹들 각각의 모든 명령어가 NOP 명령어(이하, 이를 'NOP 번들'이라 한다)인지도 함께 지시한다. 번들 코드는 유효 명령어에 대해서만 생성되는 것이 아니며, 명령어 그룹 내에서 유효 명령어의 앞에 NOP 명령어가 있거나 또는 NOP 번들의 개수가 번들 코드로 표현할 수 있는 최대 개수를 초과하는 경우에는 NOP 명령어에 대해서도 번들 코드(표 1에 개시된 예에서는 번들 코드'00')가 생성될 수 있다.
그리고 번들 코드를 생성함과 동시(또는 그 이전이나 그 이후)에, 입력되는 명령어들에 포함되어 있는 일부 NOP 명령어(불필요한 NOP 명령어)를 삭제하는 명령어 압축을 수행한다(220). 삭제되는 NOP 명령어는 단계 210에서 번들 코드가 생성되지 않는 NOP 명령어로서, 명령어 그룹 내에서 유효 명령어(또는 NOP 명령어)의 뒤에 위치하는 NOP 명령어(이 NOP 명령어의 뒤에 다시 다른 유효 명령어가 있는 경우에는 이 NOP 명령어는 삭제되지 않을 수 있다)이거나 또는 NOP 번들 내의 모든 NOP 명령어일 수 있다(단, NOP 번들이 번들 코드로 표현할 수 있는 최대 NOP 번들보다 많을 경우에는 최대 NOP 번들을 초과하는 NOP 번들의 제일 앞에 위치하는 NOP 명령어는 삭제되지 않을 수 있다).
계속해서, 단계 210에서 생성된 번들 코드를 단계 S220에서 삭제되지 않고 잔류하는 명령어에 포함시켜서 압축된 명령어를 생성하여 출력한다(230). 번들 코드는 이에 대응하는 명령어(즉, 번들 코드를 생성할 때 기준이 된 명령어)에 포함된다는 것은 자명하다.
도 3a 내지 도 3c는 일 실시예에 따른 명령어 압축 장치(100)에서 입력 명령어들을 압축하는 과정을 예시적으로 보여 주는 도면이다. 도시된 실시예는 전술한 표 1에 개시되어 있는 번들 코드를 사용하는 경우로서, 본 실시예가 여기에만 한정되는 것은 아니다.
도 3a는 명령어 압축 장치(100)로 입력되는 입력 명령어들(300)의 일례로서 30개의 입력 명령어가 블록 단위로 순차적으로 표시되어 있다. 도 3a에서 알파벳 'A' 내지 'K'는 각각 유효 명령어를 나타내는데, 명령어가 지시하는 연산의 내용에는 아무런 제한이 없다. NOP(도면에서는 소문자 'nop'로 표시한다)는 무연산 명령어이다. 도 3a를 참조하면, 30개의 명령어들(300) 중에서 11개의 명령어가 유효 명령어이고 나머지 19개는 NOP 명령어인데, 그 비율은 특별한 제한이 없다. 일반적으로, 데이터 연산이 아닌 제어 파트는 기본 블록(Basic Block, BB)의 크기가 작고 데이터 흐름이 간단하여 VLIW 컴퓨터에서 효율적으로 수행이 가능한데, 이러한 제어 파트는 상대적으로 NOP 명령어가 많이 포함되는 특징이 있다.
도 3b는 3개의 FU에서 입력 명령어들을 순차적으로 수행할 경우(명령어 그룹의 크기가 3인 경우)에 압축을 적용하지 않고 입력 명령어들을 명령어 그룹 단위(301~310)로 재배열한 도면이다. 도 3b에서 동일한 열(row)에 배열되어 있는 3개의 명령어들(301~310)이 동시에 3개의 FU로 분배되어 입력되며, 위쪽 열(301)부터 아래쪽으로 순차적으로 입력되어 명령이 실행된다. 그리고 도 3c는 명령어 압축 장치(100)에서 압축된 명령어를 명령어 그룹 단위(301'~310')로 배열하여 보여 주는 도면이다. 이하, 도 1 및 도 3a 내지 도 3c를 참조하여, 명령어 압축 과정을 상세히 설명한다.
도 3a에 도시된 것과 같은 입력 명령어들(300)이 명령어 압축 장치(100)로 입력되면, 명령어 압축 장치(100)는 도 3b에 도시된 것과 같은 명령어 그룹 단위로 번들 코드를 생성하고 NOP 명령어를 삭제한다. 먼저, 제1 명령어 그룹(301)에서는 첫 번째 명령어(A)만 유효 명령어이고 나머지는 모두 NOP 명령어이다. 그리고 후속 명령어 그룹(302)은 NOP 번들이 아니다. 이 경우에, 번들 코드 생성부(110)는 첫 번째 명령어(A)에 대하여 '01'이라는 번들 코드를 생성(왜냐하면, 그룹 내에서 후속하는 명령어가 모두 NOP 명령어이기 때문이다)하며, 명령어 압축부(120)는 제1 명령어 그룹(301) 내에서 뒤따르는 NOP 명령어를 모두 삭제한다. 그 결과, 명령어 변환부(130)는 첫 번째 명령어(A)의 말미에 생성된 번들 코드 '01'을 포함시켜서, 도 3c의 첫 번째 열에 도시된 것과 같은 명령어(301')를 출력한다.
제2 명령어 그룹(302)에서는 두 번째 명령어만 유효 명령어(B)이고, 나머지는 모두 NOP 명령어이다. 그리고 제2 명령어 그룹(302)에 뒤따르는 두 개의 명령어 그룹(303, 304)은 모두 NOP 번들이다. 이 경우에, 번들 코드 생성부(110)는 첫 번째 NOP 명령어에 대하여 '00'이라는 번들 코드를 생성하며, 유효 명령어인 두 번째 명령어(B)에 대해서는 '11'이라는 번들 코드를 생성한다. 그리고 명령어 압축부(120)는 제2 명령어 그룹(302) 내에서 두 번째 명령어(B)에 뒤따르는 NOP 명령어와 후속되는 두 개의 명령어 그룹(303, 304)에 포함되는 NOP 명령어들을 모두 삭제한다. 그 결과, 명령어 변환부(130)는 첫 번째 NOP 명령어 및 두 번째 명령어(B) 각각의 말미에 생성된 번들 코드 '00'과 '11'을 포함시켜서, 도 3c의 두 번째 열 내지 두 번째 열에 도시된 것과 같은 명령어(302'~304')를 출력한다.
제5 명령어 그룹(305)에서는 첫 번째 명령어(C)만 유효 명령어이고 나머지는 모두 NOP 명령어이다. 그리고 후속 명령어 그룹(306)은 NOP 번들이 아니다. 이 경우에, 번들 코드 생성부(110)는 첫 번째 명령어(C)에 대하여 '01'이라는 번들 코드를 생성(왜냐하면, 그룹 내에서 후속하는 명령어가 모두 NOP 명령어이기 때문이다)하며, 명령어 압축부(120)는 제5 명령어 그룹(305) 내에서 뒤따르는 NOP 명령어를 모두 삭제한다. 그 결과, 명령어 변환부(130)는 첫 번째 명령어(C)의 말미에 생성된 번들 코드 '01'을 포함시켜서, 도 3c의 다섯 번째 열에 도시된 것과 같은 명령어(305')를 출력한다.
제6 명령어 그룹(306)에서는 첫 번째 명령어(D) 및 두 번째 명령어(E)가 유효 명령어이고 나머지는 NOP 명령어이다. 그리고 후속 명령어 그룹(307)은 NOP 번들이 아니다. 이 경우에, 번들 코드 생성부(110)는 첫 번째 명령어(D)에 대하여 '00'이라는 번들 코드를 생성(왜냐하면, 그룹 내에서 후속하는 명령어가 유효 명령어이기 때문이다)하며, 두 번째 명령어(E)에 대하여 '01'이라는 번들 코드를 생성한다. 그리고 명령어 압축부(120)는 제6 명령어 그룹(306) 내에서 뒤따르는 NOP 명령어를 삭제한다. 그 결과, 명령어 변환부(130)는 첫 번째 명령어(D) 및 두 번째 명령어(E) 각각의 말미에 생성된 번들 코드 '00'과'10'을 포함시켜서, 도 3c의 여섯 번째 열에 도시된 것과 같은 명령어(306')를 출력한다.
제7 명령어 그룹(307)에서는 세 개의 명령어(F, G, H)가 모두 유효 명령어이다. 그리고 후속 명령어 그룹(308)은 NOP 번들이 아니다. 이 경우에, 번들 코드 생성부(110)는 첫 번째 명령어(F) 및 두 번째 명령어(G)에 대하여 '00'이라는 번들 코드를 생성하며, 마지막 명령어(H)에 대하여 '01'이라는 번들 코드를 생성한다. 그리고 제7 명령어 그룹(307) 내에는 NOP 명령어가 없으므로, 명령어 압축부(120)는 아무런 동작도 하지 않는다. 그 결과, 명령어 변환부(130)는 세 개의 명령어(F, G, H) 각각의 말미에 생성된 번들 코드 '00', '00', 및 '10'을 포함시켜서, 도 3c의 일곱 번째 열에 도시된 것과 같은 명령어(307')를 출력한다.
제8 명령어 그룹(308)은 그룹 내에 포함된 명령어의 구성과 후속 명령어 그룹(309)의 종류가 제5 명령어 그룹(305)과 동일하므로, 이에 대한 설명은 생략한다. 그리고 제9 명령어 그룹(309)은 첫 번째 명령어(J)와 두 번째 명령어(K)가 유효 명령어이고, 나머지는 NOP 명령어이다. 그리고 제9 명령어 그룹(309)에 뒤따르는 제10 명령어 그룹(310)은 NOP 번들이다. 이 경우에, 번들 코드 생성부(110)는 첫 번째 유효 명령어(J)에 대하여 '00'이라는 번들 코드를 생성하며, 두 번째 유효 명령어(K)에 대해서는 '10'이라는 번들 코드를 생성한다. 그리고 명령어 압축부(120)는 제9 명령어 그룹(309) 내에서 두 번째 명령어(K)에 뒤따르는 NOP 명령어와 후속되는 제10 명령어 그룹(310)에 포함되는 NOP 명령어들을 모두 삭제한다. 그 결과, 명령어 변환부(130)는 첫 번째 유효 명령어(J) 및 두 번째 명령어(K) 각각의 말미에 생성된 번들 코드 '00'과 '10'을 포함시켜서, 도 3c의 아홉 번째 열 및 열 번째 열에 도시된 것과 같은 명령어(309', 310')를 출력한다.
이와 같이, 도 1에 도시되어 있는 명령어 압축 장치(100) 또는 도 2에 도시되어 있는 명령어 압축 방법을 이용하면, 도 3a에 도시된 것과 같은 30개의 명령어는 13개의 명령어로 압축된다. 물론, VLIW 컴퓨터의 기본 블록의 크기나 입력 명령어를 구성하는 유효 명령어와 NOP 명령어의 조합, 번들 코드의 크기 등에 따라서 압축률을 달라질 수 있다. 다만, 본 실시예에서는 번들 코드를 이용하여 하나 또는 그 이상의 NOP 번들에 포함되는 NOP 명령어들을 모두 삭제하여 명령어들을 압축할 수 있으므로, NOP 번들이 빈번하게 발생하는 프로세스(제어 파트)에 효과적이다.
이상의 설명은 본 발명의 실시예에 불과할 뿐, 이 실시예에 의하여 본 발명의 기술 사상이 한정되는 것으로 해석되어서는 안된다. 본 발명의 기술 사상은 특허청구범위에 기재된 발명에 의해서만 특정되어야 한다. 따라서 본 발명의 기술 사상을 벗어나지 않는 범위에서 전술한 실시예는 다양한 형태로 변형되어 구현될 수 있다는 것은 당업자에게 자명하다.
110 : 번들 코드 생성부
120 : 명령어 압축부
130 : 명령어 변환부

Claims (20)

  1. 병렬 처리 컴퓨터에서 수행될 명령어들을 압축하는 장치에 있어서,
    상기 명령어들이 입력되면, 현재 명령어 그룹이 종료되었는지 여부를 지시하며, 또한 현재 명령어 그룹이 종료된 경우에는 뒤따르는 명령어 그룹이 무연산(No OPeration, NOP) 명령어 그룹인지도 함께 지시하는 번들 코드(bundle code)를 생성하는 번들 코드 생성부;
    상기 번들 코드 생성부에서 생성된 번들 코드에 대응하여 상기 입력되는 명령어들에 포함된 NOP 명령어 및/또는 NOP 명령어 그룹을 삭제하는 명령어 압축부; 및
    상기 명령어 압축부에서 삭제되지 않은 명령어들 각각에 상기 번들 코드 생성부에서 생성된 대응하는 번들 코드를 포함시키는 명령어 변환부를 포함하고,
    상기 번들 코드는
    현재 명령어 그룹이 종료되지 않았음을 지시하는 제1 코드;
    상기 현재 명령어 그룹이 종료되었으며 상기 현재 명령어 그룹에 뒤따르는 명령어 그룹이 NOP 명령어 그룹이 아니라는 것을 지시하는 제2 코드;
    상기 현재 명령어 그룹이 종료되었으며 상기 현재 명령어 그룹에 뒤따르는 하나의 명령어 그룹이 NOP 명령어 그룹이라는 것을 지시하는 제3 코드; 및
    2비트 또는 그 이상의 비트를 이용하여 표현되며, 상기 현재 명령어 그룹이 종료되었으며 상기 현재 명령어 그룹에 뒤따르는 두 개의 명령어 그룹이 연속해서 NOP 명령어 그룹이라는 것을 지시하는 제4 코드를 포함하는 명령어 압축 장치.
  2. 제1항에 있어서,
    상기 명령어 압축부가 삭제할 수 있는 상기 NOP 명령어 그룹의 최대 개수는 상기 번들 코드의 크기에 의하여 제한되는 명령어 압축 장치.
  3. 삭제
  4. 제1항에 있어서,
    상기 번들 코드 생성부가 상기 제1 코드를 생성하면, 상기 명령어 압축부는 하나의 NOP 명령어도 삭제하지 않는 명령어 압축 장치.
  5. 제1항에 있어서,
    상기 번들 코드 생성부가 상기 제2 코드를 생성하면, 상기 명령어 압축부는 상기 현재 명령어 그룹 내에서 뒤따르는 NOP 명령어가 있으면 모두 삭제하는 명령어 압축 장치.
  6. 제1항에 있어서,
    상기 번들 코드 생성부가 상기 제3 코드를 생성하면, 상기 명령어 압축부는 상기 현재 명령어 그룹 내에서 뒤따르는 NOP 명령어가 있으면 모두 삭제하고, 또한 상기 현재 명령어 그룹에 뒤따르는 하나의 NOP 명령어 그룹 전체를 삭제하는 명령어 압축 장치.
  7. 삭제
  8. 제1항에 있어서,
    상기 번들 코드 생성부가 상기 제4 코드를 생성하면, 상기 명령어 압축부는 상기 현재 명령어 그룹 내에서 뒤따르는 NOP 명령어가 있으면 모두 삭제하고, 또한 상기 현재 명령어 그룹에 뒤따르는 두 개의 NOP 명령어 그룹 전체를 삭제하는 명령어 압축 장치.
  9. 제1항에 있어서,
    상기 명령어 그룹은 상기 병렬 처리 컴퓨터에서 동시에 처리될 수 있는 최대의 명령어 개수만큼의 크기를 가지는 명령어 압축 장치.
  10. 제1항에 있어서,
    상기 명령어 변환부는 상기 명령어의 일부 비트를 상기 번들 코드로 치환하는 명령어 압축 장치.
  11. 병렬 처리 컴퓨터에서 수행될 명령어들을 압축하는 방법에 있어서,
    명령어들을 입력 받아서 현재 명령어 그룹이 종료되었는지 여부를 지시하며, 또한 현재 명령어 그룹이 종료된 경우에는 뒤따르는 명령어 그룹이 무연산(No OPeration, NOP) 명령어 그룹인지도 함께 지시하는 번들 코드(bundle code)를 생성하는 단계;
    생성된 번들 코드에 대응하여 상기 입력되는 명령어들에 포함된 NOP 명령어 및/또는 NOP 명령어 그룹을 삭제하는 단계; 및
    상기 입력된 명령어들 중에서 상기 삭제 단계에서 삭제되지 않은 명령어들 각각에 상기 대응하는 번들 코드를 포함시키는 단계를 포함하고,
    상기 번들 코드는
    현재 명령어 그룹이 종료되지 않았음을 지시하는 제1 코드;
    상기 현재 명령어 그룹이 종료되었으며 상기 현재 명령어 그룹에 뒤따르는 명령어 그룹이 NOP 명령어 그룹이 아니라는 것을 지시하는 제2 코드;
    상기 현재 명령어 그룹이 종료되었으며 상기 현재 명령어 그룹에 뒤따르는 하나의 명령어 그룹이 NOP 명령어 그룹이라는 것을 지시하는 제3 코드; 및
    2비트 또는 그 이상의 비트를 이용하여 표현되며, 상기 현재 명령어 그룹이 종료되었으며 상기 현재 명령어 그룹에 뒤따르는 두 개의 명령어 그룹이 연속해서 NOP 명령어 그룹이라는 것을 지시하는 제4 코드를 포함하는 명령어 압축 방법.
  12. 제11항에 있어서,
    상기 명령어 압축 단계에서 삭제될 수 있는 상기 NOP 명령어 그룹의 최대 개수는 상기 번들 코드의 크기에 의하여 제한되는 명령어 압축 방법.
  13. 삭제
  14. 제11항에 있어서,
    상기 번들 코드 생성 단계에서 상기 제1 코드가 생성되면, 상기 명령어 압축 단계에서는 하나의 NOP 명령어도 삭제되지 않고, 상기 번들 코드 생성 단계에서 상기 제2 코드가 생성되면, 상기 명령어 압축 단계에서는 상기 현재 명령어 그룹 내에서 뒤따르는 NOP 명령어가 있으면 모두 삭제되며, 그리고 상기 번들 코드 생성 단계에서 상기 제3 코드가 생성되면, 상기 명령어 압축 단계에서는 상기 현재 명령어 그룹 내에서 뒤따르는 NOP 명령어가 있으면 모두 삭제되고, 또한 상기 현재 명령어 그룹에 뒤따르는 하나의 NOP 명령어 그룹 전체가 삭제되는 명령어 압축 방법.
  15. 삭제
  16. 제11항에 있어서,
    상기 번들 코드 생성부에서 상기 제4 코드가 생성되면, 상기 명령어 압축 단계에서는 상기 현재 명령어 그룹 내에서 뒤따르는 NOP 명령어가 있으면 모두 삭제되고, 또한 상기 현재 명령어 그룹에 뒤따르는 두 개의 NOP 명령어 그룹 전체가 삭제되는 명령어 압축 방법.
  17. 제11항에 있어서,
    상기 명령어 그룹은 상기 병렬 처리 컴퓨터에서 동시에 처리될 수 있는 최대의 명령어 개수만큼의 크기를 가지는 명령어 압축 방법.
  18. 병렬 처리 컴퓨터에서 수행될 명령어들을 압축하는 방법에 있어서,
    명령어들을 입력 받아서 현재 명령어 그룹에 뒤따르는 명령어 그룹이 무연산(No OPeration, NOP) 명령어 그룹인지를 지시하는 번들 코드(bundle code)를 생성하는 단계;
    생성된 번들 코드에 대응하여 상기 입력되는 명령어들에 포함된 NOP 명령어 그룹을 삭제하는 단계; 및
    상기 현재 명령어 그룹에 포함되는 명령어들 중에서 상기 삭제 단계에서 삭제되지 않은 가장 마지막 명령어에 상기 번들 코드를 포함시키는 단계를 포함하고,
    상기 번들 코드는
    현재 명령어 그룹이 종료되지 않았음을 지시하는 제1 코드;
    상기 현재 명령어 그룹이 종료되었으며 상기 현재 명령어 그룹에 뒤따르는 명령어 그룹이 NOP 명령어 그룹이 아니라는 것을 지시하는 제2 코드;
    상기 현재 명령어 그룹이 종료되었으며 상기 현재 명령어 그룹에 뒤따르는 하나의 명령어 그룹이 NOP 명령어 그룹이라는 것을 지시하는 제3 코드; 및
    2비트 또는 그 이상의 비트를 이용하여 표현되며, 상기 현재 명령어 그룹이 종료되었으며 상기 현재 명령어 그룹에 뒤따르는 두 개의 명령어 그룹이 연속해서 NOP 명령어 그룹이라는 것을 지시하는 제4 코드를 포함하는 명령어 압축 방법.
  19. 제18항에 있어서,
    상기 번들 코드는 상기 현재 명령어 그룹이 종료되었는지도 함께 지시하고, 또한 상기 현재 명령어 그룹이 종료되었을 경우에만 상기 현재 명령어 그룹에 뒤따르는 명령어 그룹이 무연산(No OPeration, NOP) 명령어 그룹인지를 지시하는 명령어 압축 방법.
  20. 삭제
KR1020100014851A 2010-02-18 2010-02-18 명령어 병렬 처리 컴퓨터를 위한 명령어 압축 장치 및 방법 KR101603751B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100014851A KR101603751B1 (ko) 2010-02-18 2010-02-18 명령어 병렬 처리 컴퓨터를 위한 명령어 압축 장치 및 방법
US12/912,533 US9286074B2 (en) 2010-02-18 2010-10-26 NOP instruction compressing apparatus and method in a VLIW machine

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100014851A KR101603751B1 (ko) 2010-02-18 2010-02-18 명령어 병렬 처리 컴퓨터를 위한 명령어 압축 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20110095049A KR20110095049A (ko) 2011-08-24
KR101603751B1 true KR101603751B1 (ko) 2016-03-16

Family

ID=44370455

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100014851A KR101603751B1 (ko) 2010-02-18 2010-02-18 명령어 병렬 처리 컴퓨터를 위한 명령어 압축 장치 및 방법

Country Status (2)

Country Link
US (1) US9286074B2 (ko)
KR (1) KR101603751B1 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10698859B2 (en) 2009-09-18 2020-06-30 The Board Of Regents Of The University Of Texas System Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture
WO2011159309A1 (en) 2010-06-18 2011-12-22 The Board Of Regents Of The University Of Texas System Combined branch target and predicate prediction
KR101738938B1 (ko) * 2011-09-08 2017-05-23 삼성전자주식회사 명령어 압축 장치, 명령어 압축 방법 및 컴퓨터로 읽을 수 있는 저장 매체
US9348792B2 (en) 2012-05-11 2016-05-24 Samsung Electronics Co., Ltd. Coarse-grained reconfigurable processor and code decompression method thereof
KR102056730B1 (ko) 2013-04-22 2019-12-17 삼성전자주식회사 Vliw 프로세서를 위한 명령어 압축 장치 및 방법과, 명령어 인출 장치 및 방법
KR102210997B1 (ko) * 2014-03-12 2021-02-02 삼성전자주식회사 Vliw 명령어를 처리하는 방법 및 장치와 vliw 명령어를 처리하기 위한 명령어를 생성하는 방법 및 장치
US11016770B2 (en) 2015-09-19 2021-05-25 Microsoft Technology Licensing, Llc Distinct system registers for logical processors
US10180840B2 (en) 2015-09-19 2019-01-15 Microsoft Technology Licensing, Llc Dynamic generation of null instructions
US11126433B2 (en) 2015-09-19 2021-09-21 Microsoft Technology Licensing, Llc Block-based processor core composition register
US10198263B2 (en) 2015-09-19 2019-02-05 Microsoft Technology Licensing, Llc Write nullification
US10719321B2 (en) 2015-09-19 2020-07-21 Microsoft Technology Licensing, Llc Prefetching instruction blocks
US10678544B2 (en) 2015-09-19 2020-06-09 Microsoft Technology Licensing, Llc Initiating instruction block execution using a register access instruction
US10871967B2 (en) 2015-09-19 2020-12-22 Microsoft Technology Licensing, Llc Register read/write ordering
US10776115B2 (en) 2015-09-19 2020-09-15 Microsoft Technology Licensing, Llc Debug support for block-based processor
US11681531B2 (en) 2015-09-19 2023-06-20 Microsoft Technology Licensing, Llc Generation and use of memory access instruction order encodings
US10936316B2 (en) 2015-09-19 2021-03-02 Microsoft Technology Licensing, Llc Dense read encoding for dataflow ISA
US10768936B2 (en) 2015-09-19 2020-09-08 Microsoft Technology Licensing, Llc Block-based processor including topology and control registers to indicate resource sharing and size of logical processor
US11977891B2 (en) 2015-09-19 2024-05-07 Microsoft Technology Licensing, Llc Implicit program order
US10452399B2 (en) 2015-09-19 2019-10-22 Microsoft Technology Licensing, Llc Broadcast channel architectures for block-based processors
KR20180031266A (ko) * 2016-09-19 2018-03-28 삼성전자주식회사 전자 장치, vliw 프로세서 및 그 제어 방법들

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3799266A (en) * 1972-08-18 1974-03-26 Exxon Production Research Co Fracturing method using acid external emulsions
JPH09265397A (ja) * 1996-03-29 1997-10-07 Hitachi Ltd Vliw命令用プロセッサ
US5958044A (en) * 1997-01-24 1999-09-28 Texas Instruments Incorporated Multicycle NOP
JPH1185512A (ja) * 1997-09-03 1999-03-30 Fujitsu Ltd 命令圧縮格納および命令復元機能を有するデータ処理装置
DE19843573A1 (de) * 1998-09-23 2000-03-30 Degussa Blasensäule und deren Verwendung
US6799266B1 (en) 1999-12-30 2004-09-28 Texas Instruments Incorporated Methods and apparatus for reducing the size of code with an exposed pipeline by encoding NOP operations as instruction operands
GB2366643B (en) * 2000-05-25 2002-05-01 Siroyan Ltd Methods of compressing instructions for processors
JP4026753B2 (ja) * 2002-07-25 2007-12-26 株式会社日立製作所 半導体集積回路
US7574583B2 (en) * 2002-09-24 2009-08-11 Silicon Hive B.V. Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor
US7290122B2 (en) * 2003-08-29 2007-10-30 Motorola, Inc. Dataflow graph compression for power reduction in a vector processor
US7590830B2 (en) * 2004-05-28 2009-09-15 Sun Microsystems, Inc. Method and structure for concurrent branch prediction in a processor
KR100875836B1 (ko) * 2007-03-23 2008-12-24 삼성전자주식회사 병렬 처리 vliw 컴퓨터를 위한 인스트럭션 명령어 압축장치 및 그 방법
KR101545701B1 (ko) * 2008-10-07 2015-08-19 삼성전자 주식회사 프로세서 및 그 명령어 번들 복원 방법

Also Published As

Publication number Publication date
KR20110095049A (ko) 2011-08-24
US20110202749A1 (en) 2011-08-18
US9286074B2 (en) 2016-03-15

Similar Documents

Publication Publication Date Title
KR101603751B1 (ko) 명령어 병렬 처리 컴퓨터를 위한 명령어 압축 장치 및 방법
US10007605B2 (en) Hardware-based array compression
US7673187B2 (en) Data processing apparatus and method for reducing trace bandwidth
US8125364B2 (en) Data compression/decompression method
KR20120068824A (ko) 데이터 처리 장치, 데이터 처리 방법, 프로그램 변환 처리 장치, 프로그램 변환 처리 방법, 프로그램 해석 처리 장치, 프로그램 해석 처리 방법, 이력 보존 장치, 프로그램, 컴파일 처리 장치, 및 컴파일 처리 방법
US10628066B2 (en) Ensuring in-storage data atomicity and consistency at low cost
US8899343B2 (en) Replacing contiguous breakpoints with control words
CN109359060B (zh) 数据抽取方法、装置、计算设备及计算机存储介质
KR102056730B1 (ko) Vliw 프로세서를 위한 명령어 압축 장치 및 방법과, 명령어 인출 장치 및 방법
CN101727505B (zh) 一种高效的数据处理方法及装置
KR20150117522A (ko) 그래픽스 상태 관리 장치 및 방법
JP2001273138A (ja) プログラム変換装置および方法
US20170177370A1 (en) Compressing detected current and preceding instructions with the same operation code and operand patterns
CN104967856A (zh) 一种编码方法及相关设备
US20150089149A1 (en) Arithmetic processing device and control method for arithmetic processing device
US20120110307A1 (en) Compressed instruction processing device and compressed instruction generation device
WO2015062035A1 (zh) 一种列式数据库处理方法及装置
GB2524515A (en) Method to improve compression ratio for a compression engine
US12001237B2 (en) Pattern-based cache block compression
CN1964496A (zh) 编码器及自适应算术编码的实现方法及装置
JP5238876B2 (ja) 情報処理装置及び情報処理方法
EP0945795B1 (en) Computer system having a multi-pointer branch instruction and method
US20100223596A1 (en) Data processing device and method
KR20130027855A (ko) 명령어 압축 장치, 명령어 압축 방법 및 컴퓨터로 읽을 수 있는 저장 매체
US9928045B2 (en) Information processing apparatus, compile method and non-transitory recording medium storing compile program

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
LAPS Lapse due to unpaid annual fee