KR100573334B1 - 실시간 동적 수정이 가능한 명령어 집합을 가지는 컴퓨터 - Google Patents

실시간 동적 수정이 가능한 명령어 집합을 가지는 컴퓨터 Download PDF

Info

Publication number
KR100573334B1
KR100573334B1 KR1020050080533A KR20050080533A KR100573334B1 KR 100573334 B1 KR100573334 B1 KR 100573334B1 KR 1020050080533 A KR1020050080533 A KR 1020050080533A KR 20050080533 A KR20050080533 A KR 20050080533A KR 100573334 B1 KR100573334 B1 KR 100573334B1
Authority
KR
South Korea
Prior art keywords
instruction
decoding unit
unit
code
dynamic
Prior art date
Application number
KR1020050080533A
Other languages
English (en)
Inventor
임진혁
Original Assignee
주식회사 칩스앤미디어
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 칩스앤미디어 filed Critical 주식회사 칩스앤미디어
Priority to KR1020050080533A priority Critical patent/KR100573334B1/ko
Application granted granted Critical
Publication of KR100573334B1 publication Critical patent/KR100573334B1/ko
Priority to CN200680031849.9A priority patent/CN101253480B/zh
Priority to PCT/KR2006/003364 priority patent/WO2007027025A1/en
Priority to GB0802322A priority patent/GB2442908B/en
Priority to US11/884,506 priority patent/US20080270759A1/en
Priority to TW095132215A priority patent/TWI335532B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

본 발명은 명령어 집합을 실시간 실행 중에 동적으로 수정가능한 컴퓨터에 관한 것이다. 본 발명에 따른 컴퓨터는, 메모리로부터 명령어를 페치(fetch)하는 명령어 페치 유닛, 이 명령어 페치 유닛에 의해 페치된 명령어에 대응되는 소정의 제어 코드를 생성하는 명령어 해독 유닛, 및 상기 제어 코드에 의해 동작하는 연산 유닛을 구비하는 중앙처리장치를 포함하는 컴퓨터로서, 상기 명령어 해독 유닛은, 기본 명령어 집합에 대한 제어 코드를 생성하는 기본 명령어 해독 유닛; 및 기본 명령어 집합의 명령어에 대응되는 상기 제어 코드와 다른 제어 코드를 생성하거나, 또는 기본 명령어 집합에 없는 명령어에 대응되는 제어 코드를 생성하는 동적 명령어 해독 유닛을 구비하고, 상기 동적 명령어 해독 유닛에 저장된 데이터는 실시간 실행 중에 수정 가능한 것을 특징으로 한다.
명령어 집합, 명령 세트(Instruction Set), 동적 수정

Description

실시간 동적 수정이 가능한 명령어 집합을 가지는 컴퓨터{Computer Having Dynamically Changeable Instruction Set in Realtime}
본 명세서에 첨부되는 다음의 도면들은 본 발명의 바람직한 실시예를 예시하는 것이며, 후술하는 발명의 상세한 설명과 함께 본 발명의 기술사상을 더욱 이해시키는 역할을 하는 것이므로, 본 발명은 그러한 도면에 기재된 사항에만 한정되어 해석되어서는 아니된다.
도 1은 본 발명의 실시예에 따른 컴퓨터의 중앙처리장치 중 명령어 해독 유닛을 개략적으로 도시한 블록도이다.
도 2는 도 1에 도시된 명령어 해독 유닛 중 동적 명령어 해독 유닛을 상세히 도시한 블록도이다.
도 3은 도 2에 도시된 동적 명령어 해독 유닛의 각 CAM(Content Addressable Memory) 유닛의 블록도이다.
<도면의 주요 참조부호에 대한 설명>
100...명령어 해독 유닛 10...기본 명령어 해독 유닛
20...동적 명령어 해독 유닛 30...멀티플렉서
211, 212, ..., 21N...CAM 유닛 23...선택기
21i1...인자 레지스터 21i3...마스킹 레지스터
21i5...메모리 소자 21i7...비교기
21i9...코드 레지스터
본 발명은 컴퓨터의 명령어 집합(Instruction Set)에 관한 것으로, 상세하게는 최적의 메모리 용량으로 최상의 명령 수행능력을 발휘할 수 있는 명령어 집합을 가지는 컴퓨터의 명령어 집합 구조에 관한 것이다.
일반적으로 컴퓨터는, 중앙처리장치(CPU; Central Processing Unit)가 주메모리에 기계어로 번역되어 저장된 명령어들을 하나 또는 복수 개씩 불러와서 해독한 다음 그에 해당하는 제어 코드(control code)를 발생시켜 대응하는 연산장치(Arithmetic Logic Unit) 등의 하드와이어드 로직(hardwired logic)에 공급하여 동작시킴으로써 주어진 프로그램을 실행한다.
여기서, 하나의 명령어는 연산자(OP code)와 피연산자(operand)로 이루어지고, 피연산자의 개수에 따라 0-operand 명령어, 1-operand 명령어, 2,3-operand 명령어로 나뉜다. 0-operand 명령어를 사용하는 컴퓨터로는 자바 프로세서(Java processor)를 들 수 있고, 1-operand 명령어를 사용하는 컴퓨터로는 DSP(Digital Signal Processor)를 들 수 있으며, 대부분의 일반적인 컴퓨터는 2,3-operand 명령어를 사용한다.
한편, 대부분의 컴퓨터는 명령어 집합의 구성 방법에 따라 크게, 적은 수의 획일적인 명령어 집합을 가지는 RISC(Reduced Instruction Set Computer)와, 고급 프로그래밍 언어와 가능한 한 직접 대응되는 많은 수의 명령어 집합을 가지는 CISC(Complex Instruction Set Computer)로 나눌 수 있다. 이렇게 명령어 집합에 따라 여러 종류의 컴퓨터가 등장하게 된 것은, 특정한 일(프로그램)을 효율적으로 처리하기 위한 방법이 서로 다르기 때문이다. 즉, 컴퓨터가 특정한 일을 수행할 때 필요한 자원은 크게 메모리와, 중앙처리장치와, 수행하는 데에 필요한 시간의 세 가지인데, 각각의 특정한 일에 따라 최적의 자원 활용은 서로 다른 해법을 가질 수밖에 없다. 이러한 점에서 명령어 집합에 대한 여러 변이가 있어 왔고 그에 따라 여러 종류의 컴퓨터가 서로 다른 사양을 가지고 만들어져 왔다.
또 한편, 명령어를 해독(디코딩)하여 제어 코드를 생성하는 방법에는 크게 세 가지가 있다. 첫 번째는 마이크로 코드 방식으로 명령어들이 중앙처리장치 내의 ROM(Read Only Memory) 상에 미리 저장된 내용에 따라 일련의 제어 코드로 번역되는 방식이고, 두 번째는 ROM 대신에 PLA(Programmable Logic Array)를 사용하여 제어 코드로 번역하는 방식으로 병렬 제어 코드를 생성함으로써, 순차 수행을 기본으로 하는 마이크로 코드 방식에 비해 프로그램의 전체 수행시간을 줄일 수 있다. 그리고, 세 번째는 소프트웨어에 의해 명령어를 제어 코드로 번역하는 방식으로 아주 작은 마이크로 CPU를 두고 그 위에서 동작하는 번역 소프트웨어가 명령어를 실시간으로 번역하여 제어 코드를 생성해 낸다. 소프트웨어를 사용하는 것은 유연성을 높일 수 있지만, 하드웨어에 비해 번역 시간이 오래 걸린다.
그런데, 대부분의 컴퓨터는 각각의 명령어 집합에 적합한 일(프로그램)만을 수행하는 것이 아니라, 경우에 따라서는 자신이 가지고 있지 않은 명령어 집합에 적합한 일을 수행해야 할 때가 있다. 그래서, 명령어 집합을 두 개 가지고 명령어 스트림에 대해 필요한 명령어 집합의 해독기를 이용하여 제어 코드를 생성하는 다중 명령어 집합 프로세서나, 소프트웨어 또는 변환기를 이용하여 자신이 가지고 있지 않는 명령어 집합의 명령어를 자신이 가지고 있는 명령어 집합의 명령어로 변환한 다음 제어 코드를 생성하는 프로세서가 제시된 바 있다(특허 제315739호, 특허 제327777호, 공개특허공보 제2001-53241호, 특허 제270947호 등). 그러나, 이러한 방법은 실질적으로 명령어 해독기(ROM이나 PLA)를 두 개 가져야 하는 만큼 비효율적이며 고비용을 초래한다. 아울러, 소프트웨어를 사용하는 경우는 전술한 바와 같이 명령어 해독에 드는 시간을 배 이상으로 증가시킨다. 그리고, 이 방법들은 일부 필요한 명령어만을 그 의미를 변경(원래와 다른 제어 코드를 생성)하거나, 실행을 제한한다든지 하는 다양한 수정은 불가능하다.
한편, 확장 레지스터와 확장 플래그를 사용하여 피연산자(operand)의 길이를 필요한 만큼 증가시키는 확장 명령어 집합 컴퓨터(EISC; Extended Instruction Set Computer)가 제안된 바 있다. 그러나, 이 EISC는 동일한 연산자(OP code)에 대하여 단지 피연산자의 길이만을 변경하는 것으로 진정한 의미의 명령어 집합의 변경은 아니다.
따라서, 실시간 실행 중에, 저비용 고속으로, 일부 필요한 명령어에 대해 그 의미를 변경하거나, 명령어를 추가하는 등 명령어 집합의 수정 또는 변경이 가능한 구조의 컴퓨터가 여전히 요구된다 하겠다.
본 발명은 상기와 같은 요구에 부응하여, 실시간 실행 중에 명령어 집합을 동적으로 수정 가능한 명령어 집합을 가지는 컴퓨터를 제공하는 데에 그 목적이 있다.
상기와 같은 목적을 달성하기 위해 본 발명에서는, 명령어 해독 유닛이, 기본적인 명령어를 해독하는 기본 명령어 해독 유닛과, 실시간 실행 중에 동적으로 수정되는 명령어를 해독하는 동적 명령어 해독 유닛을 구비하여, 동적으로 수정되는 명령어에 대응되는 제어 코드를 생성한다.
즉, 본 발명에 따른 컴퓨터는, 메모리로부터 명령어를 페치(fetch)하는 명령어 페치 유닛, 이 명령어 페치 유닛에 의해 페치된 명령어에 대응되는 소정의 제어 코드를 생성하는 명령어 해독 유닛, 및 상기 제어 코드에 의해 동작하는 연산 유닛을 구비하는 중앙처리장치를 포함하는 컴퓨터로서, 상기 명령어 해독 유닛은, 기본 명령어 집합에 대한 제어 코드를 생성하는 기본 명령어 해독 유닛; 및 기본 명령어 집합의 명령어에 대응되는 상기 제어 코드와 다른 제어 코드를 생성하거나, 또는 기본 명령어 집합에 없는 명령어에 대응되는 제어 코드를 생성하는 동적 명령어 해독 유닛을 구비하고, 상기 동적 명령어 해독 유닛에 저장된 데이터는 실시간 실행 중에 수정 가능한 것을 특징으로 한다.
여기서, 상기 동적 명령어 해독 유닛은 CAM(Content Addressable Memory)으로 이루어지는 것이 실시간 실행 중에 수정이 가능함은 물론 고속 동작을 보장한다 는 점에서 바람직하다.
보다 구체적으로 상기 동적 명령어 해독 유닛을 이루는 CAM은, 수정된 명령어 집합이 저장된 메모리 소자 어레이와, 입력되는 명령어 코드를 상기 메모리 소자 어레이에 저장된 수정된 명령어 집합과 비교하는 비교기와, 상기 비교 결과 일치된 경우 출력할 제어 코드가 저장된 코드 레지스터를 구비한다.
또한, 상기 기본 명령어 해독 유닛 및 동적 명령어 해독 유닛에는, 명령어 페치 유닛으로부터 페치된 명령어 코드와 연산 유닛을 포함한 중앙처리장치 내의 각 블록의 상태정보가 동시에 입력되고, 상기 동적 명령어 해독 유닛을 이루는 CAM은, 입력되는 명령어 코드와 상태정보 중 특정 비트에 대하여 비교를 행하도록 마스킹하는 마스킹 레지스터를 더 구비하는 것이 바람직하다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다. 이에 앞서, 본 명세서 및 청구범위에 사용된 용어나 단어는 통상적이거나 사전적인 의미로 한정해서 해석되어서는 아니되며, 발명자는 그 자신의 발명을 가장 최선의 방법으로 설명하기 위해 용어의 개념을 적절하게 정의할 수 있다는 원칙에 입각하여 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야만 한다. 따라서, 본 명세서에 기재된 실시예와 도면에 도시된 구성은 본 발명의 가장 바람직한 일 실시예에 불과할 뿐이고 본 발명의 기술적 사상을 모두 대변하는 것은 아니므로, 본 출원시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형예들이 있을 수 있음을 이해하여야 한다.
도 1은 본 발명의 실시예에 따른 컴퓨터의 중앙처리장치 중 명령어 해독 유 닛을 개략적으로 도시한 블록도이다.
도 1을 참조하면, 본 발명의 바람직한 실시예에 따른 컴퓨터의 명령어 해독 유닛(100)은, 기본 명령어 해독 유닛(10)과, 동적 명령어 해독 유닛(20)과, 멀티플렉서(30)를 구비한다. 기본 명령어 해독 유닛(10)은 기본적인 명령어 집합에 포함된 명령어에 대하여 이를 해독하여 그에 대응하는 제어 코드를 출력하는 명령어 해독 유닛으로서, 통상 ROM이나 PLA로 이루어진다. 동적 명령어 해독 유닛(20)은 본 발명에 따라 동적으로 수정된 명령어 집합에 포함되는 명령어에 대하여 이를 해독하여 그에 대응되는 제어 코드를 출력하는 명령어 해독 유닛으로서, 본 실시예에서는 CAM으로 이루어진다. 또한, 멀티플렉서(30)는 각 명령어 해독 유닛(10, 20)의 명령어 해독 결과로서 출력되는 제어 코드를, 동적 명령어 해독 유닛(20)의 선택신호(SELECT)에 따라 선택하여 출력한다.
한편, 도 1을 참조하면 본 실시예의 명령어 해독 유닛은 두 개의 병렬적인 명령어 해독 유닛을 포함한다는 점에서, 종래의 두 개의 명령어 집합을 가지는 컴퓨터와 일견 유사해 보이지만, 본 실시예의 동적 명령어 해독 유닛(20)은 완결적이고 고정적인 하나의 명령어 집합의 해독 유닛이 아니라, 기본 명령어 집합에 대하여 보충적으로 추가 또는 수정되는 명령어에 대한 해독 유닛으로서, 본 실시예의 명령어 해독 유닛(100)을 가지는 프로세서는 종래의 다중 명령어 집합 프로세서와는 전혀 다르다. 또한, 본 실시예의 동적 명령어 해독 유닛(20)은 하나의 명령어 집합을 다른 명령어 집합으로 변환하는 변환기(하드웨어 또는 소프트웨어를 막론하고)와는, 기본 명령어 해독 유닛(10)과 병렬로 스스로 명령어를 해독하여 제어 코 드를 출력한다는 점에서 전혀 다르다. 또한 이 점에서 본 실시예의 동적 명령어 해독 유닛(20)은, 종래의 EISC의 확장된 피연산자(operand)를 일시 저장하는 확장 레지스터와 피연산자가 확장되었음을 나타내는 확장 플래그와도 다르다.
도 2는 도 1에 도시된 동적 명령어 해독 유닛(20)의 보다 상세한 블록도로서 이를 참조하면, 본 실시예의 동적 명령어 해독 유닛(20)은, N개의 병렬 CAM 유닛(211, 212, ..., 21N)과 선택기(23)를 포함하여 이루어진다. 각 CAM 유닛(21i)은 하나 또는 복수의 동적 명령어 코드에 대하여 그 명령어 집합과 그에 대응되는 제어 코드들을 저장하고 있으며, 입력되는 명령어에 대하여 일치여부를 나타내는 선택신호(SELECT 1, SELECT 2, ..., SELECT N)와 일치된 경우에 대응되는 제어 코드를 출력한다. 선택기는 복수의 CAM 유닛(21i)로부터 출력되는 선택신호에 따라 일치된 동적 명령어가 저장된 CAM 유닛으로부터 출력된 제어 코드를 선택하여 출력하는 일종의 멀티플렉서이다.
한편, 기본 명령어 해독 유닛(10)은 통상적으로 하나의 명령어 집합을 가지는 컴퓨터에서의 명령어 해독 유닛(10)과 그 구성이 동일하므로 그 상세한 설명은 생략한다.
도 3은 도 2에 도시된 각 CAM 유닛(21i)의 상세 블록도로서, 여기서 각 CAM 유닛(21i)은 하나의 명령어 코드와 그에 대응되는 제어 코드를 저장하고 있는 것을 예로 들어 설명한다. 도 3을 참조하면, 본 실시예의 동적 명령어 해독 유닛을 구성하는 CAM 유닛(21i)은 통상적인 CAM과 기본적으로 그 구성이 동일하며, 단지 CAM 유닛의 각 명령어에 대응되는 제어 코드를 저장하고 있는 코드 레지스터(21i9)를 추가로 더 구비하는 점에서 다르다.
구체적으로, 각 CAM 유닛(21i)은, 동적으로 수정된 명령어를 저장하고 있는 메모리 소자(21i5)와, 입력되는 명령어 코드 및 상태정보(상세히는 후술한다)를 일시 저장하는 인자 레지스터(Argument Register)(21i1)와, 입력되는 명령어 코드 및 상태정보 중 비교할 부분만을 추출해 내기 위한 마스킹 레지스터(Masking Register)(21i3)와, 메모리 소자(21i5)에 저장되어 있는 동적으로 수정된 명령어와 입력되는 명령어 및 상태정보 중 마스킹되지 않은 부분을 비교하여 일치여부를 판단하는 비교기(21i7)와, 메모리 소자(21i5)에 저장된 수정된 명령어에 대응되는 제어 코드를 저장하고 있는 코드 레지스터(21i9)를 포함하여 이루어진다. 한편, 메모리 소자(21i5)와 이른바 매칭 논리인 비교기(21i7)의 비트 단위의 구성은 일반적인 CAM의 구성과 동일하므로 그 상세한 설명을 생략한다.
그러면, 이와 같이 구성된 본 실시예의 명령어 해독 유닛(100)의 동작에 대해 도 1 내지 도 3을 참조하여 상세히 설명하면 다음과 같다.
먼저, 명령어 페치(fetch) 유닛(미도시)이 페치 싸이클에서 주메모리(미도시)로부터 하나 또는 복수의 명령어 코드를 읽어들여 명령어 해독 유닛(100)으로 입력한다. 명령어 코드는 연산자(OP code)와 0 또는 1개 이상의 피연산자(operand)로 이루어진다. 한편, 이때 연산 유닛(미도시)을 포함한 중앙처리장치의 각 블록들의 현재 상태를 나타내는 상태정보도 명령어 해독 유닛(100)에 함께 입력된다. 획득된 명령어 코드 및 상태정보는 기본 명령어 해독 유닛(10)과 동적 명령어 해독 유닛(20)에 병렬적으로 동시에 입력된다. 따라서, 종래의 변환기를 통한 별도의 변 환 과정이 불필요하다.
이어서, 명령 해독 싸이클에서 기본 명령어 해독 유닛(10)과 동적 명령어 해독 유닛(20)은 동시 병렬적으로 명령어 코드 및 상태정보를 해독하여 그에 대응되는 제어 코드를 출력한다. 구체적으로, ROM 또는 PLA로 이루어지는 기본 명령어 해독 유닛(10)은 통상의 명령어 해독 방법에 따라 명령어를 해독하여 제어 코드를 출력하므로 그 상세한 설명은 생략한다.
다만, 본 발명의 경우에는, 동적으로 수정된 명령어 코드가 입력되는 경우, 기본 명령어 해독 유닛(10)에는 그에 해당하는 명령어가 존재하지 않을 수도 있고 존재하더라도 원래의 제어 코드와는 다른 수정된 제어 코드가 명령어 해독 유닛(100)의 최종 출력이 되어야 한다. 따라서, 동적 명령어 해독 유닛(20)의 출력인 수정된 제어 코드가 우선되도록 한다. 즉, 동적 명령어 해독 유닛(20)이 입력된 명령어 코드 및 상태정보를 가지고 명령어 해독 결과 대응되는 명령어가 존재하는 경우, 그에 대응되는 수정된 제어 코드와 함께 활성화된 선택신호(SELECT)를 출력하고, 멀티플렉서(30)는 동적 명령어 해독 유닛(20)의 활성화된 선택신호(SELECT)에 따라 기본 명령어 해독 유닛(10)의 출력에 무관하게 동적 명령어 해독 유닛(20)이 출력한 제어 코드를 명령어 해독 유닛(100)의 출력으로서 출력하게 된다. 한편, 동적 명령어 해독 유닛(20)의 해독 결과 일치하는 명령어 코드 및 상태정보가 없는 경우 비활성화된 선택신호를 출력함과 함께 제어 코드를 출력하지 않게 되고, 기본 명령어 해독 유닛(10)이 출력한 제어 코드를 명령어 해독 유닛(100)의 출력으로서 출력하게 된다.
동적 명령어 해독 유닛(20)의 명령어 해독 과정을 좀더 상세히 설명하면 다음과 같다.
먼저, 동적 명령어 해독 유닛(20)의 각 CAM 유닛(21i)에 입력된 명령어 코드 및 상태정보는 인자 레지스터(21i1)에 일시 저장되고, 마스킹 레지스터(21i3)에 의해 비교될 부분이 추출된다. 즉 마스킹 레지스터(21i3)는 인자 레지스터(21i1)와 동일한 사이즈의 레지스터로, 명령어 코드 및 상태정보 중 비교에 사용되는 비트를 1로 세팅하고 비교에 사용되지 않을(don't care) 비트를 0으로 세팅함으로써 명령어 코드 및 상태정보 중 원하는 부분만을 추출할 수 있다. 이때, 비교에 사용되는 부분은, 명령어 자체가 기본 명령어 집합에 없는 추가된 명령어인 경우 연산자(OP code)가 되고, 명령어 자체는 동일하나 시스템 내부의 상태정보에 따라 구체적인 실행 내용을 바꿀 경우 예외상황(exception)이나 인터럽트 정보(interrupt) 등의 상태정보가 되며, 연산자와 일부 피연산자(operand)가 될 수도 있고, 상태정보의 일부가 될 수도 있다. 또한, 경우에 따라서는 명령어 코드 및 상태정보의 전부가 될 수도 있고, 이때에는 실질적으로 마스킹 레지스터(21i3)가 존재하지 않는 것과 동일한 결과가 된다.
한편, 메모리 소자(21i5)에는 기본 명령어 집합에 대하여 수정된 명령어 코드 및 상태정보가 미리 저장되어 있고, 비교기(매칭 논리)(21i7)에서 마스킹 레지스터(21i3)에 의해 마스킹된 입력 명령어 코드 및 상태정보와 비교된다. 이 비교 결과 일치되면 선택신호(SELECT)가 출력되고, 동시에 코드 레지스터((21i9)에 저장되어 있는 제어 코드가 출력된다.
이상의 과정을 거쳐 기본 명령어 집합에 대하여 수정된 명령어에 대응되는 제어 코드가 출력되고, 이 제어 코드에 따라 연산 유닛(미도시) 등 중앙처리장치 내의 각 블록이 동작함으로써 수정된 명령어가 실행되게 된다.
그러면, 실시간 실행 중에 동적으로 명령어를 수정하는 과정에 대해 설명한다. 전술한 바와 같이 수정된 명령어는 메모리 소자(21i5)에 저장되어 있고 그에 대응되는 제어 코드는 코드 레지스터(21i9)에 저장되어 있는데, 명령어 집합을 실시간 실행 중에 동적으로 수정할 수 있으려면 실시간 실행 중에 메모리 소자(21i5)와 코드 레지스터(21i9)에 억세스하여 그 내용을 갱신할 수 있어야 한다. 이를 위해, 기본 명령어 집합에 메모리 소자(21i5)와 코드 레지스터(21i9)에 원하는 데이터를 기입할 수 있는 특정 명령어를 포함시켜 두고, 기계어로 번역(컴파일)된 프로그램 코드의 중간중간에 이 특정 명령어를 이용하여 필요한 수정을 수행하면 된다. 여기서, 고급 언어로 짜여진 프로그램을 기계어로 번역하면서 상기 특정 명령어를 필요에 따라 중간중간에 실제로 삽입하는 것은 컴파일러 즉, 소프트웨어가 담당하는 부분으로서, 이는 본 발명의 범주를 벗어나므로 상세한 설명을 생략한다.
기본 명령어 집합을 수정하는 상기 특정 명령어는, 특정한 연산자(OP code)와 수정할 내용을 담고 있는 피연산자로 이루어질 수 있다. 그리고, 기본 명령어 해독 유닛(10)의 ROM 또는 PLA에는 이 특정 명령어에 대응되는 제어 코드가 저장되어 있고, 이 제어 코드는 메모리 소자(21i5)의 쓰기 신호(WRITE_MM)를 활성화시키고, 상기 특정 명령어의 피연산자의 내용을 메모리 소자(21i5)의 데이터 입력(INPUT_MM)에 입력함과 함께, 코드 레지스터(21i9)의 쓰기 신호(WRITE_CR)를 활성 화하고 코드 레지스터(21i9)에 원하는(수정된) 제어 코드를 입력(INPUT_CR)한다. 따라서, 기본 명령어로서의 상기 특정 명령어를 이용하여 실시간 실행 중에 동적으로 명령어 집합을 수정할 수 있다.
한편, 마스킹 레지스터(21i3)의 내용 즉, 입력되는 명령어 코드 및 상태정보 중 비교해야 할 부분을 추출하는 마스크도 상기 메모리 소자(21i5)나 코드 레지스터(21i9)와 마찬가지 방법으로 동적으로 수정할 수 있다. 즉, 마스킹 레지스터(21i3)의 쓰기 신호(WRITE_MR)를 활성화하고 원하는 마스크를 입력(INPUT_MR)함으로써, 마스킹 레지스터(21i3)의 내용을 실시간 실행 중에 동적으로 변경할 수 있다.
이상과 같이, 상술한 본 발명의 실시예에 따르면, 실시간 실행 중에 동적으로 명령어 집합을 수정함으로써 프로그램 코드의 사이즈와 수행 시간을 동시에 최적화할 수 있다. 그러나, 본 발명은 상술한 실시예에 한정되는 것이 아니라, 본 발명의 원리와 사상 내에서 다양한 변형이 가능하다.
예컨대, 전술한 실시예에서 멀티플렉서(30)와 선택기(23)는 단순한 OR 게이트로 대체할 수 있고, 마스킹 레지스터(21i3)을 생략함으로써 명령어 코드 및 상태정보 전체를 메모리 소자(21i5)에 저장된 내용과 비교하도록 할 수도 있다. 또한, 전술한 실시예에서 동적 명령어 해독 유닛(20)은 N개의 병렬 CAM 유닛(211, 212, ..., 21N)을 구비하는 것으로 도시되고 설명되었지만, 하나의 CAM 유닛으로만 구성할 수도 있다.
따라서, 본 발명의 권리범위는 아래에 기재될 특허청구범위의 균등범위 내에 서 다양한 수정 및 변형을 포함하는 것으로 해석되어야 할 것이다.
이상과 같이 본 발명에 따르면, 실시간 실행 중에 동적으로 명령어 집합을 수정함으로써 프로그램 코드의 사이즈와 수행 시간을 동시에 최적화할 수 있다. 즉, 실시간 실행 중에 기본 명령어 집합의 일부를 동적으로 수행함으로써 두 개의 명령어 집합을 가지거나 명령어 집합간 변환기를 가지는 프로세서에 비해 훨씬 저비용으로, 수행해야 하는 일(프로그램)의 성격에 따라 프로그램 코드의 사이즈와 수행시간을 동시에 최적화할 수 있고, 하나의 명령어 코드에 대해서는 그 전체를 동적으로 수정할 수 있으므로 단지 피연산자의 길이만을 확장하는 EISC에 비해 훨씬 다양하고 유연한 수정이 가능하다.
또한, 본 발명에 따르면, 현장에서 필요로 하는 기능을 즉시 추가할 수 있으므로 기능 향상뿐만 아니라 버그(bug) 수정에도 효과적으로 사용할 수 있다.

Claims (5)

  1. 메모리로부터 명령어를 페치(fetch)하는 명령어 페치 유닛, 이 명령어 페치 유닛에 의해 페치된 명령어에 대응되는 소정의 제어 코드를 생성하는 명령어 해독 유닛, 및 상기 제어 코드에 의해 동작하는 연산 유닛을 구비하는 중앙처리장치를 포함하는 컴퓨터에 있어서,
    상기 명령어 해독 유닛은,
    기본 명령어 집합에 대한 제어 코드를 생성하는 기본 명령어 해독 유닛; 및
    상기 기본 명령어 집합의 명령어에 대응되는 상기 제어 코드와 다른 제어 코드를 생성하거나, 또는 상기 기본 명령어 집합에 없는 명령어에 대응되는 제어 코드를 생성하는 동적 명령어 해독 유닛을 구비하고,
    상기 동적 명령어 해독 유닛에 저장된 명령어 또는 그에 대응되는 제어 코드는 실시간 실행 중에 수정 가능하도록 구성된 것을 특징으로 하는 컴퓨터.
  2. 제1항에 있어서,
    상기 동적 명령어 해독 유닛은 CAM(Content Addressable Memory)으로 이루어지는 것을 특징으로 하는 컴퓨터.
  3. 제2항에 있어서,
    상기 동적 명령어 해독 유닛을 이루는 CAM은, 수정된 명령어 집합이 저장된 메모리 소자 어레이와, 입력되는 명령어 코드를 상기 메모리 소자 어레이에 저장된 수정된 명령어 집합과 비교하는 비교기와, 상기 비교 결과 일치된 경우 출력할 제어 코드가 저장된 코드 레지스터를 구비하는 것을 특징으로 하는 컴퓨터.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 기본 명령어 해독 유닛 및 동적 명령어 해독 유닛에는 상기 명령어 페치 유닛으로부터 페치된 명령어 코드와 상기 연산 유닛을 포함한 중앙처리장치 내의 각 블록의 상태정보가 함께 입력되는 것을 특징으로 하는 컴퓨터.
  5. 제4항에 있어서,
    상기 동적 명령어 해독 유닛을 이루는 CAM은, 입력되는 상기 명령어 코드와 상태정보 중 특정 비트에 대하여 상기 비교를 행하도록 마스킹하는 마스킹 레지스터를 더 구비하는 것을 특징으로 하는 컴퓨터.
KR1020050080533A 2005-08-31 2005-08-31 실시간 동적 수정이 가능한 명령어 집합을 가지는 컴퓨터 KR100573334B1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020050080533A KR100573334B1 (ko) 2005-08-31 2005-08-31 실시간 동적 수정이 가능한 명령어 집합을 가지는 컴퓨터
CN200680031849.9A CN101253480B (zh) 2005-08-31 2006-08-25 具有实时动态可变指令集的计算机
PCT/KR2006/003364 WO2007027025A1 (en) 2005-08-31 2006-08-25 Computer having dynamically-changeable instruction set in real time
GB0802322A GB2442908B (en) 2005-08-31 2006-08-25 Computer having dynamically-changeable instruction set in real time
US11/884,506 US20080270759A1 (en) 2005-08-31 2006-08-25 Computer Having Dynamically-Changeable Instruction Set in Real Time
TW095132215A TWI335532B (en) 2005-08-31 2006-08-31 Computer having dynamically-changeable instruction set in real time

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050080533A KR100573334B1 (ko) 2005-08-31 2005-08-31 실시간 동적 수정이 가능한 명령어 집합을 가지는 컴퓨터

Publications (1)

Publication Number Publication Date
KR100573334B1 true KR100573334B1 (ko) 2006-04-24

Family

ID=37180795

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050080533A KR100573334B1 (ko) 2005-08-31 2005-08-31 실시간 동적 수정이 가능한 명령어 집합을 가지는 컴퓨터

Country Status (6)

Country Link
US (1) US20080270759A1 (ko)
KR (1) KR100573334B1 (ko)
CN (1) CN101253480B (ko)
GB (1) GB2442908B (ko)
TW (1) TWI335532B (ko)
WO (1) WO2007027025A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5922353B2 (ja) 2011-08-22 2016-05-24 サイプレス セミコンダクター コーポレーション プロセッサ
US9329870B2 (en) * 2013-02-13 2016-05-03 International Business Machines Corporation Extensible execution unit interface architecture with multiple decode logic and multiple execution units
CN105094747B (zh) * 2014-05-07 2018-12-04 阿里巴巴集团控股有限公司 基于smt的中央处理单元以及用于检测指令的数据相关性的装置
CN104991759B (zh) * 2015-07-28 2018-01-16 成都腾悦科技有限公司 一种可变指令集微处理器及其实现方法
CN111124499B (zh) * 2019-11-22 2022-11-01 中国科学院计算技术研究所 一种兼容多指令系统的处理器及其运行方法
CN112559039B (zh) * 2020-12-03 2022-11-25 类人思维(山东)智慧科技有限公司 一种计算机编程用指令集生成方法及系统

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4982360A (en) * 1983-09-22 1991-01-01 Digital Equipment Corporation Memory subsystem
US4897813A (en) * 1988-02-19 1990-01-30 Unisys Corporation Partially programmable read-only memory system
US5357627A (en) * 1989-03-28 1994-10-18 Olympus Optical Co., Ltd. Microcomputer having a program correction function
US6496922B1 (en) * 1994-10-31 2002-12-17 Sun Microsystems, Inc. Method and apparatus for multiplatform stateless instruction set architecture (ISA) using ISA tags on-the-fly instruction translation
WO1997027537A2 (en) * 1996-01-24 1997-07-31 Sun Microsystems, Inc. A processor for executing instruction sets received from a network or from a local memory
US6049672A (en) * 1996-03-08 2000-04-11 Texas Instruments Incorporated Microprocessor with circuits, systems, and methods for operating with patch micro-operation codes and patch microinstruction codes stored in multi-purpose memory structure
KR100357177B1 (ko) * 1998-01-13 2002-12-18 주식회사 하이닉스반도체 마이크로컴퓨터의명령해석장치
US6321380B1 (en) * 1999-06-29 2001-11-20 International Business Machines Corporation Method and apparatus for modifying instruction operations in a processor
US6904515B1 (en) * 1999-11-09 2005-06-07 Ati International Srl Multi-instruction set flag preservation apparatus and method
US6691308B1 (en) * 1999-12-30 2004-02-10 Stmicroelectronics, Inc. Method and apparatus for changing microcode to be executed in a processor
KR100484247B1 (ko) * 2000-12-28 2005-04-20 매그나칩 반도체 유한회사 재설정가능 인스트럭션 세트 마이크로 컨트롤러 유니트의인스트럭션 디코더 장치
US7103736B2 (en) * 2003-08-11 2006-09-05 Telairity Semiconductor, Inc. System for repair of ROM programming errors or defects

Also Published As

Publication number Publication date
TW200741536A (en) 2007-11-01
TWI335532B (en) 2011-01-01
CN101253480B (zh) 2011-11-23
WO2007027025A1 (en) 2007-03-08
GB0802322D0 (en) 2008-03-12
CN101253480A (zh) 2008-08-27
US20080270759A1 (en) 2008-10-30
GB2442908A (en) 2008-04-16
GB2442908B (en) 2010-10-20

Similar Documents

Publication Publication Date Title
US8200987B2 (en) Dynamic object-level code translation for improved performance of a computer processor
JP6507435B2 (ja) 命令エミュレーションプロセッサ、方法、およびシステム
JP6849274B2 (ja) 融合された単一のサイクルのインクリメント−比較−ジャンプを実施するための命令及びロジック
KR100300001B1 (ko) 명령어요소들의재조합에의한서로다른명령어코드들사이의동적변환
JP5984865B2 (ja) 命令エミュレーションプロセッサ、方法、およびシステム
JP2018500657A5 (ko)
KR100573334B1 (ko) 실시간 동적 수정이 가능한 명령어 집합을 가지는 컴퓨터
US5220656A (en) System for selecting control parameter for microinstruction execution unit using parameters and parameter selection signal decoded from instruction
GB2367654A (en) Translating instructions to store stack operands in registers
JP2005202936A (ja) Java(登録商標)仮想マシンの性能を向上させる方法及びその方法により動作されるシステム
GB2367651A (en) Hardware instruction translation within a processor pipeline
US4945511A (en) Improved pipelined processor with two stage decoder for exchanging register values for similar operand instructions
JPH03158928A (ja) データ処理装置
US20050138327A1 (en) VLIW digital signal processor for achieving improved binary translation
US20060149927A1 (en) Processor capable of multi-threaded execution of a plurality of instruction-sets
JP2003525476A (ja) プログラムの命令を実行するための装置及び方法
JP4228241B2 (ja) 演算処理装置
JP2009059246A (ja) マイクロプロセッサ
KR100374401B1 (ko) 마이크로 명령을 기초로 프로그램 가능한 명령을 실행하는하드웨어 장치
US7543135B2 (en) Processor and method for selectively processing instruction to be read using instruction code already in pipeline or already stored in prefetch buffer
US5774694A (en) Method and apparatus for emulating status flag
US5361338A (en) Pipelined system for decomposing instruction into two decoding parts and either concurrently generating two operands addresses of merging decomposing decoding codes based upon the second operand
JP2848727B2 (ja) 並列演算処理装置
WO2024029174A1 (ja) ジャンプ命令に基づくパイプライン処理を制御するプロセッサ及びプログラム記録媒体
US11816487B2 (en) Method of converting extended instructions based on an emulation flag and retirement of corresponding microinstructions, device and system using the same

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated 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: 20130314

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140324

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20170317

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee