KR20070039079A - 명령어 처리 회로 - Google Patents
명령어 처리 회로 Download PDFInfo
- Publication number
- KR20070039079A KR20070039079A KR1020077001817A KR20077001817A KR20070039079A KR 20070039079 A KR20070039079 A KR 20070039079A KR 1020077001817 A KR1020077001817 A KR 1020077001817A KR 20077001817 A KR20077001817 A KR 20077001817A KR 20070039079 A KR20070039079 A KR 20070039079A
- Authority
- KR
- South Korea
- Prior art keywords
- instruction
- circuit
- stage
- coupled
- input
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 25
- 238000012546 transfer Methods 0.000 claims abstract description 5
- 230000000694 effects Effects 0.000 claims abstract description 4
- 238000000034 method Methods 0.000 claims description 18
- 230000007704 transition Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000008014 freezing Effects 0.000 description 2
- 238000007710 freezing Methods 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
본 발명은 명령어 소스(10)와 결합된 명령어 입력단, 실행 회로(124)의 제어 입력단에 결합된 제어 출력단을 갖는 명령어 디코더(120, 121, 122)를 포함하는 명령어 처리 회로에 관한 것이다. 명령어 디코더(120, 121, 122)는 입력단이 명령어 입력단에 결합되고, 출력단이 각각 병렬 서브디코더(122)에 공급하는 정지 회로(121)의 제어 입력단과 결합된 복수의 프리디코딩 회로(121)을 포함한다. 프리디코딩 회로(120)는 공급된 명령어가 어떠한 유형에 속하는지 감지하고, 감지된 유형에 따라서 공급된 명령어로부터 얻어낸 명령어 정보를 서브디코딩 회로(122) 중 어느 것에 대해서는 전달되고, 이전에 공급된 명령어로부터 얻어낸 명령어 정보의 공급이 서브디코딩 회로(122) 중 어느 것에 대해서 정지될 것인지를 제어한다. 통상적으로 프리디코딩 회로(120)는 파이프라인 명령어 싸이클 내에서, 그 명령어 싸이클 동안의 프리디코딩 이후 및 디코딩 스테이지의 앞에 있는 파이프라인 레지스터(100)로부터의 신호의 효과가 서브디코딩 회로(122)에 전달되기 이전에, 정지 회로(121)를 정지상태와 전달상태로 전환시킨다.
Description
본 발명은 명령어 처리 회로, 그와 같은 명령어 처리 회로에서의 명령어의 디코딩 및 명령어를 처리하는 방법에 관한 것이다.
컴퓨터는 일반적으로 명령어 프로그램을 실행하도록 설계되어 있고 각 명령어는 컴퓨터에 의해 실행되어야 하는 하나 이상의 연산(예를 들어 덧셈, 또는 메모리로부터 로드하기) 및 그 연산이 적용되어야 할 오퍼랜드(들)를 지정한다. 명령어를 처리하기 위해서 컴퓨터는 연산을 오퍼랜드에 적용시키는 실행 회로를 포함한다. 실행 회로는 자신의 오퍼랜드를 처리하는 방식을 제어하기 위한 제어 입력을 갖는데, 예를 들어 실행 회로가 오퍼랜드를 가산할 것인지 또는 감산할 것인지, 또는 실행 회로가 비트-바이-비트 로직 연산(bit-by-bit logic operation)을 AND나 OR 로직에 적용할 것인지 또는 시프트 연산(shift operation)에 적용할 것인지, 실행 회로가 오퍼랜드를 메모리에 저장할 것인지와 같은 것들이다.
명령어 디코더는 명령어를 실행 회로를 위한 제어 신호로 변환하기 위해 사용된다. 통상적으로, 현대의 명령어 프로세서는 파이프라인 설계를 가지며, 이는 이전 명령어에 대응하는 오퍼랜드의 처리와 동시에 명령어 디코딩이 가능하도록 한다. 이러한 경우에 명령어 프로세서는 파이프라인 레지스터에 의해 결합된 많은 스테이지 및 각 파이프라인 레지스터가 이전 스테이지의 출력을 저장하고 그 출력을 후속 스테이지의 입력으로 인가하도록 만드는 타이밍 회로를 포함한다. 이러한 유형의 파이프라인 회로에서는, 디코더 스테이지가 명령어 디코더를 포함하고 실행 스테이지가 실행 회로를 포함한다.
전력 소모의 감소는 프로세서 설계에서 점점 더 중요한 관심사이다. 전력 소모의 감소를 위한 많은 기법들이 불필요한 오퍼랜드 데이터의 복사를 방지하는데 목표를 둔다. Hema Kapadia, Giovanni de Micheli, Luca Nenini의 논문 "Reducing Switching Activity on Datapath Buses with Control-Signal Gating"에는 많은 기법들이 기술되어 있다. 예를 들어, 클럭 게이팅(clock gating)은 인기있는 기법으로, 클럭 신호의 인가를 방지하여서, 데이터가 레지스터로 로드되는 것을 막는다. 이는 첫째로 데이터를 레지스터로 로드하는 전력이 필요하지 않으며, 둘째로 레지스터로부터 데이터를 받는 회로에서의 로직 전이(logic transition)(일반적으로 "토글링(toggling)"이라고 불림)를 피할 수 있기 때문에 전력을 아끼게 된다. 또 다른 기법은 선택적으로 턴 오프할 수 있는 데이터 처리 모듈의 입력부에 강화된 투과 래치(enabled transparent latch)를 위치시키는 보호 이벨류에이션(guarded evaluation)의 사용이다. 또 다른 기법은 제어 신호 게이팅(control signal gating)의 사용인데, 이는 불필요한 데이터 교환을 야기하는 제어 신호 전이(transition)를 억제하는 것으로, 예를 들어 만약 출력단에서의 신호가 필요하지 않다면 멀티플렉서가 출력단으로 전달되는 입력을 변경하는 것을 방지한다. 유사한 기법들은 "버스 구간화(bus-sectioning)"을 포함하는데, 이는 데이터 버스를 구간들로 나누고 데이터를 실제로 필요한 구간에만 전달하기 위한 데이터의 변경을 허용하도록 한다.
일반적으로 프로세서에 의해 실행되는 명령어는 어디서 오퍼랜드 데이터의 복사가 방지되는지를 클럭 게이팅, 보호 이벨류에이션, 제어 신호 게이팅, 버스 구간화 등의 수단으로 제어한다. 명령어로부터 어떠한 데이터 처리 회로가 오퍼랜드 데이터를 필요로 하지 않는지와 이러한 회로에서의 토글링이 금지되는지가 결정된다. 각각의 새로운 명령어에 대해, 이러한 목적을 위하여 새로운 데이터 처리 회로가 선택될 수 있다.
명령어 디코딩은 통상적으로 모든 명령어에 대해 필요하다. 전술한 어떠한 기법들도 명령어 디코딩과 관계된 전력 소모 문제를 다루지 않았다.
그 중에서도 특히, 명령어 디코딩에 의한 전력 소모를 감소시키는 것이 본 발명의 목적이다.
본 발명에 따른 명령어 프로세서는 청구항 제 1항에 기재되어 있다. 본 발명에 따르면 각 명령어의 유형에 대해서 명령어 디코더를 다수의 병렬 서브디코더(sub-decoder) 브랜치(branch)로 그룹화하고, 명령어의 유형에 따라서 프리디코더(predecoder)에 의해 서브디코더를 선택하여, 선택된 서브디코더들의 입력을 정지시켜서, 새로운 명령어 정보가 그러한 서브디코더에 전달되지 않도록 함으로써 전력을 절약한다. 통상적으로, 복수의 서브 디코더들은 실행 회로의 동일한 제어 입력단에 결합되며, 선택된 서브디코더들은 명령어의 유형에 따라서 실행 회로의 입력을 제어할 수 있도록 활성화된다.
파이프라인 프로세서가 사용된 실시예에서, 정지 회로(freezing circuit)는 파이프라인 명령어 싸이클 내에서, 그 명령어 싸이클 동안의 프리디코딩 이후에 디코딩 스테이지 앞의 파이프라인 레지스터로부터의 신호의 영향이 서브디코딩 회로에 다다르기 이전에, 정지(freezing) 상태와 전달(passing) 상태 사이를 전환한다. 이러한 방식에서는 정지를 위한 추가적인 파이프라인 스테이지가 필요하지 않다. 그러나, 이와 다른 실시예에서는 별개의 파이프라인 스테이지가 사용되고 정지 회로는 효과적으로 파이프라인 레지스터를 형성한다.
또 다른 실시예에서, 정지 회로는 멀티플렉서의 출력을 저장 및 정지시키는 피드백 레지스터(feedback register) 또는 입력단으로부터의 데이터를 통과시키는 멀티플렉서를 포함한다. 이러한 방식에서는 임계 경로(critical path)에 추가적인 레지스터를 설치하지 않고도 디코더에서 정지가 구현된다.
일 실시예에서, 제 1 서브디코더로 서브디코딩된 제 1 유형의 명령어는 절대 어드레스를 갖는 메모리 액세스 명령어를 포함하고, 제 2 서브디코더로 서브디코딩된 제 2 유형의 명령어는 인덱스된 어드레스를 갖는 메모리 액세스 명령어를 포함한다. 이러한 유형들의 명령어의 디코딩의 일부가 동일한 처리를 수반해도, 어드레스 계산은 서로 다른 서브디코더에서 수행되어서 전력 소모는 이러한 디코더들 중에서 하나만을 선택적으로 활성화시킴으로써 감소된다.
또 다른 실시예에서는, 실행 회로가 산술 연산부와 논리 연산부를 가지는 ALU 회로, 제 1 및 제 2 오퍼랜드 정지 회로(46)를 포함하며, 이들은 오퍼랜드 소스 사이에 (산술 연산부와 논리 연산부에 제각각) 연결되어 있고, 산술 명령어 또는 논리 명령어 중 어느 것이 실행되었는지에 따라서 선택적으로 오퍼랜드를 정지 또는 전달하도록 동작할 수 있다. 산술 회로와 논리 회로는 상당 부분이 공통되지 않으므로, 이는 산술 및 논리 회로에서 불필요한 오퍼랜드 의존 신호 전이(operand dependent signal transition)를 피할 수 있기 때문에 전력 소모가 감소한다.
본 발명의 이러한 목적 및 다른 목적들과 이점들은 제한적이지 않은 예제들에 의하여, 첨부된 도면들을 사용하여, 자세히 서술된다.
도 1은 명령어 처리 회로를 도시한다.
도 1a는 파이프라인 스테이지의 구조를 도시한다.
도 2는 정지 회로를 도시한다.
도 3은 또 다른 명령어 처리 회로를 도시한다.
도 4는 명령어 실행 회로를 도시한다.
도 1은 명령어 소스(10), 타이밍 회로(11), 디코더 스테이지(12), 실행 스테이지(14), 기록 스테이지(16) 및 레지스터 파일(18)을 포함하는 명령어 처리 회로를 도시한다. 명령어 소스(10)는 디코더 스테이지(12)에 결합된 명령어 출력단을 갖는다. 디코더 스테이지(12)는 레지스터 파일(18)에 결합된 오퍼랜드 선택 출력단 및 실행 스테이지(14)에 결합된 디코딩된 출력단을 갖는다. 레지스터 파일(18)은 실행 스테이지(14)에 결합된 오퍼랜드 출력단을 갖는다. 실행 스테이지(14)는 기록 스테이지(16)에 결합된 결과 출력단을 갖는다. 기록 스테이지(16)는 레지스터 파일(18)의 기록 포트에 결합된 출력단을 갖는다. 타이밍 회로(11)는 명령어 소스(10), 디코더 스테이지(12), 실행 스테이지(14) 및 기록 스테이지(16)에 결합된 타이밍 제어 출력단을 갖는다.
명령어 소스(10)는 통상적으로 명령어를 명령어 메모리에 어드레싱하기 위해 명령어 메모리(도시되지 않음)와 프로그램 카운터(도시되지 않음)를 갖는다. 이러한 경우, 명령어는 명령어 메모리로부터 디코더 스테이지(12)로 공급된다.
디코더 스테이지(12)는 복수의 병렬 디코더 브랜치와 결합된 프리디코더(120)를 포함하며, 각 브랜치는 정지 회로(121)와 추가 디코더(122)를 포함한다. 추가 디코더(122)의 출력단은 실행 스테이지(14)의 입력단에 멀티플렉싱 회로(124)를 통해서 결합된다. 그러한 멀티플렉싱 회로는 출력이 선택된 입력단으로부터의 신호를 복사하는 논리 회로로서, 또는, 비활성화된 추가 디코더(122)의 출력단에서의 로직 레벨을 예측할 수 있다면 추가 디코더(122)로부터 입력을 받는 AND 또는 OR 회로로서 구현될 수 있고, 나아가 3상(tri-state) 출력이 추가 디코더(122)에 대해서 사용된다면 추가 디코더(122)의 출력을 실행 스테이지(14)의 공통 입력에 직접 접속함으로써 구현될 수 있다..
연산 명령어 소스(10)는 명령어를 생성하고 그 명령어를 연속적으로 디코더 스테이지(12)에 인가한다. 디코더 스테이지(12)는 오퍼랜드 레지스터 어드레스를 명령어로부터 추출한 후 레지스터 파일(18)에 인가한다. 디코더 스테이지(12)는 또한 명령어를 디코딩하여 디코딩된 정보를 실행 스테이지(14)에 인가한다. 실행 스테이지(14)는 레지스터 파일(18)로부터 수신한 오퍼랜드를 사용하여 명령어에 의해 선택된 연산을 실행하고, 기록 스테이지(16)에 인가될 결과를 생성한다. 기록 스테이지(16)는 명령어에 의해 지정된 레지스터의 레지스터 파일(18)에 결과를 다시 기록한다. 회로는 파이프라인 방식으로 동작하고, 각각 연속적인 명령어에 적용되어, 각 스테이지는 제각각 자신의 기능을 병렬로 수행한다. 이러한 목적을 위해, 타이밍 회로(11)가 명령어 소스(10), 디코더 스테이지(12), 실행 스테이지(14) 그리고 기록 스테이지(16)에 실질적으로 동시에 클럭을 인가하여 각 실행 싸이클의 마지막에 새로운 정보를 각 스테이지의 입력단에 있는 레지스터(도시되지 않음)로 로드하게 한다.
도 1a는 예를 들어 실행 스테이지에 사용될 수 있고, 파이프라인 레지스터(100), 기능 회로(102) 그리고 오퍼랜드 레지스터(104)를 구비하는 파이프라인 스테이지의 구조의 일 예를 도시한다. 파이프라인 레지스터(100)는 명령어로부터 유도된 제어 데이터를 수신하고 이 데이터를 기능 회로(102)에 전달한다. 제어 데 이터의 일부(예컨대, 결과 레지스터의 어드레스)는 직접 다음 파이프라인 스테이지로 전달될 수도 있다. 오퍼랜드 레지스터(104)는 오퍼랜드 데이터를 수신하고 이 데이터를 기능 회로(102)에 전달한다. 기능 회로(102)는 결과 데이터를 생성하고 선택에 따라 후속 스테이지를 위한 제어 데이터를 생성한다. 파이프라인 레지스터(100)와 오퍼랜드 레지스터(104)는 그 스테이지의 클럭 신호 CLK에 따라 클럭되고, CLK는 데이터를 로딩할 시기를 선택한다. 각 파이프라인 스테이지에는 이와 유사한 구조가 사용될 수 있으나, 스테이지의 유형에 따라 오퍼랜드 레지스터(104)는 생략될 수 있으며 어떤 유형의 스테이지는 제어 데이터를 생성하지만 다른 스테이지는 그렇지 않다는 것이 인식되어야 한다.
추가 디코더(122)들은 명령어 디코딩의 일부를 수행하는 서브디코더로 기능하며, 각 추가 디코더는 디코딩에 그러한 부분이 필요한 유형의 명령어에 대하여만 동작한다.
디코더 스테이지(12)의 일부만이 명령어를 디코딩하기 위해 활성화된다. 프리디코더(120)는 각 명령어로부터, 브랜치(121),(122)들 중 어떠한 것이 명령어의 추가적인 (서브)디코딩을 수행하는 데 사용될 것인지를 결정한다. 프리디코더(120)는 명령어로부터 브랜치(121),(122)로 (선택에 따라 명령어로부터 프리디코딩된) 정보를 제공한다. 그러나, 추가 디코더(122)의 입력단에서 이전 명령어로부터 정보를 대체하기 전에, 프리디코더(120)는 어떠한 브랜치가 명령어를 디코딩하는 데 사용되어야 하는지 결정한다. 후속적으로, 프리디코더(120)는 다른 브랜치의 정지 회로(121)에 신호를 보내서 다른 브랜치에 제공된 정보가 변하지 않게, 이전에 제공 된 정보와 동일하도록 유지하게 한다. 선택된 브랜치의 정지 회로(121)만이 이전 명령어에 대해서 변화를 전달할 수 있도록 허용된다. 프리디코더(120)의 별개의 출력단이 정지 회로(121)에 접속되는 것으로 도시되어 있지만, 서로 다른 추가 디코더(122)가 동일한 제어 데이터를 필요로 할 경우, 실제로는 일부 또는 모든 정지 회로(121)가 추가 디코더(122)에 대한 제어 데이터를 위한 입력단을 공유할 수도 있음을 인식하여야 한다.
도 2는 정지 회로(121)의 일 실시예를 도시한다. 이 예에서, 정지 회로(121)는 멀티플렉서(20)와 레지스터(22)를 포함한다. 멀티플렉서(20)는 프리디코더(120)(도시되지 않음)의 선택 출력단에 결합된 선택 입력단(24), 프리디코더(120)의 명령어 정보 출력단에 결합된 제 1 데이터 입력단, 레지스터(22)의 출력단에 결합된 제 2 데이터 입력단을 갖는다. 멀티플렉서(20)는 정지 회로(121)가 속하는 브랜치의 추가 디코더(122)(도시되지 않음) 및 레지스터(22)의 입력단에 결합된 출력단을 갖는다.
연산 시에, 멀티플렉서(20)는 프리디코더(120)가 정보가 정지되어서는 안 된다고 신호를 보낼 때에는 명령어 정보를 프리디코더(120)(도시되지 않음)로부터 추가 디코더(122)(도시되지 않음)로 전달하고, 프리디코더(120)가 정보가 정지되어야 한다고 신호를 보낼 때에는 멀티플렉서(20)가 명령어 정보를 레지스터(22)로부터 추가 디코더(122)(도시되지 않음)로 전달한다. 레지스터(22)는 일반적으로 타이밍 회로(11)로부터 클럭 신호를 수신함으로써, 타이밍 회로(11)가 스테이지(12),(14),(16)에 출력을 제공하는 실행 싸이클의 마지막에 새로운 정보를 로드 하기 위해, 레지스터(22)의 입력으로부터 정보를 로드한다. 이러한 방식으로 데이터를 전송하는 스테이지에 있는 레지스터(22)의 내용만이 변하게 된다.
그러나, 또 다른 실시예에서는 서로 다른 로딩 시점들이 사용될 수 있으며(예를 들어 어떠한 추가 디코더(122)가 사용될 것인지 결정하기 위해 필요한 시간에 해당하는 지연 시간만큼 디코더 스테이지의 입력 클럭 신호를 지연시킴으로써 얻어짐), 또는 레지스터(22)로 새로운 데이터를 로딩하는 것은 데이터가 정지되어있는 정지 회로로 모두 억제될 수도 있음을 인식하여야 한다. 유사하게, 도 2의 회로가 사용되는 대신에, 예컨대 후속 추가 디코더(122)가 사용되지 않을 때에는 대기 상태로 유지되다가, 후속 추가 디코더가 사용될 때에는 투과(transparent) 상태로 전환되는 투과/대기 래치가 사용될 수 있다. 그러나 이러한 해결책은 일반적으로 도 2의 회로에 비해 조금 느리며 그리하여 더 긴 명령어 싸이클 시간을 필요로 한다.
프리디코더(120)는 초기에 실행 싸이클 내에서는 정보를 정지시키는 신호가 정지 회로(121)로 공급되도록 구성된다. 프리디코더(120)가 브랜치(121),(122) 중에서 어떠한 브랜치가 명령어 정보를 통과시킬 것인지 결정하면, 프리디코더(120)는 해당 브랜치의 정지 회로(121)의 제어 신호를 변경하여서 새로운 정보가 통과될 수 있게 허용한다. 일반적으로, 이는 실행 싸이클의 시작 후에 약간의 지연을 두고 실행 싸이클의 종료 전의 시점에 발생한다. 이러한 방식으로 다른 브랜치에서의 전력 발산이 감소하게 된다.
멀티플렉싱 회로(124)는 디코딩된 명령어 정보를 선택된 브랜치로부터 실행 회로(14)로 다음 실행 싸이클 내의 실행에서의 사용을 위하여 전달한다.
비록 예에서는 디코딩이 하나의 파이프라인 스테이지에서 발생하는 것으로 도시하였지만, 본 발명의 범주를 벗어나지 않으면서 여러 스테이지의 디코더가 사용될 수 있으며, 그리하여 연속적인 명령어 디코딩 단계가 연속적인 디코딩 스테이지에서 연속적인 실행 싸이클로 발생할 수 있음이 이해되어야 한다. 이러한 경우에, 정지 회로(121)는 디코딩 스테이지의 내부에 있을 수 있다. 즉, 실행 싸이클의 시작 이후에 지연 시간을 두고, 동일 디코딩 스테이지의 선행 부분이 어떠한 브랜치가 사용될지를 결정할 수 있게 된 후에 정지상태에서 전달상태로 전환할 수 있다.
또 다른 방안으로, 디코딩 스테이지의 입력단 또는 출력단에 정지 회로가 사용될 수도 있으며, 그리하여 정지나 전달이 실질적으로 명령어 싸이클의 시작시에 선행 스테이지의 제어 아래에서 발생할 수 있다. 이러한 경우에 정지 회로(121)는 효과적으로 파이프라인 레지스터를 추가 디코더(122)의 앞에 형성할 수 있다. 도 2의 정지 회로 대신에 통상의 레지스터가 사용될 수 있고 정지 레지스터는 다른 파이프라인 레지스터와 함께 클럭될 수 있다. 통상의 파이프라인 레지스터와의 차이점은 프리디코딩의 결과에 따라 정지 회로의 부분의 업데이트가 불가능하다는 점과, 그들의 후속 추가 디코더(122)가 동일한 제어 데이터를 필요로 하면 하나 또는 그 이상의 정지 회로가 입력을 공유하여, 활성화될 필요가 없는 추가 디코더(122)에 대해서 선택적으로 그 제어 데이터를 정지시키는 반면에 활성화된 추가 디코더(122)에는 동일한 제어 데이터를 전달한다는 점이다. 그러나 이는 브랜치 선택의 유연성을 줄어들게 한다.
본 발명의 적용예에서는, 명령어가 메모리 액세스 명령어를 포함하며, 이는 메모리 회로에 액세스함으로써 실행 스테이지(14)에서 실행된다. 메모리 액세스 명령어는 일반적으로 LOAD와 STORE 명령어를 포함하며, 데이터가 로드되어야 하는 또는 데이터가 저장되어야 하는 메모리 회로 내의 어드레스를 특정한다. 서로 다른 액세스 명령어는 어드레스를 다른 방법으로 지정할 수 있다. 예를 들어 명령어에 포함된 리터럴(literal) 어드레스로서(절대 어드레싱(absolute addressing)이라 불림), 또는 어드레스를 포함하는 레지스터를 참조함으로써(색인 어드레싱(indexed addressing)이라 불림), 또는 어드레스를 얻기 위하여 레지스터의 내용에 더해져야 하는 리터럴 어드레스와 레지스터의 참조값의 조합으로 지정할 수 있다.
도 3은 메모리 액세스 명령어를 지원하는 명령어 실행 회로를 도시한다. 도 1과 비교하여 메모리 회로(30)가 추가되었고, 이는 실행 스테이지(14)와 결합되어 있다. 레지스터 파일(18)의 출력단은 추가 디코더(12)들 중 하나에 결합되어 있고 별개의 파이프라인 스테이지(32)가 명령어 소스(10)와 디코딩 스테이지(12) 사이에 프리디코딩 부분을 수행하기 위해 삽입되어 있다.
연산 시에, 메모리 액세스 명령어가 공급되면, 회로는 메모리 액세스 명령어가 절대 어드레싱을 사용하는지 상대 어드레싱을 사용하는지를 판단하고, 어드레싱의 유형에 따라서 추가 디코더(122) 중 어느 하나가 사용되고, 다른 추가 디코더(122)로의 디코딩된 명령어 정보 입력들은 전력 소모를 줄이기 위해 정지된다. 색인 어드레싱이 사용된 경우에, 해당하는 추가 디코더(122)가 레지스터 파일(18) 로부터 데이터를 수신하고, 그 데이터로부터 어드레스를 얻어내고, 그 어드레스를 실행 스테이지(14)로 공급한다. 절대 어드레싱이 사용된 경우에는, 해당 추가 디코더(122)가 명령어로부터 어드레스 정보를 수신하고, 그 어드레스 정보로부터 어드레스를 얻어내고, 그 어드레스를 실행 스테이지(14)로 공급한다.
도 4는 실행 스테이지, 또는 적어도 실행 스테이지의 산술/논리 연산 부분을 도시한다. 실행 스테이지는 산술 연산 유닛(40)과 논리 연산 유닛(42)을 포함한다. 산술 연산 유닛(40)과 논리 연산 유닛(42)은 오퍼랜드 입력단(45)의 쌍에 결합되어 있고, 각각 오퍼랜드 정지 회로(46)의 쌍을 경유한다. 산술 연산 유닛(40)의 출력단과 논리 연산 유닛(42)의 출력단은 멀티플렉싱 회로(48)를 통해서 실행 스테이지의 결과 출력단과 결합되어 있다. 디코딩된 명령어 입력(43)은 오퍼랜드 정지 회로(46)의 제어 입력단, 산술 연산 유닛(40), 논리 연산 유닛(42), 멀티플렉싱 회로(48) 및 실행 스테이지의 결과 레지스터 어드레스 출력단에 결합되어 있다.
산술 연산 유닛(40)은 적어도 덧셈, 바람직하게는 뺄셈 및/또는 통상적으로 서로 다른 유의 수준(significance level)간의 올림 또는 내림의 결과로 각 입력 오퍼랜드로부터의 하나 이상의 비트에 의존하는 하나 또는 그 이상의 비트인 복합 비트(multi-bits) 결과를 생산하는 다른 산술 연산을 실행하도록 구성되어 있다. 논리 연산 유닛(42)은 비트 별(bit-wise) AND, 또는 비트 별 OR와 같이 각 결과 비트가 각 입력 오퍼랜드에서 전달된 하나의 입력 비트에만 의존하는 결과를 생성하는 논리 연산을 수행한다.
연산 시에, 오퍼랜드 정지 회로(46)는 산술 연산 또는 논리 연산 중 어떠한 것이 실행되는지에 따라서 산술 연산 유닛(40) 또는 논리 연산 유닛(42)의 오퍼랜드 입력을 정지시키기 위해 제어 신호를 수신한다. 이는 전력 소모를 줄여준다. 산술 연산 유닛(40) 또는 논리 연산 유닛(42)은 실행되어야 하는 명령어(예컨데, 덧셈 또는 뺄셈, 비트 별 AND 또는 비트 별 OR)를 선택하는 제어 선택 신호를 수신한다. 바람직하게는, 명령어 싸이클에서는 사용되지 않는, 산술 연산 유닛(40) 또는 논리 연산 유닛(42)으로 공급되는 명령어 신호는 또한 전력 소모를 줄이기 위해서 명령어 싸이클에서 정지된다. 이해할 수 있겠지만, 정지와 전달의 선택은 간단한 타이밍 설계를 제공하기 위해서 실행 스테이지의 실행 싸이클의 시작시에 발생하도록 구성되어 있을 수 있다. 또 다른 실시예에서는, 산술 연산 유닛(40)과 논리 연산 유닛(42) 중 선택된 유닛으로의 오퍼랜드 및/또는 명령어 공급의 해지(unfreezing)가 명령어 싸이클의 시작에 대해서 지연을 갖고 발생하여, 실행 스테이지에서 사전 처리가 가능하게 한다.
본 발명이 특정 실시예를 사용하여 설명되었지만, 본 발명은 이러한 실시예들에 제한되지 않는다. 예를 들어, 본 발명이 파이프라인 프로세서에 대해서 기술하고 있지만, 정지는 파이프라인으로 동작하지 않는 프로세서, 또는 교환 통신(handshake communication)을 사용하는 비동기 프로세서와 같이 중앙집중적으로 클럭되지 않는 프로세서에도 적용될 수 있다. 마찬가지로, 비록 산술 연산 유닛과 논리 연상 유닛의 앞에 있는 별개의 오퍼랜드 정지는 명령어 정보의 정지와 함께 사용되는 것이 바람직하나, 전자는 후자 없이도 사용될 수 있음을 인식해야 한다.
추가적으로, 비록 본 실시예는 멀티플렉싱 회로(124)가 사용되어서, 서로 다 른 추가 디코더(122)로부터 디코딩된 정보는 동일한 실행 스테이지(14)의 입력으로 공급되지만, 이와 달리 서로 다른 추가 디코더(122)는 결과를 실행스테이지의 서로 다른 부분으로 공급할 수 있음이 인식되어야 한다. 서로 다른 추가 디코더(122)로부터 동일한 실행 스테이지(14)의 입력단으로 디코딩된 정보를 공급하는 것은 실행 스테이지(14)에서 동일한 하드웨어를 사용해야 하는 (서로 다른 추가 디코더(122)를 사용하여서 부분적으로 디코딩된) 서로 다른 종류의 명령어의 경우에 전력을 절약할 수 있는 이점이 있다. 절대 어드레싱 및 색인 어드레싱 명령어의 경우는 그러한 명령어의 한 예일 뿐이다. 다른 예들은 서로 다른 종류의 복합 산술 명령어(예컨대, 복소수 산술 명령어)를 포함한다. 추가 디코더의 일부 또는 전부로부터의 정보는 실행 스테이지(14)의 동일한 입력으로 공급될 수 있다.
Claims (10)
- 명령어 처리 회로에 있어서,연속적인 명령어를 생산하는 명령어 소스(10),상기 명령어에 의해 선택된 오퍼랜드를 수신하는 오퍼랜드 입력단 및 상기 오퍼랜드에 적용되는 연산의 실행을 제어하는 제어 입력단을 구비하는 실행 회로(124),상기 명령어 소스(10)와 결합된 명령어 입력단 및 상기 실행 회로(124)의 상기 제어 입력단과 결합된 제어 출력단을 구비하는 명령어 디코더(120,121,122)를 포함하되,상기 명령어 디코더(120,121,122)는상기 명령어 각각의 제어하에서 상기 제어 출력단에 연속적인 제어 신호를 발생시키도록 구성되며,상기 명령어 디코더(120,121,122)는상기 명령어 입력단과 상기 제어 출력단 사이에 병렬로 결합되어 각 명령어 유형에 따라서 각각 제어 신호를 발생시키는 복수의 서브디코딩 회로(122),각각이 상기 서브디코딩 회로(122) 각각 및 상기 명령어 입력단 사이에 결합되고, 제어 입력단을 구비하며, 자신의 제어 입력단의 제어하에서 상기 서브디코딩 회로(122) 중 자신과 대응하는 각 회로에 대해 명령어 신호를 정지 또는 전달하도록 구성되어 있는 입력 정지 회로(121),입력단은 상기 명령어 입력단과 결합되어 있고 출력단은 상기 정지 회로(121)의 상기 제어 입력단에 결합되어 있으며, 공급된 명령어가 어떠한 유형의 명령어에 속하는지 감지하고, 감지된 유형에 따라, 상기 공급된 명령어로부터 얻어낸 명령어 정보가 상기 서브디코딩 회로(122) 중 어느 것에 대해서는 전달되고, 이전에 공급된 명령어로부터 얻어낸 명령어 정보의 공급이 상기 서브디코딩 회로(122) 중 어느 것에 대해서는 정지될 것인지를 제어하도록 구성된 프리디코딩 회로(120)를 포함하는명령어 처리 회로
- 제 1 항에 있어서,파이프라인 스테이지,연속적인 파이프라인 스테이지 쌍과 자신에 결합되어 연속적인 명령어 싸이클을 제어하는 타이밍회로(11) 사이에 결합된 파이프라인 레지스터(100),프리디코딩 회로(120)의 일부, 상기 입력 정지 회로(121) 및 상기 서브디코딩 회로(122)의 일부를 포함하는 디코딩 스테이지(120,121,122)를 포함하되,연속적인 파이프라인 스테이지는 연속적인 명령어의 처리의 각 부분을 병렬로 수행하고, 상기 파이프라인 스테이지는 실행 회로를 포함하는 실행 스테이지(124)를 구비하며,상기 입력 정지 회로(121)는 하나의 명령어 싸이클 내에서, 상기 명령어 싸 이클 동안의 프리디코딩 이후 상기 디코딩 스테이지 앞의 상기 파이프라인 레지스터(100)로부터의 신호의 영향이 상기 서브디코딩 회로(122)에 도달하기 전에, 정지상태와 전달상태 사이를 전환하도록 구성되어 있는명령어 처리 회로.
- 제 1 항에 있어서,상기 정지 회로(121) 중 하나 이상은입력단과 출력단을 갖는 정지 레지스터(22),상기 명령어 소스(10)에 결합된 제 1 입력단(26), 상기 정지 레지스터(22)의 출력단에 결합된 제 2 입력단, 상기 정지 레지스터(22)의 입력단 및 상기 정지 회로(121)에 결합된 상기 서브디코더 회로(122)에 결합된 출력단, 상기 프리디코딩 회로(120)에 결합된 제어 입력단(24)을 구비하는 멀티플렉서(20)를 포함하는명령어 처리 회로.
- 제 1 항에 있어서,파이프라인 스테이지,연속적인 파이프라인 스테이지 쌍과 자신에 결합되어 연속적인 명령어 싸이클을 제어하는 타이밍회로(11) 사이에 결합된 파이프라인 레지스터(100)를 포함하 되,연속적인 파이프라인 스테이지는 연속적인 명령어의 처리의 각 부분을 병렬로 수행하고,상기 파이프라인 스테이지는 상기 프리디코딩 회로(120)의 일부를 포함하는 제 1 스테이지(120,121,122), 상기 서브디코딩 회로(122)의 일부를 포함하는 제 2 스테이지를 구비하며,상기 제 1 및 제 2 스테이지 사이의 상기 파이프라인 레지스터는 상기 서브디코더(122) 각각에 결합된 각각의 서브레지스터(121)를 포함하며, 각각의 서브 레지스터(121)는 명령어 싸이클의 마지막에 선택적으로 업데이트가 가능하게 하는 업데이트 가능 입력단(update enable input)을 구비하며, 상기 프리디코딩 회로(120)는 상기 업데이트 가능 입력단과 결합되어 정지와 전달을 제어할 수 있는명령어 처리 회로.
- 제 1 항에 있어서,상기 실행 회로(124)의 상기 제어 입력단들이, 감지된 명령어의 유형에 따라서 상기 서브디코더(122) 중 하나씩에 의해 선택적으로 구동되는 제어 입력단을 포함하는명령어 처리 회로.
- 제 5 항에 있어서,제 1 서브디코더에 의해 서브디코딩된 명령어의 제 1 유형은 메모리(30) 절대 어드레스를 갖는 메모리(30) 액세스 명령어를 포함하고,제 2 서브디코더에 의해 서브디코딩된 명령어의 제 2 유형은 색인 어드레스 를 갖는 메모리(30) 액세스 명령어를 포함하고,상기 실행 회로(124)의 상기 제어 입력단은 상기 제 1 서브디코더와 상기 제 2 서브디코더 모두에 결합된 어드레스 입력단을 포함하는명령어 처리 회로.
- 제 1 항에 있어서,상기 실행 회로(124)와 결합된 오퍼랜드 소스(18)를 포함하되,상기 실행 회로(124)는 상기 명령어에 따라서, 선택된 복합 비트(multi-bit) 산술 및 논리 연산을 제각각 실행하도록 구성된 산술 연산부(40) 및 논리 연산부(42)를 포함하는 ALU 회로(40, 42)를 포함하고,상기 명령어 처리 회로는 상기 오퍼랜드 소스(18)와 상기 산술 연산 유닛 및 논리 연산 유닛 사이에 각각 결합되어 산술 연산 명령어가 실행되는지 아니면 논리 연산 명령어가 실행되는지에 따라서 선택적으로 오퍼랜드를 정지 또는 전달하도록 동작가능한 제 1 및 제 2 오퍼랜드 정지 회로(46)를 포함하는명령어 처리 회로.
- 명령어 프로그램을 처리하는 방법에 있어서,일련의 명령어를 인출하는 단계와,상기 명령어를 디코딩하되, 상기 각 명령어의 제 1 디코딩 부분은 상기 일련의 명령어 모두에 대해 공통 프리디코더(120)에 의해 수행하고, 제 2 디코딩 부분은 명령어의 유형에 따라 상기 프리디코더(120)에 의해 선택된 다수의 병렬 추가 디코더(122) 중 하나에 의해 수행하는 단계와,상기 추가 디코더(122) 중에서 사용되지 않는 하나 이상의 디코더에 공급된 이전 명령어 정보는 정지시키고, 상기 명령어 정보는 다른 추가 디코더에 의해 디코딩되기 위해 전달하는 단계와,디코딩된 명령어 정보를 상기 명령어의 실행을 위해 상기 추가 디코더(122)로부터 실행 장치로 공급하는 단계를 포함하는명령어 프로그램 처리 방법.
- 제 8 항에 있어서,상기 명령어는 연속적인 명령어 싸이클에서 파이프라인 형식으로 처리되며,상기 전달 단계는 명령어 싸이클 안에서 명령어를 프리디코딩한 후 그 명령 어 싸이클 내에 개시되는명령어 프로그램 처리 방법.
- 제 8 항에 있어서,상기 추가 디코더(122) 중 서로 다른 디코더에 의해서 추가적으로 디코딩되는 결과가 동일한 명령어 실행 회로(124)에서 사용되는명령어 프로그램 처리 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP04102964.6 | 2004-06-25 | ||
EP04102964 | 2004-06-25 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20070039079A true KR20070039079A (ko) | 2007-04-11 |
Family
ID=34970688
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020077001817A KR20070039079A (ko) | 2004-06-25 | 2005-06-20 | 명령어 처리 회로 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7627741B2 (ko) |
EP (1) | EP1761844A2 (ko) |
JP (1) | JP2008503827A (ko) |
KR (1) | KR20070039079A (ko) |
CN (1) | CN100498691C (ko) |
WO (1) | WO2006000979A2 (ko) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5277533B2 (ja) * | 2006-11-15 | 2013-08-28 | ヤマハ株式会社 | デジタル信号処理装置 |
CN101770357B (zh) * | 2008-12-31 | 2014-10-22 | 世意法(北京)半导体研发有限责任公司 | 减少处理器中的指令冲突 |
US9710277B2 (en) | 2010-09-24 | 2017-07-18 | Intel Corporation | Processor power management based on class and content of instructions |
US20120079249A1 (en) * | 2010-09-28 | 2012-03-29 | Wei-Han Lien | Training Decode Unit for Previously-Detected Instruction Type |
US9218048B2 (en) * | 2012-02-02 | 2015-12-22 | Jeffrey R. Eastlack | Individually activating or deactivating functional units in a processor system based on decoded instruction to achieve power saving |
CN102769750A (zh) * | 2012-07-12 | 2012-11-07 | 国家计算机网络与信息安全管理中心 | 基于众核平台的解码方法和解码设备 |
JP6094356B2 (ja) * | 2013-04-22 | 2017-03-15 | 富士通株式会社 | 演算処理装置 |
CN105426161B (zh) * | 2015-11-12 | 2017-11-07 | 天津大学 | 一种power指令集向量协处理器的译码电路 |
US10205469B2 (en) | 2016-08-11 | 2019-02-12 | SK Hynix Inc. | Low latency soft decoder architecture for generalized product codes |
CN111385580A (zh) * | 2018-12-27 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 数据解压装置及相关产品 |
CN110045989B (zh) * | 2019-03-14 | 2023-11-14 | 合肥雷芯智能科技有限公司 | 一种动态切换式低功耗处理器 |
CN112379928B (zh) * | 2020-11-11 | 2023-04-07 | 海光信息技术股份有限公司 | 指令调度方法以及包括指令调度单元的处理器 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
BE625673A (ko) * | 1961-12-04 | |||
US5187796A (en) * | 1988-03-29 | 1993-02-16 | Computer Motion, Inc. | Three-dimensional vector co-processor having I, J, and K register files and I, J, and K execution units |
JPH0820949B2 (ja) * | 1991-11-26 | 1996-03-04 | 松下電器産業株式会社 | 情報処理装置 |
US5542059A (en) * | 1994-01-11 | 1996-07-30 | Exponential Technology, Inc. | Dual instruction set processor having a pipeline with a pipestage functional unit that is relocatable in time and sequence order |
US5860000A (en) * | 1996-01-31 | 1999-01-12 | Hitachi Micro Systems, Inc. | Floating point unit pipeline synchronized with processor pipeline |
GB2323188B (en) * | 1997-03-14 | 2002-02-06 | Nokia Mobile Phones Ltd | Enabling and disabling clocking signals to elements |
-
2005
- 2005-06-20 US US11/630,654 patent/US7627741B2/en not_active Expired - Fee Related
- 2005-06-20 WO PCT/IB2005/052016 patent/WO2006000979A2/en active Application Filing
- 2005-06-20 CN CNB2005800209213A patent/CN100498691C/zh not_active Expired - Fee Related
- 2005-06-20 EP EP05750972A patent/EP1761844A2/en not_active Ceased
- 2005-06-20 JP JP2007517613A patent/JP2008503827A/ja not_active Withdrawn
- 2005-06-20 KR KR1020077001817A patent/KR20070039079A/ko not_active Application Discontinuation
Also Published As
Publication number | Publication date |
---|---|
US20070250686A1 (en) | 2007-10-25 |
EP1761844A2 (en) | 2007-03-14 |
CN100498691C (zh) | 2009-06-10 |
US7627741B2 (en) | 2009-12-01 |
CN1997962A (zh) | 2007-07-11 |
JP2008503827A (ja) | 2008-02-07 |
WO2006000979A3 (en) | 2006-12-07 |
WO2006000979A2 (en) | 2006-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20070039079A (ko) | 명령어 처리 회로 | |
US7861062B2 (en) | Data processing device with instruction controlled clock speed | |
US6430674B1 (en) | Processor executing plural instruction sets (ISA's) with ability to have plural ISA's in different pipeline stages at same time | |
KR20100032441A (ko) | 조건부 명령을 비조건부 명령 및 선택 명령으로 확장하기 위한 방법 및 시스템 | |
KR100423910B1 (ko) | 코프로세서 명령 실행 장치 및 방법 | |
US20040181654A1 (en) | Low power branch prediction target buffer | |
US20070288724A1 (en) | Microprocessor | |
US7644223B2 (en) | Circuit and method for patching for program ROM | |
US6891765B2 (en) | Circuit and/or method for implementing a patch mechanism for embedded program ROM | |
US7730284B2 (en) | Pipelined instruction processor with data bypassing and disabling circuit | |
US20060095746A1 (en) | Branch predictor, processor and branch prediction method | |
KR20080028410A (ko) | 파이프라인 마이크로프로세서에서의 전력 절감을 위한시스템 및 방법 | |
US20070260857A1 (en) | Electronic Circuit | |
US7020787B2 (en) | Microprocessor | |
US4685058A (en) | Two-stage pipelined execution unit and control stores | |
US7360023B2 (en) | Method and system for reducing power consumption in a cache memory | |
US20070180220A1 (en) | Processor system | |
US7003649B2 (en) | Control forwarding in a pipeline digital processor | |
US6044460A (en) | System and method for PC-relative address generation in a microprocessor with a pipeline architecture | |
US20070294519A1 (en) | Localized Control Caching Resulting In Power Efficient Control Logic | |
EP1625492A1 (en) | Methods and apparatus for instruction alignment | |
US6427205B1 (en) | Digital signal processor and processor reducing the number of instructions upon processing condition execution instructions | |
US20230315446A1 (en) | Arithmetic processing apparatus and method for arithmetic processing | |
US8078845B2 (en) | Device and method for processing instructions based on masked register group size information | |
JPH1091434A (ja) | クイック・デコード命令を用いるための方法およびデータ処理システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant | ||
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |