KR940000027B1 - 생산라인의 고성능 명령어 실행방법 및 장치 - Google Patents
생산라인의 고성능 명령어 실행방법 및 장치 Download PDFInfo
- Publication number
- KR940000027B1 KR940000027B1 KR1019890018859A KR890018859A KR940000027B1 KR 940000027 B1 KR940000027 B1 KR 940000027B1 KR 1019890018859 A KR1019890018859 A KR 1019890018859A KR 890018859 A KR890018859 A KR 890018859A KR 940000027 B1 KR940000027 B1 KR 940000027B1
- Authority
- KR
- South Korea
- Prior art keywords
- instruction
- instructions
- type
- signal
- execution
- Prior art date
Links
- 238000004519 manufacturing process Methods 0.000 title claims description 27
- 238000000034 method Methods 0.000 title claims description 10
- 238000012545 processing Methods 0.000 claims description 39
- 239000000872 buffer Substances 0.000 claims description 23
- 238000003860 storage Methods 0.000 claims description 8
- 230000006870 function Effects 0.000 claims description 5
- 238000002360 preparation method Methods 0.000 claims description 3
- 230000004044 response Effects 0.000 claims 12
- 108010076504 Protein Sorting Signals Proteins 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 10
- 238000006073 displacement reaction Methods 0.000 description 6
- 230000002093 peripheral effect Effects 0.000 description 6
- 238000012360 testing method Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 5
- 101000587455 Homo sapiens Single-stranded DNA-binding protein, mitochondrial Proteins 0.000 description 3
- 102100029719 Single-stranded DNA-binding protein, mitochondrial Human genes 0.000 description 3
- 101100149023 Bacillus subtilis (strain 168) secA gene Proteins 0.000 description 1
- 102100037733 Fatty acid-binding protein, brain Human genes 0.000 description 1
- 101710098548 Fatty acid-binding protein, brain Proteins 0.000 description 1
- 239000004606 Fillers/Extenders Substances 0.000 description 1
- 101000822152 Petunia hybrida 1-aminocyclopropane-1-carboxylate oxidase 1 Proteins 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3873—Variable length pipelines, e.g. elastic pipeline
-
- 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/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- General Factory Administration (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Image Processing (AREA)
- Programmable Controllers (AREA)
Abstract
내용 없음.
Description
제1도는 본 발명의 장치를 포함하는 전체시스템의 블록도.
제2도는 제1도의 전체시스템을 보다 상세히 나타낸 블록도.
제3-1 내지 3-3도는 생산 파이프라인 사이클의 주요소자들에 관한 블록도.
제4도는 본 발명을 설면하는 명령어의 I 캐시에서의 위치를 나타낸 도면.
제5도는 생산 파이프라인 사이클중에 처리되는 일련의 명령어들을 나타낸 도면.
제6a도는 실행장치에서 명령어를 실행하는데 사용되는 오퍼랜드의 메모리 어드레스를 발생하는 어드레스장치에서 논리 소자들을 제어하는 펌웨어의 흐름을 나타내는 블록도.
제6b도는 실행장치에서 명령어의 실행을 완료하는 논리소자들을 제어하는 펌웨어의 흐름을 나타내는 블록도.
제7도는 소프트웨어 가시 레지스터 명령어를 실행하도록 논리를 제어하는 펌웨어의 블록도.
* 도면의 주요부분에 대한 부호의 설명
2 : 중앙처리장치(CPU) 4 : 가상메모리 관리장치(VMMU)
6 : 캐시장치 8 : 메모리장치
10 : 입력/출력 주변장치 2-204,2-206 : 레지스터
2-400 : 명령어 레지스터 2-412 : 산술논리장치(ALU)
2-416 : 프로그램 카운터 2-402,2-610 : 레지스터파일
2-600 : 명령어 선입선출(I FIFO)레지스터
2-624 : 카운터
본 발명은 데이타 처리 시스템에 관한 것으로, 특히, 파이프 라인식으로 명령어를 처리하는 시스템에 관한 것이다.
데이타 처리시스템이 명령어 및 오퍼랜드를 기억하는 메모리장치와 그 명령어를 처리하는 처리장치를 구비한다는 것은 잘알려져 있다. 처리장치는 메모리장치로부터 명령어를 인출하고 오퍼랜드 어드레스를 발생하며 메모리장치로부터 오퍼랜드(들)을 인출한다. 그다음, 처리장치는 명령어를 처리하고 결과 오퍼랜드를 메모리장치의 지정된 위치에 다시 기억시킨다. 그다음 처리장치는 다음 명령어를 인출한다.
직렬연산, 특히 메모리의 액세스에 대한 필요성은 가끔 시스템 처리능력에 있어서의 제한이 되어왔다. 따라서, 성능을 개선하기 위하여 시스템에 캐시가 부가된다. 초창기의 캐시는 명령어와 오퍼랜드를 기억하였으나 나중에는 명령어 캐시 및 데이타 캐시를 구비하도록 설계되었다.
거의 같은 시기에, 데이타 처리는 파이프라인 연산으로 수행되도록 설계되었다. 한편, 지금까지는 명령어가 직렬로 실행되었다. 다시말하면, 다음 명령어는 이전의 명령어의 실행이 완료된 후에만 인출되었다. 그러나 새로운 설계에 있어서는 명령어의 실행은 파이프라인으로 처리된다. 파이프라인 연산에 있어서, 시스템은 몇개의 스테이지로 편성되는데, 즉, 명령이 인출되어 분석되는 명령어 스테이지, 오퍼랜드 어드레스가 개발되는 어드레스 스테이지, 오퍼랜드가 인출되는 메모리 또는 캐시스테이지 및 명령어가 완료되는 실행스테이지로 편성된다. 명령어은 파이프라인에 직렬로 위치된다. 명령어 스테이지에서 명령어 연산이 완료되자마자 명령어는 어드레스 스테이지로 진행하고 실행되어질 다음의 명령어 인출된다. 그러므로 전술한 4개의 스테이지 시스템에서 4개의 명령어의 다른 부분들이 동시에 실행될 수 있다.
그러나, 각 명령어의 실행은 각 명령어가 파이프라인의 각 스테이지를 통과할것을 요구하기 때문에, 상기 한 종류의 파이프라인 연산의 처리능력은 제한된다. 성능을 개선하기 위하여, 어떤 시스템들은 파이프라인의 어떤 가능한 스테이지에 의해 실행되는 연산을 오버랩한다.
그러한 파이프라인 장치의 일예로는 "충돌검출 및 예보를 사용하는 데이타 처리장치 및 방법"이라는 명칭의 미합중국 특허 제 4,760,519호에 개시된 시스템이 있다. 이 시스템은 두개의 독립파이프라인, 세개의 스테이지 명령의 파이프라인 및 세개의 스테이지 처리파이프라인을 구비한다. 명령어 파이프라인의 마지막 스테이지는 실행 파이프라인의 첫번째 스테이지와 오버랩되도록 연결된다. 이러한 형태의 시스템에 있어서는 아직도 명령어를 완성하기위하여 최소한 5사이클의 시간을 필요로 한다.
따라서, 본 발명의 제1목적은 고성능의 파이프라인 시스템을 제공하는 것이다.
본 발명의 또하나의 목적은 최소수의 파이프라인 스테이지를 사용하여 명령어의 실행을 가능한한 넓은 범위까지 완료하는 시스템을 제공하는 것이다.
상기한 및 다른 목적들은 생산라인 시스템으로서 편성되고 생산 파이프라인에 내려오는 각 명령어에 대하여 각각 다른 연산을 수행하는 복수의 장치들을 포함하는, 처리장치에 관한 본 발명의 제기된 실시예에 의해 달성되어진다. 특정형태의 명령어들은 이전의 장치에 의해 실행되고 생산라인으로부터 탈퇴된다. 이것은 이전의 장치들을 후속 명령어를 실행하도록 해방시킨다. 다른 형태의 명령어들은 생산라인의 끝에서 실행된다. 이것은 시스템의 전체 처리능력을 개선한다.
특히, 첫번째 장치의 첫번째 사이클중에 명령어 장치는 메모리로부터 명령어를 인출하고 두번째 사이클중에 명령어 장치는 명령어를 해독하고 특정 브랜치 명령어들을 실행한다. 어드레스(A)장치에 대응하는 두번째 장치는 명령어 장치로 부터 명령어를 수신하고, 세번째 사이클중에서 후속사이클중 "메모리" 명령어의 실행을 완료하기 위해 필요한 메모리에 오퍼랜드의 위치를 지정하는 어드레스를 발생하거나 "레지스터" 명령어를 실행한다. 오퍼랜드는 "메모리" 명령어에 대하여 네번째 사이클중에 메모리로부터 인출되며, 다섯번째 사이클중 생산으로부터 제거되는 생산라인 장치의 시리즈의 다른 장치에 의해 실행된다. 두번째 사이클의 연산중에 실행되어온 브랜치 명령어와 세번째 사이클의 연산중에 실행되어온 레지스터 명령어는 생산라인으로부터 유효하게 탈퇴 또는 제거되고, 따라서 생산라인에서 더이상의 사이클을 요구하지 않으며, 이로써 시스템 처리능력이 개선된다.
이하 본 발명의 일실시예를 첨부도면을 참조하여 설명한다.
제1도는 생산 파이프라인 데이타 처리시스템(1)을 블록도로 나타낸 것이다. 데이타 처리시스템(1)은 중앙처리장치(CPU)(2), 가상 메모리 관리장치(VMMU)(4), 캐시장치(6), 메모리 서브시스템(8) 및 입력/출력 주변장치(10)를 포함한다. 캐시장치(6), 메모리 장치(8) 및 입력/출력 주변장치(10)는 모두 시스템 버스(12)에 공통으로 연결된다. 메모리장치(8)는 명령어 및 오퍼랜드를 기억한다. 즉시 시행될 가장 높은 가능성을 가진 이들 오퍼랜드 및 명령어들은 메모리 서브시스템(8)으로부터 캐시장치(6)로 전송된다.
CPU(2)는 캐시장치(6)로부터 명령어를 수신하고 이들 명령어를 실행하여 명령어의 가상 어드레스를 VMMU(4)에 보낸다. VMMU(4)는 가상 어드레스를 물리어드레스로 변환하고 물리어드레스는 CPU(2)가 명령어를 실행하도록 필요한 오퍼랜드를 인출하기 위하여 캐시장치(6)에 인가된다. 입력/출력장치(10)는 대표적으로 자신들의 장치들을 구비한 어떤수의 주변제어기 또는 주변제어기 및 장치들을 제어하는 입력/출력 프로세서를 나타내며, 또는 장치(10)는 통신 서브시스템을 나타낼 수 있다.
제2도는 CPU(2)와 캐시장치(6)로 이루어진 주요 요소를 형성하는 블록도를 나타낸다. CPU(2)는 명령어장치(I)(2-2), A장치(2-4) 및 복수의 실행(E)장치 (2-6)를 포함한다. 실행장치(2-6)는 과학명령어 프로세서 또는 상업명령어 프로세서 일 수 있다. 그러나, 설명을 간단히 하기 위하여, 실행장치(2-6)들중 하나의 동작만을 설명하겠으며, 본 발명을 이해하는 데에는 이것으로 충분할 것이다.
캐시장치(6)는 I-캐시(6-2)와 E-캐시(6-4)를 포함한다. I-캐시(6-2)는 실행되어질 명령어를 기억하고 E-캐시(6-4)는 명령어가 동작되는 오퍼랜드를 기억한다. 명령어장치(2-2)는 본질적으로 두가지 기능을 수행한다. 이것은 I-캐시(6-2)로부터 명령어를 선 인출하고 그다음 다른장치, 즉 A장치(2-4)와 실행장치(2-6)가 어떻게 명령어를 추가로 처리하는지를 결정하기 위하여 명령어들을 해독한다. 또한 명령어장치(2-2)는 나중에 생산라인으로부터 제거되는 특정 브랜치 명령어들을 실행한다.
A장치(2-4)는 명령어장치(2-2)로부터 명령어를 수신하고 이것이 만일 레지스터 대 레지스터 명령어이면 그 명령어를 수신한다. 명령어가 실행장치(2-6)에 의해 실행되어야할경우에 A장치(2-4)는 가상어드레스를 VMMU(4)에 보내고 VMMU(4)는 가상어드레스를 E-캐시(6-4)를 위한 몰리어드레스로 변환한다. E-캐시(6-4)는 I-캐시(6-2)로부터 명령어 유니트(2-2)가 최초에 수신한 명령어의 실행을 완료하기 위하여 오퍼랜드를 실행장치(2-6)에 보낸다.
A장치(2-4)는 또한 브랜치 명령어의 실행을 확인하며 명령어장치(2-2)가 지정한 I-캐시(6-2)의 위치에서의 다음 명령어가 브랜치 어드레스를 선 인출하도록 이미 요구되어 있는 명령어장치(2-2)에 브랜치 어드레스를 반송한다. A장치(2-4)와 실행장치(2-6)는 프로그래머에게 액세스 될 수 있는 레지스터, 즉, 소위 소프트웨어 가시레지스터의 내용을 기억하는 레지스터 파일을 구비한다. I-캐시(6-2)아 E-캐시(6-4)는 모두 시스템 버스(12)에 연결되며, 이들의 내용은 메모리(8)로부터 수신된 명령어 및 오퍼랜드로 갱신된다.
명령어들은 CPU(2)의 소자들에 의해 생산 파이프라인식으로 실행된다. 즉, 명령어장치(2-2)는 I-캐시(6-2)로부터 명령어를 수신하여 해독하고 그 명령어를 A장치(2-4)에 보낸다. A장치(2-4)는 명령어를 실행하거나 E-캐시(6-4)의 어드레스 순으로 변환하기 위하여 가상 어드레스를 VMMU(4)에 보낸다. E-캐시(6-4)는 지정된 오퍼랜드를 실행장치(2-6)에 보낸다.
A장치(2-4)가 명령어장치(2-2)로부터 수신된 첫번째 명령어 부분을 실행하는 동안, 명령어장치(2-2)는 I-캐시(6-2)로부터 두번째 명령어 및 후속 명령어들을 인출한다. A장치(2-4)가 첫번째 명령어에 의해 지정된 가상어드레스를 VMMU(4)에 보내고 그 경우의 명령어장치(2-2)를 통지할 때에 명령어장치(2-2)는 두번째 명령어를 A장치(2-4)에 보낸다. VMMU(4)는 E-캐시(6-4)를 어드레스 지정하고 A장치(2-4)는 두번째 명령어를 파이프라인내에서 처리한다. 실행장치(2-6)가 첫번째 명령어를 실행할때에 VMMU(4)는 두번재 명령어의 오퍼랜드를 인출하기 위하여 E-캐시를 어드레스 지정할 수 있고, 한편 장치(2-4)는 세번째 명령어의 가상어드레스를 발생한다. 한편, 명령어장치(2-2)는 네번째 명령어를 해독하고 후속명령어중 하나를 인출한다. 그러므로, 이 대표적인 예에 있어서, 다섯개의 명령어가 생산라인으로 진행할 수 있다.
그러나, 명령어장치(2-2)가 다소의 브랜치 명령어들을 실행할 수 있고 A장치(2-4)가 다소의 소프트웨어 가시 레지스터 명령어들을 실행할 수 있기 때문에 이들 장치들은 명령어의 실행이 완료되자마자 생산라인으로부터 제거된다. 유사하게, A장치(2-4)가 브랜치 명령어를 처리하고 브랜치 조건이 만족되면 A장치(2-4)는 명령어장치(2-2)의 브랜치 어드레스를 즉시 확인하고 그 브랜치 명령어는 생산라인으로부터 제거되어진다. 이러한 동작모드 및 방법은 종래예에 비하여 처리능력을 증가시킨다.
제3도는 명령어장치(2-2), A장치(2-4) 및 실행장치(2-6)의 소자들 및 이들 각각의 상호접속관계를 보다 구체적으로 도시한 것이다. 명령어장치(2-2)의 P카운터(2-200)는 A장치(2-4)에 의하여 가상어드레스로 로드된다. 이 가상어드레스는 파이프라인에 위체되어질 다음 명령어의 위치의 I-캐시(6-2)에 있는 어드레스이다. I-FETCH 사이클중에 가상 어드레스는 가산기(2-202)와 레지스터(VA0)(2-204) 또는 레지스터(VA1)(2-206)을 거쳐 I-캐시(6-2)에 전송된다. 레지스터(VA0)(2-204) 또는 레지스터(VA1)(2-206)는 브랜치 명령어가 인출될때까지 사용된다. 그때, 레지스터(VA0)(2-204)가 액티브이면, 브랜치 명령어에 의해 호출된 어드레스는 레지스터(VA1)(2-206)에 기억된다.
브랜치 어드레스 P카운터(2-200) 및 프로그램 카운터(2-416)레지스터에 개별적으로 유지되는 이유는, 브랜치 어드레스가 조건부 브랜치이면 그 조건은 부합되거나 부합되지 않기 때문이다. 그 조건이 부합되지 않으면 브랜치는 일어나지 않는다. 이것은 시스템에게 브랜치에 의해 호출된 어드레스를 사용하거나 사용하지 않을 선택을 제공한다. 펌웨어 제어하에서 P카운터(2-200)는 1워드 명령어에 대하여 1증가하거나 이중(double) 워드 명령어에 대하여 2증가되거나 A장치(2-4)로부터의 브랜치 어드레스로 교체된다.
명령어는 I-캐시(6-2)로부터 판독되어 스트링 버퍼(A)(2-220) 또는 스트링 버퍼(B)(2-221)로 전송된다. 여기에서 다시, 스트링 버퍼의 1세트는 브랜치 명령어가 있을때까지 I-캐시(6-2)로부터 연속적으로 명령어들을 수신한다. 그다음, 브랜치 명령어에 후속되는 명령어는 다른 스트링 버퍼에 기억된다. 예를들어, 스트링 버퍼(A)(2-220)가 사용되고 있으면 브랜치 명령어에 후속되는 명령어는 스트링 버퍼(B)(2-221)에 기억된다. 처리능력은 브랜치 조건이 부합되고 명령어장치(2-4)가 스트링 버퍼(B)(2-221)로부터 브랜치 스트링을 인출하는 경우에 양세트의 명령어를 기억함으로서 개선된다.
그다음, 명령어는 현재의 명령어 종류를 결정하는 명령어 해독논리(2-210)로 보내어진다. 즉, 이것이 레지스터 명령어를 위한 소프트웨어 가시레지스터이면, 그것이 실행장치(2-6)에 의해 실행되는 메모리 명령어인 경우에 명령어는 A장치(2-4)에 의해 실행된다.
명령어는 해독논리(2-210)로부터 A장치 제어기억부(2-430)를 어드레스 지정하는 A장치 펌웨어 어드레스 발생기(2-208)로 보내어진ㄴ다. 어드레스 지정된 위치의 내용은 A장치(2-4)의 RDR(A)레지스터(2-406)에 기억된다. 스트링 버퍼(2-220 또는 2-221)로부터의 명령어 신호(I-INSF 0-31)는 A장치(2-4)의 명령어(RINSTER)레지스터 (2-400)로 전송된다. 명령어가 실행장치(2-6)에 의해 실행되어야 한다면, 명령어는 또한 실행장치(2-6)의 명령어 선입 선출 레지스터(FIFO)에 기억된다. 명령어는 또한 명령어장치(2-4)로부터의 신호(I-BIGIN)의 제어하에 A장치(2-4)의 OP-CODE 레지스터(2-402)에 기억된다. RINSTER레지스터(2-400) 및 OP CODE 레지스터(2-402)는 모두 각각 32비트의 더블워드를 기억한다. 명령어가 2 또는 3개의 더블워드를 요구하면, 그 명령어에 대한 OP CODE는 OP CODE 레지스터(2-402)에 잔존하며, 그 명령어의 더블워드 각각은 명령어 레지스터(2-400)에 차례로 기억된다.
OP CODE 레지스터(2-402)의 출력은 OP CODE 레지스터(2-402) 및 레지스터(RDR(A))(2-406)에 각각 기억된 OP CODE 및 펌웨어 비트의 제어하에 레지스터 파일(2-404)을 어드레스 지정하기 위하여 우선적으로 사용된다. 레지스터 파일(2-404)은 소프트웨어 가시 레지스터를 포함한다. 실행되는 명령어가 메모리 명령어이면, 가상어드레스가 발생되어 산술논리장치(ALU)(2-412)를 거쳐 VMMU(4)에 보내어진다. A장치(2-4)에 의해 실행되는 명령어에 따라서 ALU(2-412)로의 입력은 RINSTER레지스터(2-400), OP CODE 레지스터(2-402), 레지스터 파일(2-404) 또는 프로그램 카운터(2-416)에 의해 A측으로 인가된다. ALU(2-412)의 B측 입력은 가산기(2-408)를 거쳐 동작을 인덱싱하거나 오프셋하는 인덱스 이동기 (2-410)에 의하여, 또는 레지스터 파일(2-404)로부터 제공된다. 만일 이것이 레지스터 명령, 예를들어, 레지스터 파일(2-404)의 소프트웨어의 가시레지스터의 내용의 시프트 연산이면, 레지스터 파일(2-404)의 출력은 이동기(2-414)에 인가될 수 있고 명령어에 의해 지정된 비트의 수가 이동되며 판독되어졌던 레지스터와 동일 레지스터의 레지스터 파일(2-404)에 재기억된다.
인디케이터 레지스터(2-414)는 브랜치 명령어를 포함한 특정 명령어에 대한 프로그램 상태 인디케이터를 포함한다. 레지스터 비트는 이 비트를 오프셋 하도록 지정된 최후연산의 오버플로우 인디케이터(또는), 캐리 인디케이터(C)와, 시험된 최후 비트의 상태를 나타내는 비트시험 인디케이터(B)와, 최후 주변 질의의 상태를 나타내는 입력/출력 인디케이터(I)를 포함한다. 또한, 최후 비교의 결과를 나타내는 보다큰 표시(G), 보다 작은 표시(L) 및 상이함표시(U)의 인디케이터를 포함한다.
과학용 및 산업용 ㅁ에 대하여는 유사한 인디케이터 비트가 사용된다.
따라서, 조절된 브랜치 명령어들은 조건이 참(true)이면 인디케이터 미트 및 브랜치를 시험한다. 다른 조절된 브랜치 명령어들은 레지스터 파일(2-404, 2-610)의 선택된 소프트웨어 가시레지스터의 조건을 시험한다. 브랜치 명령어의 OP CODE는 선택된 소프트웨어 가시레지스터의 참상태, 즉 제로보다 작다. 제로보다 크다. 제로와 같다. 제로와 같지않다. 제로보다 작거나 제로가 아니거나 제로이다. 홀수이다. 또는 짝수이다를 지정한다.
브랜치 명령형태들은 16비트 이상의 짧은 변위와 30비트의 큰 변위를 포함한다. 브랜치 명령어는 비조건부 브랜치형 또는 조건부 브랜치형일 수 있다. 명령어장치(2-2)는 모든 짧은 변위의 브랜치 명령어에 대하여 브랜치 어드레스를 발생한다. 명령어장치는 스트링 버퍼(2-220 또는 2-221)에 있는 변위 필드의 내용을 P카운터(2-200)의 내용에 가산기(2-202)에 의하여 가산함으로서 이 일을 수행한다.
브랜치 스트림은 I캐시(6-2)로부터 판독되어 스트링 버퍼(2-220 또는 2-221)로 전송된다.
브랜치 명령어가 비조건부 브랜치를 지정하며, 명령어장치(2-2)는 브랜치 명령어를 실행하고 브랜치 명령어 스트림에서 다음 명령어를 해독하기 시작한다.
브랜치 명령어가 조건부 브랜치 명령어이면 명령어 장치(2-2)는 명령어 장치(2-2)의 어떤 명령어 스트림이 해독될 것인지에 대하여 A 장치(2-4)가 결정을 하도록 대기한다. OP CODE(2-402), 레지스터 파일(2-404) 및 인디케이터레지스터(2-417)로부터의 신호는 브랜치 논리부(2-401)로 인가된다. RDR(A)(2-406)는 A-P-LD 신호를 발생하고, 그 다음, ALU(2-412)로부터의 브랜치어드레스 신호가 P 카운터에 로드되며 브랜치 논리부(2-401)는 비트 위치(46~50) 또는 16진수(07)를 발생한다. 신호를(A-BRANCH, A-P-LD)은 P 카운터(2-200)에 인가되고, A-BRANCH 신호는 브랜치의 종류, 지정된 인디케이터 레지스터(2-417) 비트의 상태 및 레지스터 파일로부터의 특정 소프트웨어 가시레지스터의 상태를 지정하는 OP CODE 레지스터 신호로부터 발생된다. 양 신호가 모두 참이면 명령어 장치(2-2)는 브랜치 명령어 스트림에서 명령어를 해독하기 시작한다. A-P-LD 신호가 참이고 A-BRANCH 신호가 거짓이면 명령어 장치(2-2)는 최초의 명령어 스트림의 해독을 계속한다.
명령어 장치(2-2)에 있어서, 명령어가 브랜치를 호출하고 변위를 가지면 해독부(2-210)로부터의 변위는 P 카운터(2-200)의 내용에 가산되도록 가산기(2-202)에 인가되고 레지스터(VA0)(2-204) 또는 레지스터(VA1)(2-206)에 기억되며 I-캐시(6-2)에 인가된다.
A 장치(2-4)가 명령어의 실행을 완료하면 A-DONE 신호는 명령어 장치(2-2)의 해독 논리부(2-210)에 보내진다. 이것은 명령어 장치(2-2)가 스트링 버퍼(2-220 또는 2-221)에 기억된 다음 명령어를 A 장치(2-4) 및 만일 필요하다면 실행장치(2-6)에 보내야 함을 나타낸다. 명령어가 실행장치(2-6)에 의한 실행을 호출하면, 명령어 장치(2-2)는 I-E-LAST 신호와 I-E-FIRST 신호의 제어하에 그 명령어를 명령어 FIFO(2-600)에 보낸다.
신호들을 설명하는 부울 방정식은 부록에 표시하였으며 적당한 경우에 참조되어야 한다. I-BEGIN 신호는 CRACK 신호가 발생되고, 시스템이 홀드 모드에 있지 않으며 클럭 논리를 포함하는 논리블록이 스톨(stall) 모드에 있지 않을때에 A 장치(2-4)에 의해 수신된다.
CRACK 신호는 준비 논리 및 플롭부(2-222)가 명령어를 해독할 준비가 되어 있고, 스트링 버퍼(A)(2-220) 또는 스트링 버퍼(B)(2-221)가 적어도 하나의 명령어를 기억하며, A 장치가 다음 명령어를 처리할 수 있음을 나타내는 ADONE 신호를 A 장치(2-4)가 발생하였을 때에 발생된다.
명령어 장치(2-2)는 해독될 명령어가 실행장치(2-6)에 의해 실행되어야 한다면 준비논리 및 플롭부(2-222)에 의하여 I-EFIRST 및 I-ELAST 신호를 발생한ㄴ다. 두신호는 I FIFO(2-600)에 인가된다. I-EFIRST 신호는 더블 워드 명령어를 기억하도록 I FIFO(2-600)를 인에이블 시킨다. I-ELAST 신호는 싱글 워드 명령어를 기억하도록 I FIFO(2-600)를 인에이블 시킨다.
명령어 장치(2-2)는 A 장치(2-4)에서 실행되는 명령어를 보내고 명령어가 실행장치에서 실행되는 것이면 FIFO(2-600)에만 보냄을 알아야 한다. 실행장치(2-6)에 있어서, FIFO(2-600)가 실행할 다음 명령어는 실행장치 제어 기억부(2-604)의 어드레스 위치를 발생하는 다음 어드레스 발생기(2-620)로 인가된다. 펌웨어 워드는 레지스터(RDR(E))(2-606)에 기억된다. 명령어(I) FIFO(2-600)는 4개 이상의 명령어를 기억한다.
A 장치(2-4)가 그 가상 어드레스 VMMU(4)에 보내면 VMMU(4)는 E-캐시(6-4)를 어드레스 지정하는 물리 어드레스를 발생한다. 어드레스 지정위치의 내용은 싱글 워드 전송 또는 더블 워드 전송에 대하여 LD-DAT-0015 신호 및 LD-DAT-1631 신호에 의해 실행장치(2-6)의 데이타 FIFO(2-630)에 기억된다. LD-DAT-0015 신호는 또한 FIFO(2-630)의 기록어드레스를 1증가시켜 다음 전송을 받아들인다. 이 데이타는 명령어가 동작하는 오퍼랜드이다. 실행장치(2-6)는 오퍼랜드가 레지스터 파일(2-610)의 소프트웨어 가시 레지스터에 기억된 명령어를 실행한다.
실행장치(2-6)에 의한 명령어 실행중에, 인디케이터 상태는 E-IDAT 0~8 신호를 발생하는 인디케이터 논리부(2-623)에 의해 ALU(2-608)로부터 수신된 신호로부터 변경될 것이다. E-IDAT 0~8 신호는 A 장치(2-4)의 인디케이터 레지스터(2-417)를 갱신한다.
특정 명령어, 즉, 오퍼랜드를 필요로 하지 않는 실행장치(2-6)에 의해 실행되는 명령어에 대하여 A 장치(2-4)는 가상 어드레스, 즉 16진수 40을 VMMU(4)에 보냄으로서 더미사이클을 발생한다. 이것은 "더미" 오퍼랜드를 가진 FIFO(2-630)에 LD-DAT 1631 신호를 보냄으로서 E-캐시(6-4)가 더미 사이클을 발생하게 한다.
승산기(2-616)는 레지스터 파일(2-610)의 A 및 B 포트에 연결되어 이동기(2-618) 및 레지스터(2-620)와 함께 부분곱(Partial produtcs)을 발생 및 기억한다. 부분곱은 결과 멀티플렉서(MUX)(2-622)에 인가되어 레지스터 파일(2-610)의 누산기 위치에 기억된다. 승산이 완료되면 최종 결과는 레지스터 파일(2-610)의 소프트웨어 가시 레지스터중 하나에 기억된다.
교환기(swapper) 논리부(2-612)는 더블 워드내에서 워드를 교환하고 싱글 워드내에서 바이트를 교환하기 위하여 레지스터 파일(2-610) B측으로부터 오퍼랜드를 수신한다. 16비트 워드는 두개의 8비트 바이트로 만들어진다. 더블 워드는 두개의 16비트 싱글 워드 또는 4개의 8비트 바이트로 이루어진다. 부호 엑스텐더(2-614)는 더블 워드의 모든 고차 위치의 부호를 더블 워드의 첫번째 유효 비트의 좌측으로 반복한다.
CT1및 CT2카운터(2-624)는 부동 소숫점 결과의 지수 계산에 사용된다. 부동 소숫점 오퍼랜드의 가수(matissa)는 ALU(2-608)와 이동기(2-618)를 통하여 처리된다. 이들은 종래의 방법에 따라 수행된다.
장치(2-4)의 레지스터 파일(2-404) 및 실행장치(2-6)의 레지스터 파일(2-610)의 소프트웨어 가시 레지스터는 이들이 동일정보를 포함하도록 연속적인 사이클로 갱시된다. 이것은 레지스터 파일(2-610)을 인에이블 시키는 갱신신호 A-UPDT를 발생하도록 논리부(2-420)에 인가되는 레지스터(RDR(A))(2-406)로부터의 펌웨어 신호와, 레지스터 파일(2-404)의 D 단자로부터 레지스터 파일(2-610)의 D 단자로 데이타를 기억하기 위하여 레지스터 파일(2-610)의 어드레스 단자에 인가되는 6개의 A-ADR 신호에 의해 달성된다. 유사하게, 레지스터(RDR(E))(2-606)로부터의 E-UPDT 신호는 논리부(2-601)로부터의 E-ADR 신호에 의하여 지정된 어드레스에 데이타를 기억하도록 레지스터 파일(2-404)를 인에이블 시킨다. 논리부(2-601)는 I FIFO(2-600)로부터의 명령어 신호로부터 E-ADR 신호를 발생하고 RDR(E)(2-602)로부터 펌웨어 신호를 발생한다.
A 장치(2-4)의 프로그램 카운터(2-416)는 다음 명령어의 어드레스를 기억한다. 명령어 장치(2-2)의 P카운터(2-200)는 또한 다음 명령어의 어드레스를 기억한다. 두개의 레지스터가 있는 이유는, 조건부 브랜치인 경우에, 명령어 장치(2-2)의 P카운터(2-200)는 그것이 사용되어야 하는 경우에 브랜치 어드레스를 기억하고, 프로그램 카운터(2-416)는 브랜치 어드레스를 기억하지 않고 실행되는 순서상으로 다음 어드레스를 기억하기 때문이다.
다음의 예는 본 발명의 생산라인 동작의 장점을 나타낸다. 제4도는 I-캐시(6-2)의 복수위치의 내용을 나타낸다. 위치 및 데이타는 16진수형으로 나타내었다. 이 예에있어서, 위치 1000 및 1001에는 16진수 4F의 오프셋을 가진 32비트의 더블 워드로드 B1레지스터 명령어를 기억한다. 이것은 가상 어드레스로서 1000+1+4F의 어드레스, 즉 16진수로 1050의 어드레스가 VMMU(4)에 인가됨을 나타낸다. 가상어드레스는 E-캐시(6-4)의 물리 어드레스의 위치를 가리킨다. 물리 어드레스 위치의 내용은 레지스터(B1)에 로드되며, 그 레지스터(B1)는 A 장치(2-4)의 레지스터 파일(2-404) 및 실행장치(2-6)의 레지스터 파일(2-610)에 함께 존재하는 소프트웨어 가시 레지스터이다. 유사하게, 레지스터(B2)는 1002 및 1003 위치에 기억된 32비트의 더블 워드 명령어 로드레지스터(B2)로부터 로드된다. 위치 1004에는 레지스터(R1)의 내용의 싱글 워드 명령어 시프트 오픈 레프트 3이 기억되며, 상기 레지스터(R1)는 레지스터 파일(2-404, 2-610)의 다른 소프트웨어 가시 레지스터이다. 위치 1005에는 I-캐시(6-2)의 100A 및 100B 위치에 있는 더블 워드 명령어 로드 레지스터(R7)를 가리키도록 프로그램 카운터(2-416)의 내용에 5를 가산하기 위하여 브랜치 명령어를 기억한다.
위치 1006 및 1007에는 가산 명령어 ADD R30010이 기억되며 여기에서 레지스터(R3)의 내용은 메모리 위치 0010(E-캐시(6-4))의 내용에 가산되고 그 결과는 레지스터(R3)에 기억된다. 위치 1008 및 1009에는 승산 명령어 MUL R66731이 기억되며, 여기에서 레지스터(R6)의 내용은 오퍼랜드 6731과 곱해지고 그 결과는 레지스터(R6)에 재기억된다. 위치 1005의 비조건부 브랜치 때문에 가산 명령어도 승산 명령어도 실행되지 않는다. 그러나, 두 명령어들은 I-캐시(6-2)로부터 인출되지만 이들이 해독되지 않는다.
제5도는 명령어들이 파이프라인의 스테이지를 통과할때에 명령어의 실행을 나타낸다. 제5도에 도시된 스테이지로는 I-캐시(6-2)로부터 명령어를 인출하는 I-캐시 스테이지 ; 명령어를 시험하고 어떤장치가 그 명령어를 실행해야 하는지를 결정하는 I-캐시 스테이지 ; 가상어드레스를 발생하거나 레지스터 또는 브랜치 명령어를 실행하는 단위 스테이지 ; 가상 어드레스를 물리 어드레스로 변환하는 VMMU 스테이지 ; 어드레스 지정된 위치의 오퍼랜드를 실행장치(2-6)로 보내는 E-캐시 스테이지 및 명령어를 실행하는 실행 장치 스테이지가 있다.
제5도는 참조하면, 사이클 1중에, I FETCH는 VAO 레지스터(2-204)의 내용에 의해 지정된 위치, 즉 16진수 1000에서 I 캐시(6-2)로부터 로드 B1명령어, 즉 16진수 9CC0004F를 인출하여 스트링 버퍼 A(2-220)에 기억한다. P 카운터(2-200)는 A 장치(2-4)에 의해 초기화되고 그 내용(1000)은 가산기(2-202)를 거쳐 VA0(2-204)로 전송된다. I 캐시(6-2)는 위치 1000 및 1001에서 더블 워드를 판독한다.
I CRACK은 사이클 2중에 로드 B1명령어를 "해독(crack)"한다. 이것은 메모리 명령어이기 때문에, 명령어 장치(2-2)는 I BEGIN 신호를 A 장치(2-4)에 보내어 OP CODE 레지스터(2-402)를 인에이블 시키고 I-EFIRST 및 I-ELAST 신호를 실행장치(2-6)에 보내어 I-FIFO(2-600)를 인에이블 시킨다. 또한, 명령어는 A 장치(2-4)의 RINSTER 레지스터(2-400) 및 실행장치(2-6)의 I-FIFO(2-600)로 보내어진다. OP CODE 레지스터(2-402)는 명령어의 OP CODE 부, 즉 비트 0~8(2진수로 1001 11001)로 로드된다. A 장치 제어 기억부(2-430)가 어드레스 지정되고 펌웨어 워드는 레지스터 RDR(A)(2-406)에 기억된다.
사이클 3중에, A장치는 가상 어드레스를 발생한다. ALU(2-412)는 RINSTER 레지스터(2-400)에 기억된 저차워드, 즉 16진수 004F를 프로그램 카운터(2-416)의 내용, 즉 16진수 1000에 가산하고 다시 1을 더하여 16진수 1050의 가상 어드레스를 발생하여 이를 VMMU(4)에 보낸다.
사이클 4중에, VMMU(4)는 E 캐시(6-4)를 어드레스 지정하는 16진수 201050의 물리 어드레스(임의의 어드레스)를 발생한다.
사이클 5중에, E 캐시의 어드레스 지정된 오퍼랜드의 16진수 12345678(임의의 오퍼랜드)는 데이타 FIFO(2-630)에 기억된다.
실행장치의 사이클 6에서, 오퍼랜드는 부호 엑스턴더(2-614), ALU(2-608) 및 결과 MUX(2-622)를 거쳐 레지스터 파일(2-610)에 기억된다. 로드 B2명령어인 16진수 ACCO 0050은 유사한 방법으로 생산라인을 통하여 처리된다. 이경우에 I 캐시(6-2)의 어드레스인 16진수 1001은 VA0(2-202)에 기억된다. 로드 B2명령어는 더블워드이므로 P 카운터(2-200)의 내용은 2가 증가된다.
실행장치의 사이클 7에서 오퍼랜드인 16진수 24681357은 레지스터 파일(2-610)의 레지스터(B2)에 기억된다.
I FETCH의 사이클 3에서 위치 1004의 내용은 I 캐시(6-2)로부터 판독된다. 어드레스된 각각의 홀수위치는 각각 판독되는 16비트의 두개의 워드를 만든다. 로드 B 명령어는 더블 워드 명령어이지만 더블워드 명령어는 위치 1004가 어드레스된 두개의 명령어, 즉 이동 R1좌측 3명령어인 16진수 1003과 브랜치 명령어인 OF85를 포함할때에 판독된다. 상기 두 명령어는 스트링 버퍼 A(2-220)에 로드된다.
I CRACK의 사이클 4에서, 명령어 장치(2-2)는 명령어가 A 장치(2-4)에서 배타적으로 실행되기 때문에 A 장치(2-4)를 액세스하기만 한다. I-BEGIN 신호는 CO CODE를 OP CODE 레지스터(2-402)에 로드한다. 명령어는 레지스터(RINSTER)(2-400)에 로드되고 펌웨어워드는 레지스터(RDR(A))(2-406)에 로드된다.
A 장치의 사이클 5에서, R1의 내용, 즉, 16진수 12345678은 이동기(2-414)를 통과하여 16진수 91A2B3C0로서 R1에 다시 기억된다.
시프트 명령어는 3사이클 후에 실행되고 그때 파이프 라인에서 빠져나옴을 알아야 한다.
I CRACK의 사이클 5는 레지스터(RINSTER)(2-400)에 브랜치 명령어인 16진수 OF85를 로드한다. 이제 레지스터(VA1)(2-206)은 16진수 100A(1005+5)를 기억한다.
I FETCH의 사이클 4중에 위치 1005로부터 위치 100A까지 비조건부 브랜치가 있다하더라도 스트링 버퍼 A(2-220)에는 가산 명령어 BA00 0010가 인출되어 기억된다. 스트링 버퍼 B(2-221)는 현재 액티브 상태이므로 사이클 6의 I CRACK 중에 명령어는 해독하지 않는다.
I CRACK 사이클 6은 더미 사이클이다.
사이클 6중에 A 장치는 P 카운터(2-200)에 브랜치 어드레스를 로드하기 위하여 A-P-LD 및 A-BRANCH 신호를 발생한다. A 장치는 또한 프로그램 카운터(2-416)에 브랜치 어드레스를 로드한다.
사이클 5의 I FETCH 중에, 승산 명령어가 스트링 버퍼 A(2-220)에 로드되는데 이것도 또한 해독되지 않는다. 그러나, I CRACK의 사이클 7중에, LDR7명령어는 해독된다.
제6a도 및 제6b도는 제4도의 로드 B1명령어를 실행함에 있어서, A 장치(2-4) 및 실행장치(2-6)에 의해 취해진 펌웨어 단계를 블록도로 도시한 것이다.
각각의 블록은 RDR(A)(2-406) 또는 RDR(E)(2-606) 레지스터의 펌웨어 비트 및 그 값을 나타낸다. 펌웨어에 의해 인식된 뉴모닉(neumdnic)은 블록에 의해 수행된 기능과 함께 블록내에서 밑줄로 표시하였다.
예로써, 제6a도의 블록(2-458)은 레지스터 RDR(A)(2-406)의 34~37비트가 16진수 1(2진수 0001)의 값을 갖는다는 것을 나타낸다. 수행되는 기능은 ALU(2-412)의 B 입력의 값에 ALU(2-412)의 A 입력의 값을 더하고, 1을 더하여 가상 어드레스를 발생하는 것이다.
제6a도를 참조하며, A 장치(2-4)는 오퍼랜드의 가상 어드레스를 발생하고, 그 어드레스를 VMMU(4)에 보내며 A 장치(2-4)가 그 로드 B1명령어 부분을 완료하였음을 명령어 장치(2-2)에 통지한다. 모든 펌웨어 단계들은 하나의 사이클 즉 제5도에서 A 장치의 사이클 3에서 완료된다. 펌웨어 블록은 거의 그들이 실행되는 순으로 나타난다.
블록(2-450)에서 알 수 있는 바와 같이, RDR(A) 레지스터(2-406)의 비트 16은 2진수 0이다. 마이크로 동작(RB-OPW)은 16진수 9CCO 004F인 RINSTR 레지스터(2-406)의 내용을 블록(2-452)에 전송한다. 블록(2-452)의 MICRO INDX O(RDR(A)(2-406)의 비트 19 및 20은 2진수 0이다)은 명령어의 우측워드, 즉 16진수 0050을 선택하고, 블록(2-454)의 MICRO AUB-RB 16 : 31(비트 29~31은 2진수 0이다)은 ALU(2-412)의 B 입력에 우측워드를 인가한다.
블록(2-456)의 MICRO AUA-P(비트 26~28은 2진수 0이다)는 16진수 1000인 프로그램 카운터(2-416)의 내용을 ALU(2-412)의 A 입력에 인가한다.
블록(2-458)의 MICRO AU-A+B+I(비트 34~37은 16진수 1이다)는 ALU(2-412)에서 가상어드레스인 16진수 1050(1000+4F+1)을 발생한다.
블록(2-460)의 MICRO BALU-P(비트 41~42는 16진수 3이다)는 멀티플렉서(비도시)에 의해 ALU(2-412)로부터 가상 어드레스를 선택한다.
블록(2-462)의 마이크로 OFFSET(비트 32~33은 2진수 0이다)는 E 캐시(6-4)의 오퍼랜드가 워드 경계에 나타나는 지를 시험한다. 그렇지 않으면 펌웨어는 오퍼랜드를 기억하는 두개의 더블 워드의 내용을 판독하도록 두개의 E 캐시 사이클을 호출한다. 따라서 E-OFF는 2진수 0이다. E-OFFSET는 인덱스 이동기(2-420)로부터 오프셋 FIFO(2-634)로 인가된다.
블록(2-464)의 MICRO QLD(비트 43은 2진수 1이다)는 가상 어드레스를 백업으로써 Q 레지스터(2-418)에 로드한다.
블록(2-468)의 MICRO PP2(비트 44~45는 2진수 10이다)는 프로그램 카운터(2-416)를 증가 시키고 다음에 P 카운터(2-200)를 증가시켜서 I 캐시(6-2)로부터 다음 명령어를 판독한다.
블록(2-470)의 MICRO A-DONE(비트 53은 2진수 1이다)은 A-DONE 신호를 명령어 장치(2-2)에 보낸다. 그 다음, 명령어 장치는 다음 명령어를 A 장치(2-4)에 보낸다.
제6b도를 참조하면, 실행장치(2-6)는 C 캐시(6-4)로부터 오퍼랜드를 수신하고 그것을 레지스터 파일(2-610)에 기억시킴으로서 LDB1명령어의 실행을 완료한다.
블록(2-650)은 RDR(E) 레지스터(2-606)의 비트 45-46이 2진수 01임을 나타낸다. MICRO DW는 더블 워드 오퍼랜드를 D FIFO(2-630)에 전열시킨다. 2진수 0에서의 E-OFF는 오프셀이 없음을 나타낸다.
블록(2-652)의 MICRO AUA DAT(비트 47은 2진수 1이다)는 D FIFO(2-630)로부터의 오퍼랜드를 ALU(2-608)의 A 입력으로 전송한다.
블록(2-658)의 MICRO ALU-DW(비트 88-89는 2진수 01이다)는 오퍼랜드를 더블 워드로써 처리하도록 ALU(2-608)를 구성한다.
블록(2-660)의 MICRO RSTL-PTR(비트 66-67은 2진수 01이다)에서, 결과 멀티플렉서(2-622)는 REF-FIFO(2-632)로부터의 링번호인 오퍼랜드의 비트 0과 1을 선택하고 ALU(2-608)로부터 오퍼랜드의 비트 2~31을 선택한다.
블록(2-662)의 MICRO A-BX(비트 31~37은 2진수 1, 즉 0010 001이다)은 펌웨어 워드의 비트 001로부터 B1의 레지스터 파일(2-610)의 A 어드레스, 즉 16진수 09를 발생하고 명령어 워드로부터 비트 1-3을 발생한다.
블록(2-664)의 MICRO RFW(A)(비트 79-82는 16진수 01이다)는 결과 멀티플렉서(2-622)로부터 레지스터 파일(2-610)의 B1에 더블 워드 오퍼랜드를 기입한다.
블록(2-666)의 MICRO DONE(비트 63은 2진수 1이다)은 로드 B1명령어와 관련된 명령어 해독논리부(2-210)를 리세트하는 명령어 장치(2-2)에 E-DONE 신호를 보낸다.
블록(2-668)의 MICRO MBFMT MBR(비트 29,1-3은 16진수로 04이다)은 다음 실행장치 제어 기억부(2-604) 위치로 분기하고 RDR(E)(2-606)에 다음 펌웨어 워드를 로드한다.
제7도는 시프트 R1좌측 3명령어를 실행하도록 A 장치(2-4)에 의해 취해진 펌웨어 단계들을 블록도 형태로 나타낸 것이다. 제7도를 참조하면, I FETCH 스테이지의 사이클 3은 I 캐시(6-2)로부터 시프트 R1좌측 3(SOL) 명령어, 즉 16진수 1003을 인출하고 그 값을 버퍼 스트링 A(2-220)에 로드한다. 이 명령어는 사이클 4에서 해독되고 RINSTR 레지스터(2-400) 및 OP CODE 레지스터(2-402)에 로드된다. I-BEGIN 신호는 OP CODE 레지스터(2-402)를 인에이블 시킨다. 사이클(5)는 레지스터 파일(2-404)의 R1의 내용(16진수 12345678)을 판독하고 좌측 3비트를 이동시키며 그 결과(16진수 91A2B3CO)를 R1에 재기억 시킴으로서 SOC 명령어의 실행을 완료한다.
A 장치(2-4)는 제어 기억부(2-430)로부터 판독된 펌웨어 워드에 의해 제어되고 RDR(A)(2-406)에 기억된다.
블록(2-480)에서 알 수 있듯이, 16진수 04인 RDR(A)(2-406)의 비트 6-11에 의해 지정된 마이크로 동작 MICRO B-DX는 레지스터 파일(2-404)에서 RFB 레지스터, 즉 16진수 01을 발생한다. 레지스터는 R1의 어드레스(000001)를 얻기 위하여 OP CODE 레지스터(2-402)의 비트 1~3을 000에 부속시킴으로서 발생된다.
블록(2-482)의 MICRO SIN2-RB(비트 27~29는 16진수 0이다)는 R1의 내용을 판독하여 이동기(2-618)로 보낸다. 블록(2-484)의 MICRO SIN 3-0(비트 30~31은 2진수 11이다)는 이동기(2-618)의 32개의 저차 위치에 0을 로드한다. 블록(2-486)의 MICRO SHIF-L(비트 16은 2진수 0이다)는 좌측 시프트 동작에 대하여 이동기(2-618)를 조절한다. 블록(2-486)의 MICRO SHSI(비트 17~19는 16진수 2이다)는 OP CODE(2-402)의 비트 12~15에 의해 지정된 대로 3을 시프트하도록 이동기(2-618)를 동작시킨다.
블록(2-490)의 MICRO RF : B-SHFT(비트 위치 12~13은 2진수 01이다)는 오퍼랜드를 좌측으로 3비트 이동시키고 그것을 레지스터 파일(2-404)의 R1에 재기억 시킨다.
블록(2-492)의 MICRO I-C-SHFT(비트 위치 46~51은 16진수 38이다)는 시프트 차수에 대하여 인디케이터 레지스터(2-417)의 C 인디케이터(비도시)를 세트한다.
블록(2-494)의 MICRO A-DONE(비트 53은 2진수 1이다)는 A-DONE 신호를 명령어 장치(2-2)로 보낸다. 그 다음 명령어 장치(2-2)는 실행될 다음 명령어를 해독하고 이것을 A 장치(2-4)에 보낸다.
블록(2-496)의 MICRO PPI(비트 44-45는 2진수 01이다)는 SOL이 싱글 워드 명령어이기 때문에 프로그램 카운터(2-416)를 1증가시킨다.
비록 본 발명을 그 양호한 실시예에 따라 도시하고 설명하였지만 기술에 숙련된 사람이라면 본 발명의 취지 및 범위에서 일탈함이 없이 그 형상 및 세부사항에 있어서 여러가지 변화가 가능함을 알것이다.
[부록 A]
명령어의 뉴모닉을 이하에 나타내는바, 이것은 허니웰 뷸인코오포레이티드의 DPS6 프로그래머 포켓 가이드 CU 75-02의 하드웨어버젼(Hardware Version of DPS6 Programmers Pocket Guide CU 75-02)(1984년 8월)으로부터 입수할 수 있다. 부울 방정식의 주해는 다음과 같다.
EQ 0100 16진수 0100과 같음
GT 3 16진수 3 보다 큼
EQ 2 16진수 2와 같지 않음
NLT 018 16진수 018 보다 작지 않음
NGT 01E 16진수 01E 보다 크지 않음
LT 3 16진수 3 보다 작음
I-BEGIN 신호는 부울 방정식에 의해 얻어진다.
I-BEGIN=CRACK & ∧STALL & ∧HOLD
CRACK=READY & ∧NONELEFT & ADONE
부호 ∧은 부정 표시를 의미한다. 즉, ∧HOLD는 "NOT HOLD"로서 판독되어야 한다.
I-EFIRST와 I-ELAST신호에 대한 부울 방적식을 다음과 같다.
I-EFIRST=CRACK & ∧STALL & EINSTR
I-ELAST=I-EFIRST(∧MSK+(SIZE EQ 2)+BII)
+(∧HOLD & MSK & ∧ELL & CRACK & ∧STALL & NOTSTO & RSIZE EQ 2)
EINSTR신호에 대한 부울 방정식은 실행장치(2-6)에 의한 실행을 요구하는 다른 형태의 명령어비트를 결합하는 함수로서 얻어진다. 부울 방정식은 다음과 같다.
EINSTR=GCS+(IO+IOLD+SC+MASK+BIT4+LB+LEV+INCDEC & ∧RAS ; MTM+MUL+DIV+STM+SSBP) & ∧EII+(BSTORE+EBIMO) & IMO+EMSK & EII+MLV & (SI+ESI & EII1)+(ESO+EDO) & (∧ERAS &(EII1+EII23)+AS3EII45)+EEII & (EII1+EII23)+(SDO+SO) & ∧RAS & ∧IMO & ∧EII
방정식 용어의 설명
일반용, 상업용 또는 과학용 명령어
GCS=I-INST(0-8) EQ 0 ;
IO명령어
IO=(I-INST(0-8) EQ 0100
IOLD명령어
IOLD=I-INST(0-8) EQ 0103
싱글 오퍼랜드 명령어
SO=(I-INST(0-3) EQ 8 & ((I-INST(4-8) EQ 1)+(I-INST(4-8) GT 3))
실행장치(2-6)의 B레지스터를 사용하는 싱글 오퍼랜드 명령어
SSBP=I-INST(0-8) EQ 0106
오버플로우 명령어를 사용하는 싱글 오퍼랜드 명령어 : (NEG, CAD, AID, SID, INC., DEC. 명령어)
SOV=SO & ((I-INST(4-8) EQ 4)+(I-INST(4-8) EQ 01D)+(I-INST(4-7) EQ 4))+INCDEC
LB명령어
LB=SO &(I-INST(4-8) EQ 05)
BIT명령어
BIT4=(I-INST(0-5) EQ 022) & (I-INST(8) EQ 0)
기본 더블 오퍼랜드 또는 과학용 명령어
SDO=(I-INST(0-3) GT 8) & (I-INST(4-8) NEQ 2)
인 라인 마스크 워드를 가진 기본 명령어 : (SRM, NSAVE, NRSTR, SAVE, RSTR)
MASK=(I-INST(0) EQ 1) & (RLBP NEQ) & (I-INST(4-8) EQ 015)+(I-INST(0-7) EQ 085)+(I-INST(0-7) EQ 08F)
과학용 싱글 및 더블 오퍼랜드 명령어
SC=((I-INST(0-3) GT 8) & ((I-INST(4-8) EQ 011)+(I-INST(4-8) EQ 013+(I-INST(4-8) EQ 018)+(I-INST(4-8) EQ 01A))) & ∧EII1 & ∧EII23 & ∧AS3EII45
M레지스터를 사용하고 파이프 라인을 정지시키지 않는 더블 오퍼랜드 명령어
STM=(I-INST(0) EQ 1) & (RLBP NEQ 0) & (I-INST(4-8) EQ OE)
여기에서, RLBP=I-INST(1-3)
승산 명령어
MUL=(I-INST(0) EQ 1) & (RLBP NEQ 0) & (I-INST(4-8) EQ 016)
제산 명령어
DIV-(I-INST(0) EQ 1) & (RLBP NEQ 0) & (I-INST(4-8) EQ 06)
시험 레지스터의 수정(M) 명령어
MIM=(I-INST(0-3) GT 8) & (I-INST(4-8) EQ 0)
명령어가 인접오퍼랜드(IMO) NEG, SSBP, CPL, CALL, CL, CLH, LBF, DEC, LBT, LBS, INC, LBC, STS, SDI, CAD
(ALSO LE) STM, STH, SRM, SWR, SWB, STR, STB, ARE SO, DO를 포함할때 파이프라인을 정지시키는 명령어
BSTORE=SO & ((I-INST(4-8) EQ 4)+(I-INST(4-8) EQ 6)+(I-INST(4-6) EQ 3)+(I-INST(4-7) EQ OA)+(I-INST(4-7) EQ 8)+(I-INST(4-8) EQ 018)+(I-INST(4-8) EQ 01A)+(I-INST(4-7) EQ OE))+BIT4+SDD & ((I-INST(5-7) EQ 7)(I-INST(4-8) EQ 015)+(I-INST(4-6) EQ 7))
단치 인접 명령어
SI=(I-INST(0).EQ.0) & (RLBP.NEQ.O) &
(I-INST(4-7).GT.OB)
실행장치(2-6)의 M레지스터를 사용하는 IMO명령어(LDB, LAB, STB, SWB)
EBIMO=(I-INST(0-3) GT 8) & ((I-INST(4-8) EQ 019)+(I-INST(4-8) EQ 017)+(I-INST(4-8) EQ 01D)+(I-INST(4-8) EQ 01F))
LEV명령어
LEV=SO & (I-INST(4-8) EQ 01C)
INC 및 DEC명령어
INCDEC=SO & ((I-INST(49) EQ O11)+(I-INST(4-8) EQ 015))
MLV 또는 MLVK 명령어
MLV=I-INST(6-7) EQ 3
연장된 정수의 싱글 오퍼랜드 명령어
ESO=(I-INST(0-3) EQ 8) & (I-INST(4-8) NLT 018) & (I-INST(4-8) NEQ 01B) & (I-INST(4-8) NGT 01E)
오버플로우를 사용하고 파이프라인을 정지하지 않는 EII :
KINC, KDEC, KNEG, KNEGB 명령어
ESOV=ESO & (I-INST(6-7) LT 3) & (I-INST(6-8) NEQ 1)
EII 단치 인접 명령어
ESI=EBK & (I-INST(8) EQ 1)
연장된 정수의 더블 오퍼랜드 명령어
EDO=(I-INST(0-3) GT 8) & (I-INST(4-7) NLT 4)
인 라인 마스크 더블 워드를 가진 연장된 정수 명령어 (EII)INSTR
EMSK=(I-INST(0) EQ 1) & (RLBP NEQ 0) & (I-INST(4-8) EQ OF)
여기에서 BLBP=I-INST(1-3)
실행장치(2-6)에서 실행되는 EII명령어, 이 명령어는 레지스터 어드레스 음절(RAS) 또는 AN(IMO)를 포함한다(KDIV, KMUL, KMULP, KDIVP, KSKM명령어)
EEII=KDIV+KMUL+KDIVP+KMULP
KDIV=(I-INST(0) EQ 1) & (RLBP NEQ 0) & (I-INST(4-8) EQ 017)
KMUL=(I-INST(0) EQ 1) & (RLBP NEQ 0) & (I-INST(4-8) EQ 01C)
KDIVP=(I-INST(0) EQ 1) & (RLBP NEQ 0) & (I-INST(4-8) EQ 01C)
KMULP=(I-INST(0) EQ 1) & (RLBP NEQ 0) & (I-INST(4-8) EQ 01E)
EII1=I-INST(9-15) EQ 06C
EII23=I-INST(9-15) EQ 07C
AS3EII45=I-INST(9-15) EQ 058
RAS=(I-INST(9-11) EQ 5) & (I-INST(12) EQ 0) & (I-INST(12-15) NEQ 0)
IMO-I-INST(9-15) EQ 070
KAS=(I-INST(23-28) EQ 01A) & NC
ERAS=(I-INST(24-28) EQ 01A) & NC
NC=I-INST(29-31) NEQO
II=EII1+EII23+AS3EII45
Claims (11)
- 생산라인을 형성하도록 배열된 복수의 직렬 연결된 파이프 라인장치를 구비하고 각각의 스테이지가 상기 생산라인 장치에 인가된 복수의 명령어 각각에 대하여 다른 연산을 수행하는 데이타 처리시스템에 있어서, 복수의 명령어 및 오퍼랜드를 기억하는 메모리 수단과 ; 상기 메모리 수단에 결합되고 어드레스 신호열에 응하여 상기 메모리 수단으로부터 수신된 복수의 명령어 각각을 인출 및 기억하는 인출 수단, 및 상기 인출수단에 결합되어 상기 복수의 명령어 각각을 디코딩하고 제1형태의 명령어를 표시하는 제1신호 및 제2형태의 명령어를 표시하는 제2신호를 발생하는 해독수단을 구비한 제1장치와 ; 상기 제1신호에 응하여 상기 제1 및 제2형태의 명령어를 기억하는 레지스터 수단과, 상기 제1형태의 명령어를 실행하여 상기 제1형태의 명령어를 생산 라인으로부터 제거하는 제1수단, 및 상기 제2형태의 명령어 실행에 사용되는 상기 메모리 수단의 오퍼랜드 위치를 나타내는 가상 어드레스 신호를 발생하는 신호 발생수단을 구비한 제2장치와 ; 상기 제2장치에 결합되어 상기 가상 어드레스 신호를 물리 어드레스 신호로 변환하는 제3장치와 ; 상기 제3장치에 결합되고 상기 물리 어드레스 신호 응하여 상기 메모리로부터 상기 오퍼랜드를 검색하는 제4장치와 ; 상기 제1 및 제4장치에 결합되고 상기 제2신호에 응하여 제2형태의 명령어를 기억하며, 상기 제2형태의 명령어를 실행하기 위해 상기 제2형태의 명령어 및 오퍼랜드에 응하는 제2수단을 구비한 제5장치를 포함한 것을 특징으로 하는 데이타 처리 시스템.
- 제1항에 있어서, 상기 제2장치는 제2장치가 상기 제1 및 제2형태의 명령어에 따른 연산을 완료한 시점을 나타내는 제3신호 발생수단을 아울러 구비한 것을 특징으로 하는 데이타 처리 시스템.
- 제2항에 있어서, 상기 해독수단은 상기 제3신호에 응하여 상기 복수의 명령어중 후속되는 명령어를 디코딩하는 것을 특징으로 하는 데이타 처리 시스템.
- 제3항에 있어서, 상기 해독수단이, 상기 제3신호에 응하여 상기 제1신호를 발생하는 준비 수단과 ; 상기 제3신호 및 상기 스트링 버퍼 수단으로부터 출력된 복수의 명령어 신호에 응하여 상기 제2신호를 발생하는 명령어 해독수단을 포함하는 것을 특징으로 하는 데이타 처리 시스템.
- 생산라인을 형성하도록 배열된 복수의 직렬 연결된 파이프라인 장치를 구비하고, 상기 파이프라인 장치 각각은 상기 생산라인 장치에 인가된 복수의 명령어 각각에 따라 다른 동작을 수행하는 것인 데이타 처리 시스템에 있어서, 오퍼랜드 및 복수의 명령어를 기억하는 메모리 수단과 ; 상기 메모리 수단에 결합되고 상기 메모리 수단으로부터 인출된 상기 복수의 명령어 각각을 기억하는 제1수단, 및 상기 기억수단에 결합되어 제1, 제2 및 제3형태의 명령어를 지정하는 디코딩 수단을 구비한 제1장치와 ; 상기 제1장치 및 상기 메모리 수단에 결합되고 상기 제1, 제2 및 제3형태의 명령어를 기억하는 제2수단을 구비한 제2장치로서, 상기 제2장치는 상기 제2형태의 명령어를 실행하고 이로써 상기 제2형태의 명령어를 상기 생산라인으로부터 제거하는 제1수단 및 상기 제1형태의 명령어에 응하여 제1어드레스를 발생하는 제1수단을 구비하며, 상기 제1장치는 상기 제1어드레스에 응하여 상기 제1형태의 명령어를 실행하고 이로써 상기 제1형태의 명령어를 상기 생산라인으로부터 제거하는 제2수단을 구비하고, 상기 제2장치는 상기 제3형태의 명령어에 응하여 상기 오퍼랜드의 상기 메모리 수단에서 제2위치 어드레스를 발생하는 제2수단을 아울러 구비하는 것인 제2장치와 ; 상기 제1장치 및 상기 메모리 수단에 결합되고 상기 제3형태의 명령어 및 상기 오퍼랜드를 기억하는 제3수단 및 상기 제3형태의 명령어를 실행하고 이로서 상기 제3형태의 명령어를 상기 생산라인으로부터 제거하는 제3수단을 구비한 제3장치를 포함하고 ; 상기 메모리 수단은 상기 제2장치에 결합되고 제2어드레스에 응하여 오퍼랜드를 판독하는 것을 특징으로 하는 데이타 처리 시스템.
- 제5항에 있어서, 상기 제1기억 수단이 복수의 명령어 각각의 명령어 캐시에 위치 어드레스를 기억하는 제1카운터 수단과, 상기 명령어 캐시로부터 수신된 상기 복수의 명령어 각각을 기억하는 스트링 버퍼 수단을 포함한 것을 특징으로 하는 데이타 처리 시스템.
- 제6항에 있어서, 상기 디코딩 수단이 명령어 버스상으로 전송되는 복수의 명령어 각각에 대한 제1신호를 발생하고 상기 명령어 버스상으로 전송되는 제3형태의 명령어 각각에 대한 제2신호를 발생하도록 상기 스트링 버퍼 수단에 결합되는 것을 특징으로 하는 데이타 처리 시스템.
- 데이타 처리시스템에서, 실행을 위해 연속적으로 공급되는 적어도 제1, 제2 및 제3형태의 명령어를 파이프라인 형식으로 실행하는 명령어 실행장치에 있어서, 명령어 부분들을 순서대로 실행하도록 함께 결합된 제1, 제2 및 제3처리장치(2-2,2-4,2-6)를 포함하고, 상기 제1처리장치(2-2)는 연속적으로 공급된 상기 명령어들을 수신하여 상기 제2 및 제3형태의 명령어를 상기 제2 및 제3처리장치에 제어가능하게 전송하도록 결합됨과 아울러 명령어 디코딩 수단(2-210)을 포함하며, 상기 명령어 디코딩 수단(2-210)은 상기 제1장치에 의해 수신된 각각의 명령어를 감지하고 상기 명령어가 제1, 제2 및 제3형태중 어느한 형태임을 나타내는 제어신호(I-ELAST, I-BEGIN, I-EFIRST)를 전송하며, 상기 제1처리장치(2-2)는 상기 제1형태의 명령어를 실행하기 위하여 상기 명령어들중 하나가 제1형태임을 표시하는 제어신호에 응답하고, 상기 제2처리장치(2-4)는 상기 제2형태의 명령어를 수신 및 실행하기 위하여 상기 명령어들 중 하나가 제2형태임을 표시하는 제어신호에 응답하고, 상기 제2처리장치(2-4)는 상기 제3형태의 명령어를 수신 및 부분적으로 실행하기 위하여 상기 명령어들 중 하나가 제3형태임을 표시하는 제어 신호에 응답하며, 상기 제3처리장치(2-6)는 상기 제3형태의 명령어를 수신 및 부분적으로 실행하기 위하여 상기 명령어들중 하나가 제3형태임을 표시하는 제어신호에 응답하는 것을 특징으로 하는 명령어 실행장치.
- 제8항에 있어서, 상기 제3처리장치에 의해 상기 제3형태의 명령어를 부분적으로 실행하는 것은 상기 제2처리장치에 의한 상기 부분적인 실행 다음에 행하여지는 것을 특징으로 하는 명령어 실행장치.
- 제9항에 있어서, 상기 제3처리장치에 의한 부분적인 실행은 상기 제2처리장치에 의한 부분적인 실행에 의해 어드레스가 발생된 시스템의 기억수단의 위치로부터 판독된 오퍼랜드 상에서 상기 제3형태의 명령어에 의해 호출된 기능의 실행을 포함한 것을 특징으로 하는 명령어 실행장치.
- 제9항에 있어서, 상기 제1형태의 명령어는 무조건적인 브랜치 명령어인 것을 특징으로 하는 명령어 실행장치.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US28658088A | 1988-12-19 | 1988-12-19 | |
US286580 | 1988-12-19 | ||
US286,580 | 1988-12-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR900010587A KR900010587A (ko) | 1990-07-09 |
KR940000027B1 true KR940000027B1 (ko) | 1994-01-05 |
Family
ID=23099255
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019890018859A KR940000027B1 (ko) | 1988-12-19 | 1989-12-18 | 생산라인의 고성능 명령어 실행방법 및 장치 |
Country Status (15)
Country | Link |
---|---|
EP (1) | EP0378816B1 (ko) |
JP (1) | JPH0776922B2 (ko) |
KR (1) | KR940000027B1 (ko) |
CN (1) | CN1026037C (ko) |
AU (1) | AU615364B2 (ko) |
BR (1) | BR8906579A (ko) |
CA (1) | CA2005907C (ko) |
DE (1) | DE68928300T2 (ko) |
DK (1) | DK648189A (ko) |
FI (1) | FI896044A0 (ko) |
IL (1) | IL92605A0 (ko) |
MX (1) | MX171941B (ko) |
NO (1) | NO895068L (ko) |
NZ (1) | NZ231766A (ko) |
ZA (1) | ZA899554B (ko) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5539911A (en) * | 1991-07-08 | 1996-07-23 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution |
JP3510729B2 (ja) * | 1996-02-29 | 2004-03-29 | 三洋電機株式会社 | 命令実行方法および命令実行装置 |
FR2770662B1 (fr) * | 1997-11-03 | 1999-12-10 | Inside Technologies | Microprocesseur pipeline a saut conditionnel en un cycle d'horloge |
FR2770660B1 (fr) * | 1997-11-03 | 2000-08-25 | Inside Technologies | Microprocesseur, notamment pour carte a puce |
US8082467B2 (en) | 2009-12-23 | 2011-12-20 | International Business Machines Corporation | Triggering workaround capabilities based on events active in a processor pipeline |
US9104399B2 (en) | 2009-12-23 | 2015-08-11 | International Business Machines Corporation | Dual issuing of complex instruction set instructions |
US9135005B2 (en) | 2010-01-28 | 2015-09-15 | International Business Machines Corporation | History and alignment based cracking for store multiple instructions for optimizing operand store compare penalties |
US8495341B2 (en) | 2010-02-17 | 2013-07-23 | International Business Machines Corporation | Instruction length based cracking for instruction of variable length storage operands |
US8938605B2 (en) | 2010-03-05 | 2015-01-20 | International Business Machines Corporation | Instruction cracking based on machine state |
US8464030B2 (en) | 2010-04-09 | 2013-06-11 | International Business Machines Corporation | Instruction cracking and issue shortening based on instruction base fields, index fields, operand fields, and various other instruction text bits |
US8645669B2 (en) | 2010-05-05 | 2014-02-04 | International Business Machines Corporation | Cracking destructively overlapping operands in variable length instructions |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4598365A (en) * | 1983-04-01 | 1986-07-01 | Honeywell Information Systems Inc. | Pipelined decimal character execution unit |
CA1250667A (en) * | 1985-04-15 | 1989-02-28 | Larry D. Larsen | Branch control in a three phase pipelined signal processor |
US4991080A (en) * | 1986-03-13 | 1991-02-05 | International Business Machines Corporation | Pipeline processing apparatus for executing instructions in three streams, including branch stream pre-execution processor for pre-executing conditional branch instructions |
JPS6395539A (ja) * | 1986-10-09 | 1988-04-26 | Nec Corp | パイプライン処理方式 |
JP2695157B2 (ja) * | 1986-12-29 | 1997-12-24 | 松下電器産業株式会社 | 可変パイプラインプロセッサ |
JPS63197232A (ja) * | 1987-02-12 | 1988-08-16 | Toshiba Corp | マイクロプロセツサ |
-
1989
- 1989-12-08 IL IL92605A patent/IL92605A0/xx not_active IP Right Cessation
- 1989-12-13 NZ NZ231766A patent/NZ231766A/en unknown
- 1989-12-13 AU AU46704/89A patent/AU615364B2/en not_active Ceased
- 1989-12-14 ZA ZA899554A patent/ZA899554B/xx unknown
- 1989-12-14 DE DE68928300T patent/DE68928300T2/de not_active Expired - Fee Related
- 1989-12-14 EP EP89123183A patent/EP0378816B1/en not_active Expired - Lifetime
- 1989-12-15 NO NO89895068A patent/NO895068L/no unknown
- 1989-12-18 FI FI896044A patent/FI896044A0/fi not_active IP Right Cessation
- 1989-12-18 MX MX018751A patent/MX171941B/es unknown
- 1989-12-18 CA CA002005907A patent/CA2005907C/en not_active Expired - Fee Related
- 1989-12-18 KR KR1019890018859A patent/KR940000027B1/ko not_active IP Right Cessation
- 1989-12-19 BR BR898906579A patent/BR8906579A/pt not_active Application Discontinuation
- 1989-12-19 CN CN89109392A patent/CN1026037C/zh not_active Expired - Fee Related
- 1989-12-19 DK DK648189A patent/DK648189A/da not_active Application Discontinuation
- 1989-12-19 JP JP1329412A patent/JPH0776922B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
DE68928300T2 (de) | 1998-04-02 |
JPH0776922B2 (ja) | 1995-08-16 |
AU4670489A (en) | 1990-06-21 |
BR8906579A (pt) | 1990-09-04 |
CN1026037C (zh) | 1994-09-28 |
DK648189D0 (da) | 1989-12-19 |
IL92605A0 (en) | 1990-08-31 |
EP0378816A3 (en) | 1992-05-06 |
NO895068L (no) | 1990-06-20 |
KR900010587A (ko) | 1990-07-09 |
AU615364B2 (en) | 1991-09-26 |
EP0378816B1 (en) | 1997-09-03 |
MX171941B (es) | 1993-11-24 |
EP0378816A2 (en) | 1990-07-25 |
NO895068D0 (no) | 1989-12-15 |
DK648189A (da) | 1990-06-20 |
CA2005907C (en) | 1994-05-31 |
ZA899554B (en) | 1990-10-31 |
CA2005907A1 (en) | 1990-06-19 |
NZ231766A (en) | 1992-01-29 |
DE68928300D1 (de) | 1997-10-09 |
JPH02224124A (ja) | 1990-09-06 |
FI896044A0 (fi) | 1989-12-18 |
CN1044354A (zh) | 1990-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4524416A (en) | Stack mechanism with the ability to dynamically alter the size of a stack in a data processing system | |
RU2636675C2 (ru) | Команды, процессоры, способы и системы доступа множественных регистров к памяти | |
US10678541B2 (en) | Processors having fully-connected interconnects shared by vector conflict instructions and permute instructions | |
US4305124A (en) | Pipelined computer | |
US20020069375A1 (en) | System, method, and article of manufacture for data transfer across clock domains | |
EP0405495B1 (en) | Instruction unit logic management apparatus included in a pipelined processing unit and method therefor | |
JP2001195250A (ja) | 命令トランスレータ、トランスレータ付命令メモリおよびそれらを用いたデータ処理装置 | |
KR20110055629A (ko) | 단일 명령 다중 데이터(simd)데이터 처리기에서 확장된 어드레싱 모드들의 제공 | |
JP2003085000A (ja) | トレース情報生成装置およびその方法 | |
JPH11504458A (ja) | スーパースカラマイクロプロセッサにおける分岐予測正確度向上のための装置および方法 | |
US5313644A (en) | System having status update controller for determining which one of parallel operation results of execution units is allowed to set conditions of shared processor status word | |
JP2002073330A (ja) | データ処理装置 | |
KR940000027B1 (ko) | 생산라인의 고성능 명령어 실행방법 및 장치 | |
US4348724A (en) | Address pairing apparatus for a control store of a data processing system | |
US5717910A (en) | Operand compare/release apparatus and method for microinstrution sequences in a pipeline processor | |
EP2461246B1 (en) | Early conditional selection of an operand | |
JP2002215387A (ja) | 命令トランスレータを備えたデータ処理装置およびメモリインタフェース装置 | |
US4360869A (en) | Control store organization for a data processing system | |
EP0374830A2 (en) | Control store address generator for developing unique instruction execution starting address | |
US5197133A (en) | Control store addressing from multiple sources | |
US5644761A (en) | Basic operations synchronization and local mode controller in a VLSI central processor | |
JPH0769806B2 (ja) | データ処理装置 | |
JP2861560B2 (ja) | データ処理装置 | |
US4348723A (en) | Control store test selection logic for a data processing system | |
EP0015276B1 (en) | A digital pipelined computer |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
G160 | Decision to publish patent application | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20010104 Year of fee payment: 8 |
|
LAPS | Lapse due to unpaid annual fee |