KR880000340B1 - 데이타 처리 시스템 - Google Patents

데이타 처리 시스템 Download PDF

Info

Publication number
KR880000340B1
KR880000340B1 KR8205399A KR820005399A KR880000340B1 KR 880000340 B1 KR880000340 B1 KR 880000340B1 KR 8205399 A KR8205399 A KR 8205399A KR 820005399 A KR820005399 A KR 820005399A KR 880000340 B1 KR880000340 B1 KR 880000340B1
Authority
KR
South Korea
Prior art keywords
signal
register
memory
bus
operand
Prior art date
Application number
KR8205399A
Other languages
English (en)
Other versions
KR840003080A (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 니콜라스 프라시노스
Publication of KR840003080A publication Critical patent/KR840003080A/ko
Application granted granted Critical
Publication of KR880000340B1 publication Critical patent/KR880000340B1/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/22Microcontrol or microprogram arrangements
    • 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/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/262Arrangements for next microinstruction selection
    • G06F9/268Microinstruction selection not based on processing results, e.g. interrupt, patch, first cycle store, diagnostic programs

Abstract

내용 없음.

Description

데이타 처리 시스템
제1도는 본 발명의 장치가 포함된 시스템의 일반적인 블럭 다이어그램.
제2도는 본 발명의 중앙처리장치의 상세 블럭 다이어그램.
제3도는 본 발명의 중앙처리장치의 연산논리 장치에 대한 상세한 연결을 예시한 도면.
제4도는 본 발명의 중앙처리장치에 포함된 제어기억위치의 상세한 구성을 예시한 도면.
제5도는 명령워어드 피일드와 디스크립터 워어드 피일드를 예시한 도면.
제6도는 디스크립터 워어드의 데이타 형태비트를 예시한 도면.
제7도는 애드레스 음절 1맵의 설계를 도시한 도면.
제8도는 애드레스 음절 2맵의 설계를 도시한 도면.
제9도는 애드레스 음절 3맵의 설계를 도시한 도면.
제10도는 확장된 정수명령을 나타낸 표를 도시한 도면.
제11도는 판독전용 메모리및 관련된 논리부의 논리 다이어그램.
제12도는 판독전용 메모리의 비트배열을 도시한 도면.
제13도는 오페란드 크기를 결정하는 퍼엄웨어의 순서도.
제14도는 확장된 정수명령을 퍼엄웨어처리로 나타낸 순서도.
* 도면의 주요부분에 대한 부호의 설명
10 : 제1소자, 즉 로칼 버스 인테페이스 11 : DRAM
12 : BRAM 16 : 제2소자, 즉 연산소자
19,56 : 시프터 22 : 제3소자
25 : 애드레스 26 : 사전 인출 레지스터
27 : 제4 예비소자 30 : 시험논리부
44 : 다음 애드레스 발생기 59 : 디코더
71 : 지령구동기 80 : 상부뱅크
81 : 하부뱅크 82 : 레지스터
90 : 제어반 100 : 중앙처리장치(CPU)
101 : 과학용 명령처리장치(SIP) 102 : 상업용 명령처리장치(CIP)
103 : 캐쉬/메모리관리장치(CACHE/MMU)
105 : 시스템 버스 106 : 메모리모듈
107 : 입출력제어장치 108 : 입출력장치
109 : 통신프로세서
본 발명은 일반적으로 데이타처리 시스템에 관한것으로 특히 명령의 디스크립터워어드로 부터 데이타 형태 피일드 신호들을 수신하는 장치에 관한 것이다.
지금까지 데이타처리 산업에 있어서, 컴퓨터시스템의 성능을 증진시킴과 동시에 시스템의 제조가격을 감소시키기 위해 꾸준한 노력이 있어왔다. 그러나, 데이타처리 시스템의 성능을 증진시키기 위해 고려해야 할 많은 변수 가운데는 시스템에 사용된 프로세서의 속도와 시스템메모리와 프로세서간의 데이타전달 속도등 두 가지의 아주 중요한 요인이 있다. 데이타처리 시스템의 수행능력을 증가시키기 위한 종래의한가지 방법은 복수개의 프로세서를 두고 이들 각각이 공통데이타 버스를 거쳐 시스템메모리에 연결되도록 하는 것이다. 이 방법에서는, 개개의 프로세서들이 프로세서 동작중의 특별한 형태를 실행하도록 특별히 설계 된다. 따라서, 데이타처리 장치중에는 특별히 고효율로 복잡한 수학적 계산을 수행하는데 적합한 고속도인 과학용 프로세서와, 업무관련 데이타 처리에 있어 공통적인 업무를 사무적으로 수행하도록 특별히 설계된 상업용 명령프로세서와, 그리고 전체 데이타시시템의 동작을 제어함과 동시에 부각적인 처리능력도 제공하는 마스트프로세서로서의 기능을 갖는 더욱 일반화된 중앙처리장치 등이 있다.
이와같은 다중처리 데이타 처리장치에서는 일반적으로 각각의 프로세서를 시스템메모리에 연결된 공통 데이타버스로 각자 연결시킴으로써, 시스템메모리와 서로 통신을 하게 된다. 특별히 설계된 다중 프로세서를 사용함으로써, 시스템전체의 성능을 증가시키는데 어느정도 성공적인 결과를 가져왔지만, 그러나 프로세서에 의해 끊임없이 요구되는 엄청난양의 데이타는 그 데이타를 적합한 속도로 실행하도록 프로세서로 전달하는 시스템메모리의 용량을 초과되게 한다.
컴퓨터 시스템의 성능을 최대화하기 위한 두번째 방법은 프로세서가 기억된 데이타를 얻도록 시스템 메모리를 액세스하는데 요구되는 시간을 최소화되게 하는 것이다. 이 방법은 캐쉬 모리라고 불리우는 매우 높은 속도를 가지면서 제한된 용량을 갖는 메모리의 사용을 생각한 것이다. 시스템메모리로부터 중앙처리장치에 의해 요구된 가장 최근의 정보는 상기 캐쉬메모리에 기억됨과 동시에 프로세서로 전달된다. 이러한 정보에 대한 다음 요구에 따라 용량은 크지만 속도가 느린 시스템메모리를 액세스할 필요없이 데이타를 캐쉬로부터 프로세서로 직접 전달하게 된다.
데이타처리시스템의 수행능력을 증가시키기 위한 세번재 방법은 실재로 첫번재와 두번째방법을 종합한 것이며, 데이타처리 시스템내에 특수화된 다중프로세서를 마련하고, 제어프로세서, 즉 CPU를 위한 캐쉬메모리의 사용을 생각한 것이다. 이 방법은 충분한 데이타를 프로세서에 전달해서 그것을 효과적으로 동작시키므로 메모리 용량의 부족을 어느정도 개선시킨다. 그러나, 상기 CPU는 이것이 직접 캐쉬메모리에 연결되므로 시스템 메모리를 자주 액세스할 필요가 없기 때문에 기본적이 잇점이 제공된다. 다른 프로세서에는 CPU에 의한 더 적은 액세스 요구에 기인하여 시스템메모리와 프로세서사이에 정보를 전달하는 데이타 버스상의 통신량을 감소시키므로 2차적인 잇점이 제공된다.
그러나, 이 방법도 특수화된 다중프로세서가 데이타처리 시스템을 계속적으로 적절하게 동작될 수 있게하지는 못했다. 데이타처리 시스템의 처리능력을 최대화하는데에 상당한 장해는 특별히 설계된 다중프로세서 본래의 효율에 대한 장점을 얻을 수 있도록, 시스템내의 정보를 충분히 고속도에서 전달할 수 없기 때문에 초래된다.
시스템 성능에 대한 다른 제한은 CPU가 단일기게 사이클동안 처리할 수 있는 오페란드의 크기이다. 미합중국 특허 제4,206,503호에 기술된 바와같이 CPU는 16비트 워어드로 제한되었다.
따라서, 본 발명의 목적은 데이타처리 시스템의 처리능력을 더욱 증가시키는 것이다.
본 발명의 추가의 목적은 더큰 크기의 오페란드를 처리하기 위한 개선된 CPU를 제공하는 것이다.
본 발명의 또 다른 목적은 오페란드의 크기를 열거하기 위한 디스크립터를 포함하는 명령형태를 제공하는 것이다.
본 발명의 또 다른 추가의 목적은 오페란드 크기신호와, 제어기억부를 다른 오페란드 크기를 처리하기위한 마이크로프로그램 루우틴으로 연결시키는 제어기억신호에 응답하는 수단을 제공하는 것이다.
데아타 처리시스템은 명령 및 오페란드를 기억하는 메모리 서브시스템과 그리고 오페란드를 메모리 서스비스템으로부터 받아서 명령을 실행하는 중앙처리장치를 포함한다. 명령은 제1및 제2워어드를 포함한다. 제1워어드는 동작코우드피일드와 확장 코우드피일드를 포함한다. 이 동작 코우드 피일드는 CPU가 실행할 명령을 식별하고, 도피코우드피일드는 확장된 정수명령(EII)과 상업용 명령처리(CIP)명령을 포함하는 명령의 종류를 식별한다.
제2워어드는 데이타 형태 피일드와 애드레스 음절피일드를 포함한다. 데이타형태피일드는 오페란드의 형태를 식별한다. EII에서, 데이타피일드는 1비트 스트링, 1디지트, 1/2워어드, 1워어드, 2워어드, 4워어드 혹은 애드레스 오페란드를 가리킨다. CIP명령에서는, 데이타피일드가 1디지트 혹은 1/2워어드 오퍼랜드를 가리킨다. 확장코우드와 관련하여 애드레스 음절은 CPU에 의해 수행되는 계산이 효율적인 오페란드 애드레스를 발생시키도록 수반되는 소자를 가리킨다.
CPU는 마이크로프로그램(퍼엄웨어)제어되며, 마이크로워어드를 기억하기 위한 제어기억부를 포함한다. 이 제어기억부는 명령을 실행함에 있어서 CPU동작을 제어하도록 마이크로워어드를 나타내는 제어신호를 발생하기 위하여 동작코우드 신호에 응답한다.
퍼엄웨어제어하의 명령 실행동안 데이타 피일드신호는 F' 레지스터내에 로우드되어 판독전용메모리(ROM)의 애드레스 단자로 인가된다. 또한 이 애드레스단자에는 다수의 다른 신호가 인가된다. 동작코우드의 상위 비트인 비트위치 4는 EII 또는 CIP 명령중 어느 하나로서의 명령을 식별하는 FREGOO+신호를 발생한다. 제어기억 신호들에 의해 발생된 MEMADR-신호는 오페란드가 메모리 서브시스템에 기억되어 있는 경우를 가르킨다. 만약 MEMADR-신호가 오페란드가 레지스터에 기억되어 있다는 것을 가리킨다면, 제어기억신호에 의해 발생된 신호 MISC7B+는 애드레스 음절1을 거쳐 애드레스 가능한 것 중 하나로서 혹은 애드레스 음절 3을 거쳐 애드레스 가능한 것 중 하나로서의 레지스터를 식별한다.
ROM 출력신호 ODSIZ1+, ODSIZ2+, ODSIZ4+ 와 ODADDR+는 퍼엄웨어에 의해 시험되고, 그 퍼엄웨어를 지시된 데이타 형태를 처리하는 루우틴으로 브랜치한다. 애드레스 음절은 오페란드(IMO)를 나타내는 제3명령워어드나 혹은 오페란드(IMA)를 위치시키는데 사용되는 애드레스로 불리운다.
본 발명의 특성을 나타내는 새로운 특징은 특히 첨부된 특허청구의 범위에 함께 설명한다. 그러나, 본 발명의 구성및 동작은 첨부한 도면과 관련하여 아래의 설명을 참조하면 가장 잘 이해될 수 있다.
제1도는 본 발명이 설명될 CPU가 포함된 시스템 구성의 일반적인 블럭 다이어그램이다. 이러한 시스템은 중앙처리장치(CPU)(100)와, 과학용 명령처리기(SIP)(101)및 상업용 명령처리기(CIP)(102)를 포함할 수 있는 선택적인 프로세서들을 포함한다. 이와같은 선택적인 프로세서들은 특별한 응용을 위해 기본적인 프로세서(100)의 범위를 확장하는데 사용될 수 있다. 이 시스템은 또한 Cache/MMU (캐쉬/메모리관리장치) 장치(103), 전기적인 시스템버스(105), 메모리모듈(주메모리)(106), 입출력장치(108)에 연결된 입출력(I/O) 제어장치(107), 단선통신 제어장치, 즉 프로세서(MLCP)(109)등을 포함할 수도 있다. 또한, 상술된 시스템의 전부 혹은 일부를 포함하는 제2중앙서브시스템(110)이 있는 멀티프로세서를 포함할 수도 있다.
중앙서브시스템 프로세서들은 로칼버스(9)에 의해 연결되며, 캐쉬/메모리 관리장치(103)에 의해 시스템의 나머지로 연결된다. 중앙서브시스템내의 캐쉬/메모리 관리장치(103)의 기능은 프로세서들에 의해서 현재 사용되고 있는 주메모리(106)부를 위하여 버퍼기억부를 제공하고 또한 주메모리 애드레스의 변환을 제공하는 것이다. 지방버스(9)의 기능은 3개의 프로세서와 Cache/MMU (103)가운데의 상호연결을 제공하는 한 각 프로세서로부터 Cache/MMU로도 전용인터페이스가 있다. 로칼버스(9)는 공공인터페이스이며, 시분할 되는데, 즉 예를들면 모두 3개의 프로세서와 Cache/MMU에 의한 분할된다. 더우기, Cache/MMU(103)는 인터페이스를 시스템버스(105)를 통해 시스템의 나머지, 즉 제어장치(107)를 통해 메모리(106)및 입출력장치(108)로 제공한다.
이제, 제2도의 CPU 블럭다이아그램을 보면, 특히 여러가지 전기적인 버스들과 기능적인 장치 그리고 그들 상호관계가 도시된다. CPU의 제1소자들은 점선내에 도시되었다. 제1소자는 국부 버스인터페이스(10)인데, 이것은 데이타버퍼(31), 둥근로빈 순서 기억버퍼(36), 여러가지 순서/데이타워어드, 그리고 소오스 버스(33)는 물론 설명될 다른 장치들에 연결된 애드레스 멀티플렉서(MUX)등이 포함된다. 이 제1소자(10)는 시스템버스(105)로 부터 데이타를 수신하기 위해 활용된다.
제2소자(16)는 연산소자인데, 이것은 DRAM(11)과 BRAM(12)이라고 불리는 2개의 레지스터 정렬(RAM)과 그리고 RAM)(11)및 (12)가 연결되는 RAM, 즉 R버스(13)를 포함하는 몇개의 장치를 포함한다. 또한, BRAM(12)과 기타장치들을 연결하는 입력 혹은 내부 버스(IBUS)(14)도 포함한다. 이것은 또한 DALU(15), 즉 DRAM (11)을 구동시키기 위해 연결된 연산논리장치를 포함한다.
CPU의 제3소자는 외부(0) 버스(17)와 라이트(W) 버스(84), 그리고 이들을 연결하는 시프터(19-1), (19-2)와, 이들을 구동하는 선택기등을 포함한다. 이들 선택기는 DALU/R 버스 선택기(20)와 Y레지스터/P 레지스터(YP) 선택기(21)를 포함한다.
제4소자(27)는 CPU의 어드레스 부분인데, 이것은 순서 애드레스 레지스터(P)(23)와 데이타 애드레스 레지스터(Y)(24)를 포함한다. 또한, 애드레스 멀티플렉서(25)와 사전인출 애드레스 레지스터(26)도 포함한다. 아울러, 소자(27)에는 라이트 데이타 레지스터(W)(28)와 라이트 선택기(WS)(29)가 포함된다. CPU의 이 부분은 로칼버스(9)로 데이타를 전달하기 위해 활용된다.
장치(30)는 CPU의 시험논리부인데, 이것은 제7도에 도시되어 있으며, 제1세트의 8대 멀티플렉서를 포함하고, 이들은 차례로 제2세트의 적어도2개의 8대1 멀티플렉서를 구동하고, 이들은 퍼엄웨어에서의 브랜칭을 제어하는데 사용되는 "시험참" 또는 "시험 거짓"이라 불리우는 단일 2진 신호를 발생한다. 시험참 및 거짓신호는 제5도에 도시된 바와같이, 제어기억 뱅크(80,81)에 포함된 PROM에 연결된다.
다음 애드레스 발생기(44)(제2도는)는 F레지스터(38)과 F버스 (37)에 연결된다. 이러한 다음 애드레스 발생기는 본래 CPU에 사용하기 위한 애드레스를 발생하는데 사용된다.
로칼 버스 데이타 입력 영역에 있는 소자(10)의 기능은 Cache/MMU (103)혹은 로칼버스(9)상의 다른 장치들로부터 복귀하는 데이타를 수신하고, 만약 부우트스트랩순서 실행이 요구되면, 부우트스트랩 PROM으로부터 데이타를 선택하고, 그리고 이러한 데이터를 적절한 데이타 버퍼로 보내는 것이다. 만약 명령적인 인출이 요구되면, 예컨대 데이타는 기능레지스터에 놓여진다. 더우기 제1데이타 버퍼(31)는 16혹은 32비트 데이타워어드를 로칼버스(9)로 부터 수신한다. 이 데이타 버퍼(31)의 출력 L버스(32)로 연결된다. L버스는 한쌍의 선택기(DA,DW)(34,35)를 사용하여 소오스 버스(33)을 구동하고, 그리고 4워어드순서 버퍼(36)를 구동하도록 사용된다. 비순서 데이타는 데이타 선택기로 부터 구동된 소오스 버스(33)를 통해 L버스(32)로부터 CPU로 들어간다.
순서데이타는 순서버퍼(36)로 부터 오는 다른 선택기(PA,PW)(39,40)을 통해서 CPU로 들어간다. 이 순서버퍼는 실행될 순서의 다음 2개의 혹은 3개의 워어드를 포함해야 하는 책임이 있으므로, 상기 워어드들이 필요할때는, 그들을 인출하는데 시간을 소비할 필요가 없어야 한다. 순서버퍼가 CPU에 의해서 비워지면 자동적으로 로칼버스(9)를 통해 Cache/MMU (103)로 부터 다시 로우드 된다.
F버스(37)는 F레지스터, 즉, FOP, FM, FN 그리고 링크로 표시된 4개의 영역에 대한 정보를 게이팅하기 위해 사용되는 특별한 버스이다. 이 F레지스터는 CPU의 제1명령 레지스터이다. F버스(37)의 기능은 F레지스터(38)로 부터 데이타를 가져와서 여러가지 소오스들로 부터 F레지스터로 데이타를 제공하는 것이다 또한, 소자AS(42)로 부터의 상수 혹은, 데이타중 어느 하나의 로우딩을 F레지스터(38)의 링크 또는 FN위치중 어느하나 내로 허용하는 멀티플렉서(43)가 있다.
또, 데이타입력 영역인 소자(10)에서, 부우트스트랩PROM들이 부우트스트랩모드로 작동할 경우 메모리로 부터의 명령대신에, 명령들을 제공하기 위해 사용될 수 있다.
A,B,C 그리고 D위치를 갖는 기억장치(순서기억)(36)는 둥근로빈 4워어드 순서기억부이다. 이것은 2워어드 순서에 대한 장소, 즉, 적어도 반이 비어있을때 마다 자동적으로 Cache/MMU로부터 지방버스(9)를 통해서 메모리 판독순서진행을 시작한다. 복귀 데이타는 이 둥근로빈 기억부에서 이용 가능한 다음 2개의 위치로 들어간다. CPU가 상기 복귀 데이타를 CPU의 처리소자내에 사용하기 위해 소오스버스(33)로 방출하거나 혹은 상기 복귀 데이타도 명령의 일부이기 때문에 F레지스터(38)로 보내는 순서를 사용할때, 둥근로빈 기억부에서 효과적으로 커서(cursor)를 나타내는 2개의 포인터(36-1), (36-2)는 4개의 위치를 출력장치(36)로 연속적으로 인에이블하는 장치(36)에 포함된 콘덕터의 사용으로 이용할 수 있는 다음 위치로 진행한다. 좌측 커서, 즉 포인터(36-2)는 인출될 다음 순서 워어드를 가리키며, 우측커서(36-1)는 그것에 뒤따르는 워어드를 나타낸다. 때때로 하나의 순서워어드가 사용 되는데, 그 경우에는 좌측 커서에 의해 지시된 워어드가 정보를 발생시켜 PW 멀티플렉서(40)를 통과시키도록 사용된다. 때때로 2개의 순서워어드에 대한 요구도 있을 수 있는데, (즉, 큰 애드레스 형태(LAF)를 끄집어 낼때), 그러면 좌측과 우측커서 양자에 의해 지시된 워어드들은 순서선택기의 멀티플레서(39)에 결합된다.
따라서, 소자(10)는 데이타 선택기(34,35)나 또는 순서선택기(39,40)에 의해 소오스 버스(33)을 통해 CPU로 데이타를 가져오든지 혹은 순서버퍼(둥근 로빈 순서기억부)(36)와 F버스(37)에 의해 데이타를 직접 명령(F) 레지스타(38)로 가져오는데 관계되는 영역이다. 장치(F')(76)는 보조애드레스 정보, 즉 음절로부터 선택된 비트를 유지하도록 사용된다. 애드레스 음절은 실질상 16-비트 데이타 디스크립터의 일부분이다. 디스크립터내의 어떤 비트들은 다음의 분석을 위해 계속유지되어야 한다. CIP디스크립터내의 오페란드 크기 비트와 K레지스터 디스크립터내의 부호가 표시된 비트내 부호가 표시안된 비트들이 유지되어야 한다. 이러한 것은 5비트 레지스터(76)에서 유지된다.
제2소자(16)는 연산논리장치(DLLU)(15)와, 다수의 비프로그래머가시작업 레지스터를 합한 모든 프로그라머 가시 레지스터를 포함하는 BRAM(12)과 DRAM(11)을 포함한다. 이와같은 데이타 기억소자들은 다음과 같이 구성된다. RAM버스(13)을 구동시킬 수 있는 두개 소오스중의 하나인 DRAM(11)은 32위치들을 갖는데, 이러한 각각의 위치는 24비트를 갖는다. 이와같은 위치들은 7개의 소위 D레지스터와, 32비트 길이인 7개의 소위 K레지스터중의 2개반(K 및 L)과, 다수의 내부포인터와, 그리고 7개의 소위 M레지스터들을 유지하도록 사용한다. 각 24개의 비트 폭을 가진 16워어드를 포함하는 BRAM(12)은 여러가지 형태의 프로그래머가시 포인터와 프로그래머비가시 포인터를 합한 7개의 리본레지스터를 포함한다.
제3도는 RAM들고, 버스들및 DALU(15)사이의 관계를 더욱 상세하게 도시한다. DRAM(11)과 BRAM(12)은 각각 RAM버스(13)에 소오스가 될 수 있다. BRAML(12)은 실제로 2중 구조인데, 즉, CPU에는 두개의 병열 BRAM(60,61)이 있다. BRAM(120의 두개의 소자는 동일하게 로우드된다. R버스(13)을 구동하거나 R버스(13)에 데이타를 전달하는 이런 소자중의 하나가 소자(60)이고, I버스(14)를 구동하는 다른 하나는 BRAM 소자(61)이다. 두개의 동일한 BRAM의 중용한 특징은 시스템속도가 증가된다는 점이다.
버스(13)는 BRAM(60)이나 DRAM(11)중 어느 하나에 의해서 구동될 수 있다. 또한 다른 소오스들은 I버스(14)을 구동시킬 수 있다. DALU(15)는 DALU의 입출력이 DRAM에 재사이클되거나 CPU의 다른곳에 사용될때 I버스와 K버스를 사용한다.
소자(16)는 주요관심사인 2개의 버스를 포함한다. 소위 I버스(14)는 프로세서내에 있는 원입력의 주소오스인데, 즉 메모리로 부터의 데이타를Q레지스터(50)의 출력과 BRAM(12)의 출력이 구동기(54)를 통과할때 상기 버스속으로 들어오게 한다. 제2버스, 소위R 또는 RAM버스는 두개의 다른 RAM, BRAM(12)의 출력과 DRAM(11)의 출력이 연결되는 지점이다. 이러한 두개의 버스 출력은 DALU(15)의 입력이며, 이것은 DALU(11)으로 복귀되거나 혹은 시스템내의 추가의 처리를 위해 0버스로 보내 질수 있는 데이타를 발생시킨다.
I버스와 RAM 버스는 둘다 "배트래치"(BL)로서 언급되는 하드웨어 소자를 사용하는데, 이것은 버스위로 신호를 연결시키기 위하여 입출력 단자가 함께 묶여 있는 게이트이다. 이 배트래채는 구동소오스가 타이밍이나 시이킨싱을 위해 버스의 기능을 멈춘후 버스신호 제어를 대신하기 위해 사용된다. 이러한 일이 발생할때, 배트래치는 구동소오스가 있을때 있었던 준위와 똑같은 준위의 신호를 배트래치가 턴 오프 될때까지 공급한다. 이러한 배트래치는 버스신호가 예정된 0전압과 같은 준위로 될때 턴오프된다. RAM버스(13)는 중앙처리장치와 제어반(90)사이로 데이타를 전달하기 위한 인터페이스이며, 16개의 양방향 신호선을 통해 연결된다. 메모리 데이타는 데이타래티(DL)(51)로 불리는 구동기들을 통해서 I버스(14)로 연결시킨다. 상기 데이타 래치들은 SE 또는 부호 확장래치(52)라고 불리는 제2의 직렬 래치들에 의해 병열로 된다. 이러한 SE래치들은 이들이 24-비트 버스에 단지 16-비트량을 제공할때 데이타 래치를 부호 있게 혹은 부호없이 확장하기 위해 사용된다. 마찬가지로 SE 논리부(52)는 현재 명령를 7비트 혹은 8비트중 어느하나를 취해서, 그것을 브랜치로 사용하기 위해 24비트까지 부호 확장하고, 명령워어드와 우측부분으로 부터 각기 변위와 오페란드를 얻는 명령을 평가하기 위해 사용된다.
또한, 선택/수정논리부(53)라고 불리는 BRAM(12)과 DRAM(11) 논리부와도 관련되고, 이것은 개별적인 레지스터 선택응 제어하기 위해 명려에 여러가지 피일드를 사용하여, DRAM과 BRAM을 8개의 레지스터 블럭내에 애드레스되게 한다.
상부발생기(KON)(70) 역시 제1 ALU영역인 소자(16)에 포함되며, I버스(14)에 대한 또다른 소오스, 즉 퍼엄웨어의 제어하에 연산논리 장치로 사용하기 위해 버스위에 24비트 상수를 발생시키도록 사용될 수 있는 소오스이다.
따라서, 소자(16)는 CPU에서 제1연산 작용영역인데, 즉 이것은 오페란드의 조작과 DRAM(11)으로 삽입하기 위한 오페란드의 발생과 관련이 있거나, 혹은 BRAM(12)으로 복귀되게 하거나 로칼버스(9)로 출력시키기 위한 여러가지 애드레스 및 데이타레지스터로 보내게 하는 둘중 하나로서 0버스(17)로 보내는 오레란드와 관련이 있다.
소자(22)는 주로 외부(0) 버스(17)와 라이트(W) 버스(84)로서 언급되는 CPU선택 부분과 관계된다. 0버스(17)는 여러가지 경로들이 모여진 버스인데, 즉, Y레지스터(24), P레지스터(23), DALU(15)의 출력과 RAN버스(13)들이다. W버스(84)는 오퍼랜드를 BRAM(12)과 라이트데이타 레지스터와, 그리고 주로 애드레스 조작을 하는 ALU인 BALU(55)로 전달하기 위해 사용되는 버스이다.
0버스(17)와 W버스(84)사이에는 0버스(17)오페란드 위에서 어느 한 방향으로 1,2혹은 4비트의 자리이동을 시킬수 있는 24개의 멀티 플레싱 시프터들이 있다. 아울러, Q레지스터(50)로 오페란드를 로우드하기 위해 사용되는 16개의 멀티플레싱 시프터(56)도 있다.
0버스(17)에 소오스가 되는 4개의 다른 형태의 오퍼란드중 2개는 DALU(15)와 RAM버스(13)에서 발생하며, 0버스(17)에 연결된 2대1 멀티플레서(20)를 통해 선택된다. 0버스(17)에 대한 다른 2개의 소오스는 데이타 애드레스 레지스터인 Y레지스터(24)와 순서 애드레스(P) 레지스터(23)이다. 이러한 2개장치들의 출력은 0버스(17)위에 소오스가되며 2대1 멀티플렉서(Y/P 선택기)(21)를 통해 연결된다. 또한, 0번스(17)에는 I레지스터(57)와 중앙처리서브시스템에 대한 지시레지스터가 연결된다. 0버스(17)의 내용은 CPU에서 추가의 처리를 하도록 W버스(84)로 직접 전달되거나 혹은 자리이동되어 전달된다. 그들은 또한 Q레지스터가 자리이동 동작을 2중으로 정밀하게 하도록 사용되므로 Q레지스터(50)에 직접 로우드된다.
CPU내에서 발생하는 모든 자리이동은 0버스(17)와 W버스(84)사이의 오페란드의 조작으로 발생한다. 24개의 시프트(19)는 24-비트 오페란드와 0버스(17)및 W버스(84)상의 이 오페란드의 크기를 제어기억 워어드의 제어하에 좌측 또는 우측으로 시프트하기 위해 사용된다. 그들은1,2혹은 4비트 위치만큼 쉬프트 시킬수 있으며, 직접 오페란드를 전달하든지, 혹은 상호 변경된 오페란드의 2개의 우측 바이트를 통해 오페란드를 전달할 수도 있다. 이러한 시프터들의 동작은 제어기억 워어드에 있는 특별한 피일드에 의해 제어된다. CPU의 이 부분은 24-비트 오페란드 시프터를 위해 사용된다. 32-비트(이중 레지스터) 오페란드나 시프트될때, 우측 오페란드는 0버스(17)를 통해 Q레지스터(50)로 로우드되고난 다음 W버스 시프터(19)뿐만 아니라 16개의 Q레지스터 시프터(56)에서 시프트가 수행된다. 따라서 Q레지스터 내용은 W버스(84)로 자리 이동중인 24-비트 오페란드의 우측 단부에의 16비트 확장으로 취급되는데, 이러한 2개의 시프터의 단부를 함께 연결되게함으로써 40비트의 자리이동을 시킬 수 있다. 이와같은 이중 레지스터 시프트에서의 관련 오페란드는 Q레지스터(50)로 복귀되는 16비트이고, 또한 0버스(17)의 우측 2개의 바이트에 전달되는 16비트인 반면에 W버스(84)의 좌측 8비트 데이타는 보통 폐기된다.
소자(75)는 어떤 상태하에서 구동기(95)를 통해서 W버스(84)로 방출하는데 필요한 CPU에서의 상태 비트의 집합을 나타낸다. W버스(84)는 2개의 소오스를 갖는데, 중요한 것은 0버스(17)로 부터의 시프터(19)이다. 이 시프터(19)는 버스(88)에는 압력으로 사용될 수 없으며, 대신 소자(75)에서의 상태 비트(S/Z)가 퍼엄웨어에 의한 다음 분석을 의해 W버스(84)위에 놓일 수 있다.
전술되지 않는 레지스터(50)와 관련된 하나의 하드웨어장치는 XB레지스터(58)와 여기에 연결된 디코더(59)이다. XB레지스터(58)는 인덱스 시프팅 동작동안 서브워어드 오페란드를 위해 오른쪽으로 시프트되는 인데스 비트들과, 애드레스에서 인덱스 비트가 단일 워어드비트의 오른쪽으로 이동하기 때문에 잃게되는 인덱스 비트들을 잡아두기 위해 사용된다. XB레지스터(58)에서는 1/2워어드 비트에 대한 1비트, 디지트 시프트에 대한 2비트, 그리고 비트 크기의 오페란드 시프트에 대한 4비트를 잡아둔다. 다음, XB레지스터(58)내용은 반-워어드 오페란드를 다룰때와, 디지트 오페란드에 대한 상업용 명령처리로 보내어질 매개변수를 발생할때는 좌측 대 우측 반의 선택을 직접 제어하기 위해 사용되며, 비트 오페란드 상에 동작할때는 디코더(59)와 관련하여 15개 2진수 0과 1개의 2진수 1로 구성된 마스프를 발생하기 위해 사용된다. 즉, 비트오페란드의 경우 한 워어드가 판독되고, 한 마스크는 워어드에서 선택된 비트를 세트시키거나 클리어시키기 위해 사용되고, 이어서 워어드가 메모리속으로 다시 라이트된다. 마스크는 디코더(59)로 부터 발생되며, Q레지스터(50)에 대한 입력이다. 즉, Q레지스터 속으로 로우드될 수 있는 항목들중의 하나가 XB레지스터(58)의 내용으로 부터 발생된 디코더 마스크이다.
CPU내의 제4주요 소자는 영역(27)인데, 이것은 로칼(9)와, 이 로칼버스를 거쳐서 CIP(102), SIP(101)중 어느 하나나 혹은 Cache/MMU (103)와 그리고 메모리 혹은 입출력(I/O)장치 (108)로 전송될 오퍼란드, 명령, 그리로 애드레스를 발생시키는 일을 한다. 이 주요소자는 대략 3영역으로 분리되며, 라이트 데이타 레지스터(W)(28)와 라이트 선택기(WS)(29)로 분리 된다. 이 레지스터(28)는 부분적으로 로우드능력을 갖는 32비트 레지스터이다. 즉, 좌측반이나 우측반, 아니면 이 레지스터의 양쪽반이 로우드될 수 있다. 우측반은 구동기(74)을 통해 W버스(84)의 16비트로부터 항상 로우드된다. 좌측반은 라이트 선택기(29)로 부터 오는 데이타와 함께 라이트된다. 이 라이트 선택기는 16개 입력으로, W버스(84)의 우측반은 16비트나 혹은 부호 확장 또는 0확장중 어느 하나를 덧붙여 W버스와 좌측 8비트중 어느하나를 가진다. W버스는 로칼버스(9)에 연결된 어떤 다른 장치로 데이타를 라이트 하도록 W레지스터(28)에 데이타를 보낼 수 있는 기본경로이다.
로칼버스추리력 인터페이스(27)내의 다음영역은 명령구동기(71)이다. 이 명령구동기(71)는 CPU에 의해 로칼버스위로 모든 전송을 수행하는 일련의 지령선들을 구동하며, Cache/MUU (103)에 메모리 기준사이클, 입출력(I/O)사이클, 혹은 Cache/MUU 에나 로칼버스 처리 장치중의 하나에 로칼버스 기준사이클을 지시한다. 지령선들로 전송되는 정보는 제어기억부 혹은 제4도에 도시된 퍼엄웨어(FW)워어드의 F와 FK피일드로부터 들어오며, 또한 다른때에는 소자(10)의 F레지스터(38)의 기능을 한다.
제3소자(27)부분은 다음과 같은 2개의 주요 애드레스 레지스터들을 포함한다. 즉, 비순서적 메모리 애드레스들과 로칼버스및 시스템 버스상의 다른장치의 애드레스들을 위한 Y레지스터(24)와, D레지스터(프로그램 카운터)(23), 그리고 사전인출 레지스터(26)이다.
P카운터(23)는 퍼엄웨어가 사용된 최종워어드의 트랙을 유지하고, 그 워어드는 동군로빈버퍼(36)로 부터 얻어져서 다음동작을 위해 CPU(100)에 입력된다. 사전인출 레지스터(26)는 메모리로부터 다음에 인출될 워어드의 트랙을 유지한다. 즉, P와 PF레지스터는 둥근로빈 버퍼가 얼마나 가득찼느냐 그리고 중앙처리시스템이 버퍼로 부터 데이타를 얼마나 최근에 꺼냈느냐에 따라 1-4워어드 만큼의 메모리 애드레스가 달라질 수 있다. 만약 중앙처리시스템이 버퍼러 부터 모든 데이타를 꺼냈다면, Cache/MUU (103)는 요구에 따라 새로운 데이타에 응답하고, 다시 버퍼(36)를 채우는데 유한한 양의 시간이 소요된다. 이에 따라 사전인출 레지스터(20)와 P카운터, 즉 레지스터(23)의 애드레스는 서로 근접하게 되던지 혹은 애드레스 내용이 같아질 것이다. 버퍼(36)가 채워지고 CPU(100)가 최근에 데이타를 꺼내지 않았다면, P레지스터는 사전인출 레지스터에 어떤 데이타위치가 생기자마자 메모리로 부터 보내질 다음 워어드를 가리키는 사전인출 레지스터로 부터 취해진 마지막 워어드를 가리키고 있기때문에 사전인출 레지스터보다 2~4워어드 뒤질 것이다.
P레지스터(23)의 내용은 결코 메모리 애드레스 소오스로서 로칼버스(9)에 받아지지 않는다. 가상 애드레스 멀티플렉스(25)를 거쳐 로칼버스로 갈 수 있는 데이타에 대한 2개의 소오스느 모든 비순서 인출에 사용되는 Y레지스터(24)와, 다음 퍼엄웨어 단계에 사용되는 워어드를 요구하고, 메모리로 가도록 하기 위해 사전인출 논리부에 의해 자동적으로 사용되는 사전인출 레지스터이다.
장치(23, 24, 26)위의 화살표들은 상기 특정 레지스터의 증분능력을 가리킨다. 즉, P레지스터는 동시에 사전인출 버퍼(36)로 부터 꺼낸 워어드의 수에 따라 1또는 2개의 워어드중 어느 하나 만큼 증가할 수 있다. 즉, 사전인출(36)버퍼로 부터 한 워어드를 꺼내면 자동적으로 P레지스터는 1만큼 증가하며 사전인출 버퍼(36)로 부터 2개의 워어드를 꺼내면 P레지스터는 2만큼 증가한다. 사전인출 레지스터(26)는 사전인출을 언제나 한쌍의 워어드로 수행되게 하기 때문에 항상 2만큼씩 증가한다.
Y레시스터는 현재 사용되거나 앞으로 사용하게 하기 위해서 퍼엄웨어 제어하에 1또는 2중 어느 하나만큼 증가할 수 있다. 퍼엄웨어 워어드에는 이러한 증분과 여러가지 사이클 요구를 로칼버스로 제어할 수 있는 버스제어피일드가 있다.
W레지스터(28)에 입력들은 여러가지 방법으로 수행되는 2개의 16비트 데이타경로이다. 만약 24비트 애드레스를 라이트하려면, 구동기, (74)는 W버스 우측 16비트가 W레지스터의 우측 16비트로 전달되게 하도록 턴온된다. 멀티플렉서(29)는 W버스의 좌측 8비트와 8개의 0들이 W레지스터(28)의 좌측반으로 방출되도록 조절되게 한다. 이것은 다음 메모리로 라이트하기 위해 2개의 워어드 및 24비트 애드레스를 W레지스터속으로 로우드한다. 만약 메모리에 한개의 워어드를 라이트 시킬 경우, W레지스터의 우측반은 클록되지 않아 변하지 않으며, 멀티플렉서(29)는 W버스의 우측 16비트를 클럭이 들어오는 W레지스터의 좌측 16비트로 인 에이블하도록 조절된다. 단일 워어드의 경우는 W레지스터의 좌측 반이 메모리로 라이트되는 데이타를 라이트시킨다.
지금까지 설명된 논리부는 Cache/MUU (107), CIP(102)혹은 SIP(101)와 같은 다름 엔티티들로부터 데이타를 요구하고 받아들이기 위해, 시스템이 포함된 2개의 ALU를 거쳐 여러가지 레지스터에서 데이타를 동작시키고 기억시키기 위해, 그리고 다시 변경되어 지방버스로 보내진 새로운 오페란드를 CPU 내부에서 계산되고 지방버스를 제어하도록 사용되는 엔티티들중 하나로 발생시키기 위해 사용된다. 이와 같은 모든 동작은 CPU에 포함된 워어드 제어 기억부(80, 81)당 2,048 워어드×96비트로 기억되는 제어용 퍼엄웨어의 제어하에 수행된다.
제어기억부(80, 81)는 다수의 매별 피일드로 분할되는데, 이와같은 각각은 CPU의 내부성능중 어떤것을 제어한다. 제4도는 퍼엄웨어 워어드와 여러가지 대상 피일드를 도시한다. 이들 피일드중 첫번째는 제어기억부의 비트(0-7)에 해당하는 로칼버스(LB) 피일드이다. 이 LB 피일드는 로칼버스(9)로부터 여러가지 사이클을 요구하는 일과 그것에 응답에 관련된다. 또한 사전인출 레지스터(26)나 혹은 Y레지스터(24)를 통해서 가상 애드레스를 방출하고, 그리고 Y및 P 레지스타의 여러가지 증가를 제어하는 일을 한다.
또한, 로칼버스 피일드는 둥근 로빈 순서 버퍼(36)로 부터 데이타를 연속적으로 판독하는 일을 제어하고, 다음 I버스(14)로 사용할 수 있도록 소오스버스(33)상에 각기 데이타 및 순서 멀티플렉서(34, 35, 39, 40)를 구동하는 일을 제어한다.
다음 피일드, 클록(CK)피일드, 제어기억부의 비트 8 및 9는 CPU 클록속도를 제어하기 위해 사용되는데, 예를들면 CPU에서 연속 클록펄스들간의 간격을 제어한다. 각각의 퍼엄웨어 단계는 CPU의 복잡성에 적당히 클록속도를 조절되게 한다. 본 발명의 시스템에서는 연속클록펼스들 사이에 4가지 가능한 간격이 있는데, 즉 96나노초, 105나노초, 130나노초 혹은 170나노초이다. 이러한 간격들은 피엄웨어 단계를 위해 사용되며, 그때의 피엄웨어단계를 위한 CK 피일드에 의해 제어된다.
다음 피일드는 제어 기억부의 비트(10-15)에 해당하는 TC피일드이다. 이것은 6비트 피일드이며, 퍼엄웨어 사퀸스의 시험 및 제어를 위해 CPU내에서 64가지의 가능한 논리기능중의 하나를 선택한다.
다음 피일드는 비트(17-19)에 해당하는 BR피일드이다. 이것은 시험상태의 결과로서 얻어진 동작형태를 제어하기 위해 사용되는데, 즉 예를들면 브랜치가 간단히 2개의 퍼웜웨어 단계사이를 선택할 것인지, 아니면 퍼엄웨어 단계 및 소위 제어저장스프래터(splatter) (다음 애드레스가 F레지스터(38)내용의 몇가지 기능에 의해 제어되도록 CPU내의 하나 이상의 논리소자 상태에 입각하여 다수의 제어기억부 다음의 애드레스중 하나를 발생함)사이를 선택할 것인지의 여부에 따라 어떠한 형태의 브랜치가 발생되는 것을 제어하기 위해 사용된다.
다음 대상 피일드에 해당하는 TP 피일드의 비트 21은 시험극성 피일드이다. 이것은 시험상태가 진실인지 거짓인지의 여부를 결정하기 위해 시험될지 안될지를 제어한다.
비트(22-31)에 해당하는 NA피일드는 모든 브랜치들에 의해 선택된 2개의 애드레스중에 최소한 한개를 발생시키기 위해 사용되는 10-비트 피일드이다. F와 FK피일드들은 F레지스터에서와 F버스의 영역에서 여러가지 소자들을 로우딩하고 스토로빙 하는 일을 제어하는데 사용되는데, 예를들면, F와 AS'장치, 즉 F레지스터(38)및 멀티플렉서(43) 보조부분의 스트로빙을 제어하기 위해 사용된다. 이러한 장치들이 로우드되고, 이렇나 로우딩을 위해 이들이 갖는 소오스들을 모두가 F와 FK피일드들에 의해 제어된다.
다음 피일드 비트(40-47)에 해당하는 K피일드(즉 상수)이며, I버스(14)를 구동하기 위해 사용된다. 이것은 I버스에 받아들여지는 모든 상수에 대해 우측 8비트를 제공하는 8비트 피일드이다. 상수의 왼쪽 16비트는 후술된 I버스에 의해 제어된다. K피일드는 직접 KON장치(70)에 관련된다.
제어기억부에서의 다음 피일드는 비트(48-63)로서 주로 DRAM(11)과 BRAM(12)의 애드레스 지정과 제어에 관련된다. 2-비트 피일드(DW)는 DRAM속으로 라이트하는 일을 제어하기 위해 사용되는데, 첫번째 1비트는 DRAM의 가장 좌측 8비트 속으로의 라이트 동작을 제어하고 다른 1비트는 두번째 가장 우측 16비트속으로 라이트 동작을 제어한다. 다음 비트, 즉 비트50(피일드BW)는 BRAM의 양쪽부분으로 라이트 작용을 제어하기 위해 사용된다. 다음 피일드(DS)는 5비트 길이이며 DRAM(11)내의 32개 레지스터중 1개을 선택하는 일을 한다. DM피일드, 즉 비트 56과 57은 DRAM과 관련된 선택/수정피일드이며, 직접적으로 DRAM을 선택할 수 가 있던지 혹은 DRAM애드레스 지정을 제한하기 위한 F레지스터(38)의 3가지 다른 기능중 어느것을 선택할 수 있다.
다음 대상피일드는 비트(60-63)로서 BRAM에서 16개의 레지스터중 1개를 선택하기 위해 사용되는 B선택피일드(BS)이다. 비트 58과 59로 이루어진 2비트 피일드는 BRAM애드레스 지정을 위한 선택/수정 피일드(BM)이다. 이것은 독립적은 선택및 수정기능들이 BRAM과 DRAM양자에 지정될 수 있도록 분리된다는 사실을 제외하고는 BRAM애드레스 지정하기 위한 것과 유사하게 수행한다.
다음 피일드 7비트길이(비트65-71)인 GP피일드이며, 여러가지 제어기능 여러가지 쌍안경 플립플롭의 클록킹과 여러가지 제어기능의 인에이블링과 같은 프로세서 내에 수많은 일반적인 목적의 마이크로 동작을 제어하기 위해 사용된다. 또한, CPU로 부터 제어반(90)에의 액세스를 제어하고, 제어반에 데이타를 입출력시키며, 여러가지 플립플롭들을 제어하기 위해 사용된다.
다음피일드는 비트 72와 73인 RB피일드이며, R버스(13)위로 데이타를 소오스하는 것을 제어하기 위해 사용되는데, 1비트는 BRAM을 제어하고, 다른 1비트는 DRAM를 제어한다.
비트(74-79)인 BA피일드는 Y레지스터(24)를 구동시킬 수 있고, 입력으로 I버스와 W버스를 갖는 연산논리장치(BALU)(55)의 기능을 제어하기 위해 사용된다. 이러한 6비트는 다음과 같이 사용된다. 즉, 하나는 자리올림 인젝트로서 BALU에, 또 하나는 논리/연산제어를 위해, 그리고 다른 4개는 특별하 기능을 선택하기 위해 사용된다.
다음 대상피일드는 비트(80-83)인 IB피일드이며, 데이타 소오스가 I버스(14)로 인에이블되는 것을 제어하기 위해 사용된다. 이난은 데이타 래치들과 부호확장 F레지스터를 인에이블 시킬 수 있거나 혹은 I버스에 여러가지 조합으로 상수 혹은 BRAM을 선택할 수 있다.
다음 피일드는 비트(84-89)인 SH피일드로서 앞에서 설명한 시프터와 W버스 소오스동작을 제어하기 위해 사용된다. 6비트는 어떤 레지스터가 W버스로 인에이블되며, Q레지스터를 로오드하는 지의 여부와 그리고 시프터가 오퍼랜드를 통과시킴에 따라 어느 방향으로 자리 이동시키는지에 대한 많은 양의 자동제어를 시스템으로 하여금 가능하게 한다.
최종 피일드는 비트(90-95)로서 DA피일드이며, DALU(15)에 대한 기능을 제어하는데, 6비트는 BA피일드에서의 기능과 유사한 기능, 즉 하나의 1비트는 자리올림인 젝트이고, 또 하나는 1비트는 논리대 연산을 선택하고, 다른 4비트는 특별한 기능을 선택한다.
CPU에 대한 제어기억부는 실제로 2개의 제어인데, 즉 상하부 뱅크(80, 81)이다. 상부 뱅크는 다음 애드레스 발생기(44)에 의해 애드레스 지정되며, 하부뱅크는 현재 제어기억 워어드의 내용일부에 의해서 직접 애드레스 지정된다. 좀더 일반적인 형태의 브랜치의 경우에는, 둘다 다음 애드레스의 기본 소오스로서 제어 기억워어드의 피일드를 사용하고, 상하부뱅크로 가는 2개의 애드레스가 실질상 동일 하도록 몇가지 방법으로 제어기억워어드를 수정한다. 다음 브랜치들의 경우, 즉 PROM 발생기 스프래터와 다음 애드레스 사이를 선택하는 브랜치들에서는, 하부뱅크는 현재 제어기억워어드로 부터 변경되지 않는 다음 애드레스피일드를 수신하는 반면 상부뱅크는 현제 제어기억워어드로 부터 스프래터 애드레스를 수신한다.
제어기억부는 이와같은 방법으로 분리되어 있어서 시스템이 2개의 가능한 다음 애드레스 제어기억워어드에 대한 동시액세스를 할 수 있으며, 제어레지스터(82)에서 데이타를 콜록킹하기 바로전에, 현재 제어기억단계의 거의 끝까지 어느 애드레스를 사용되게 할 것인가의 결정을 연기시킬 수 있다. 제어기억의 상세한 것은 후술될 것이다.
이제, CPU와 퍼엄웨어가 다음과 같은 어떤 전형적인 중앙처리동작을 수행하기 위해 상호작용하는 방법을 설명한다. 즉(a) 메모리로 부터 워어드를 판독하고,
(b) 메모리로 부터 또 다른 워어드를 판독하기 위해 다음 애드레스를 계산하고,
(c) 메모리 속으로 워어드를 라이트하고,
(d) 전적으로 CPU내부에서 어떤 형태의 반복적인 동작을 수행하는 방법들이 이제 설명될 것이다.
주어진 상황들은 보편적인 것이며, 주요동작을이 설명될 것이다.
제어기억단계 동안 메모리로 부터 워어드를 판독하는 경우,
제어기억 워어드는 BRAM(12)으로부터 워어드의 가상 메모리 애드레스를 RB, BS, BM피일드를 거쳐 RAM버스(13)위로 인에이블 할 것이다. SH피일드는 그 다음 0버스와 W버스소오스를 조절해서 선택기(20)를 통해 RAM버스가 0버스(7)로 인에이블되도록 한다. 그리고 다음에 시프터(19)를 거쳐 W버스(84)상에서 불변된다.
버스는 이것의 입력을 직접 출력으로 인에이블하는BA 피일드에 의해 조절되는 것으로 BALU(55)에의 입력이 된다. 동시에 LB 피일드는 Y레지스터(24)를 로오드되게 하여 Y레지스터로 애드레스를 전달되게 한다.
다음 퍼엄웨어 단계에서, LB피일드는 메모리 요구가 필요하다는 것과 로칼버스로 제공된 애드레스가 이러한 요구를 하도록 사용되어야 한다는 것을 가리키는 로칼버스로 요구신호가 직접 전달되게 한다.
지령선(71)은 F와 FK피일드(제2도 박스(72)로 도시됨)에 의해 메모리 판독 요구가 필요하다는 것을 지시하도록 조절된다. 어드레스 멀티플렉서(25)는 24개의 애드레스선들을 통해서 로칼버스위로 Y레지스터의 내용을 인에이블 하도록 조절된다. 로칼버스위의 모든 활동을 감시하고 제어하는 Cache/MMU 메모리는 그 요구를 수령하는 반면 CPU는 다음 퍼엄웨어단계로 진행한다. 다음 퍼엄웨어 단계에서, 로칼버스 사이클의 종료로서 로칼버스를 통해 Cache/MMU에서 CPU데이타 버퍼속으로 데이타를 복귀시키는 것을 검출되게 할때까지, 로칼버스 피일드는 CPU가 이러한 퍼엄웨어단계를 떠나지 않도록 가리키는 지연을 열거할 것이다. 이 복귀 사이클 이 검출되면 곧바로 지연이 끝나고 CPU는 이러한 판독사이클의 4번째 단계로 들어간다.
4번째단계는 데이타버퍼에 있는 데이타를 사용하고 그것을 CPU로 사용하기 위해 I버스 위로 소오스하는 LB피일드를 퍼엄웨어가 열거하는 단계이다. 따라서, LB피일드는 길이가 16비트인 한 워어드나 혹은 길이가 24비트인 한 애드레스가 소오스 버스위에 필요한지의 여부에 따라 DA구동기(34)나 혹은 DW 구동기(35)중 어느 하나를 인에이블 시킨다. 다음, I버스 피일드는 모두 24비트이든지 아니면 24로 부호확장된 16비트이든지간에 소오스 버스가 I버스위로 인에이블 되도록 열거할 것이다. I버스에서, 데이타버퍼로 부터 되돌려 받게될 16비트 워어드가 있다고 가정하면, DA피일드는 DALU를 I버스로 판독하는데 사용되고, DW및 D선택부와 DM피일드는 DRAM에 있는 32개의 레지스터중 어느 한계로 애드레스 및 라이트하도록 제어된다. 이렇게 되면 이 제어사퀸스의 4가지 단계를 완성하게 되는데, 즉 첫번째는 Y레지스터를 로우드하고, 두번째는 판독요구를 하고, 3번째는 되돌아오는 데이타를 기다리고, 4번째는 그 데이타를 취해서 CPU에 있는 레지스터 들중의 하나로 인에이블 되게 한다.
시스템에 의해서 수행될 수 있는 동작의 두번째 전형적인 시퀸스는 메모리부터 인출된 오페란드를 데이타 레지스터중의 하나에 가산하고, 그 가산후에 데이타 레지스터로 복귀시켜, 라이트 데이타 버퍼속에 놓은 다음, 메모리속에 라이트되도록 하는등의 연산동작으로 오퍼랜드를 조작하는 것이다. 이 동작사퀸스는 상기 동작에서 언급되었던 지연다음에 시작한다. 이러한 단계는 데이타를 워어드 오퍼랜드의 경우에 워어드를 L버스와 데이타 멀티플렉서(35)를 통해 데이타버퍼(31)로 부터 소오스 버스로 인에이블하는 단계이다. 그 다음, I버스 피일드는 부호확장장치(52)를 통해 부호 확장된 소오스 버스와 데이타 래치(51)가 I버스위로 인에이블되게 열거한다. 동시에, R버스 제어피일드는 특별한 데이타 레지스터가 DRAM(11)으로부터 R버스(13)로 인에이블되게 열거한다. DA피일드, 즉 DALU 제어 피일드는 DALU가 R버스(13)위의 24비트를 I버스 (14)위의 24비트로 가산하도록 조절된다. 이 논리부(15)는 그것의 출력으로 합을 나타내는 24비트를 갖는다. DW비트는 DALU의 출력이 DRAM(11)속으로 라이트되도록 지시한다.
동시에 DALU출력은 SH피일드를 거쳐 W버스로 인에이블 된다. 이 피일드는 선택기(20)가 0버스로 인에이블되게 하고, 그 목적을 위해 R버스 출력대신에 DALU출력을 선택하도록 지시한다. 마찬가지로, 시프터(19-1)는 어떤 변경없이 0버스 내용을 W버스(84)로 통과되도록 조절한다. DW(35)가 소오스 버스(33)로 열거된 동일한 LB피일드로 또한 W버스가 선택기(29)를 거쳐 W레지스터(28)의 좌측반으로 인에이블되도록 열거된다.
이것은 모두 한개의 퍼엄웨어 단계에서 발생한다. 이것은 가산동작이기 때문에 가산으로 부터 생기는 오우버 플로우는 시험논리부(30)에 의해 열거된 시험에 의해 검사된다. 다음 애드레스 논리부는 만약 오페란드가 즉시 메모리로 라이트되어야 할 경우 가야할 특별한 엔트리가 지시하는 하나의 애드레스를 발생한다. 하부뱅크에 있는 다른 애드레스는 I레지스터(57)에서 오우버플로우 지시기를 세트시키는 다음 단계를 취하기 위해 발생된다. 만약 오우버 플로우가 없다면, I레지스터는 자동적으로 클리어된다.
3번째 동작은 오페란드를 메모리로 라이트 하도록 구성하는 것이다. 이것은 3개의 퍼엄웨어 단계를 거쳐 수행된다. 첫번째 단계는 오퍼랜드가 라이트될 애드레스를 Y레지스터(24)로 로우드하는 단계이다. 두번째 단계는 오페란드를 W레지스터(28)로 라이트되게 놓는 단계이다. 세번째 단계는 LB피일드로 하여금 메모리 라이트를 열거하는 로칼 버스요구가 Cache/MUU를 수신및 실행하는 로칼 버스로 애드레스되게 열거하는 단계이다.
Y레지스터(24)를 로우드하는 첫번째 단계는 BRAM랜덤 액세스 기억부내의 16개의 위치중의 하나로 부터 애드레스를 얻는다. 이것은 I버스가 BRAM의 출력을 볼수 있도록 I버스 피일드를 조절함으로서 수행된다. B선택 피일드는 16개의 BRAM레지스터중 이 목적을 위해 어느것이 애드레스 지정되는가를 가리킨다.
BA피일드에 의해서 제어되는 BALU(55)는 I버스의 24비트 내용을 그의 출력으로 통과하도록 조절된다. LB피일드는 Y레지스터에 로우드 하도록 열거된 피일드이다. Y레지스터에의 입력은 BALU의 출력이므로, 이것은 선택된 BRAM의 내용을 Y레지스터로 전달한다. 다음 제어기억단계는 원점이 어디에 있던간에 원점으로 부터, 이경우 예를들어 32개의 DRAM위치중의 하나로부터 오페란드를 취한다. DS피일드는 32개의 DRAM위치중의 어느것을 인에이블 시킬 것인가를 선택한다. RB피일드는 DRAM을 R버스위로 인에이블 시킨다. SH피일드는 RAM버스를 선택기(20)통해 0버스로 선택하고, 0버스를 시프터(19)를 통해 W버스로 자리옮김이 발생하지 않도록 선택한다. LB피일드는 W레지스터의 좌측반을 로우드 하도록 열거한다. 이것은 W버스의 우측 2/3를 W레지스터의 좌측으로 인에이블 하도록 선택기(29)를 조절함으로서 수행되고, 그리고 W레지스터가 그것의 좌측반으로로우드 하도록 인에이블되게 수행된다.
마지막으로, 3번째 퍼엄웨어단게가 수행된다. 이 퍼엄웨어 단계에서는 로칼버스 피일드, LB피일드가 로칼 버스라이트를 메모리로 열거하는 기본동작만이 수행된다. 이것은 이것이 메모리 라이트 동작이라는 것은 Cache/MMU에 알리도록 하기위해 로칼버스로 가는 지령선들로서 F와 FK비트를 사용한다. 애드레스는 가상 애드레스 선택기(25)를 통해 Y레지스터(24)로 부터 지방버스로 인에이블된다. 데이타는 W레지스터(28)로 부터 로칼버스로 인에이블된다. 모든 로칼버스를 중재하는 Cache/MMU는 그것을 메모리 라이트 사이클로서 인지하고, 애드레스를 취하고, 애드레스를 맵(map)하고, 애드레스를 데이타에 의해 수반된 메모리로 보낸다. 그리고 이것은 메모리 라이트 동작이라는 것을 시스템에 알린다.
CPU가 수행하는 전형적 동작중의 4번째 시퀸스는 2개의 정밀 오페란드가 몇개의 비트를 좌측 혹은 우측으로 시프트되게 한다.
BRAM에 오페란드가 두개 있다고 가정하면, 첫번째 퍼엄웨어 단계는 이러한 두개의 오페란드 중의 우측을 Q레지스터로 전달하는 것을 가리키는 단계이다. 이 단계는 다음과 같이 진행한다. BS피일드는 BRAM(12)에서 이 오페란드를 포함하는 16개의 위치중 하나를 애드레스 지정하도록 조절된다. RAM버스를 제어하는 R버스 피일드는 DRAM 출력대신에 RBAM출력을 취하도록 조절된다. SH피일드는 R버스를 0버스에 인에이블하고, R버스로 부터 그것의 입력을 선택함으로써, R버스를 선택기(20)를 거쳐 0버스에 전달하도록 조절되며, 또한 Q레지스터와 W버스가 둘다 0버스의 내용을 받도록 연거하고, 그것을 로우드 하도록 Q레지스터를 클록시킨다. 이것은 BRAM에 애드레스 지정된 오페란드가 Q레지스터로 전달되도록 한다.
다음단계는 시프트가 실제로 수행되는 단계이다. 이 단계에서는 BRAM에 2번째 오페란드를 포함하는 2개의 레지스터중의 다른 한계가 B선택 피일드에 의해 애드레스 지정되며, BRAM은 RB피일드를 거쳐 RAM버스(13)위오 인에이블된다. RAM버스는 선택기(20)를 거쳐 0버스로 인에이블된다. SH피일드는 얼마나 많은 비트에 대해 시프트가 수행되며, 어느방향으로 수행되는가에 따라 임의의 값을 취한다. 이 SH피일드는 1, 2혹은 4비트의 좌측 혹은 우측으로 시프트를 선택할 수 있다. 이와같은 경우, Q레지스터(50)는 0버스(17)의 확장으로서 연결되어 32비트 오페란드를 발생시킨다. 실제로, 그것은 40비트 오페란드이며, 0버스의 좌측 8비트는 무시된다. 이 32비트 오페란드는 특징 SH피일드로 지시된 바와같이 좌측 또는 우측 중 어느 한쪽으로 시프트 된다. 우측 16비트는 Q레지스터(50)로 복귀되고, 무시된 8비트와 함께 좌측 16비트는 W버스(84)로 전달된다. 이것은 시프트 간격에 따라 베타적인 제어를 갖는 SH피일드에 의해 제어된다.
0버스 (17)로 부터 W버스(84)로, Q레지스터로 부터 Q레지스터 뒤로 시프트 되는 오페란드인 SH피일드인 Q레지스터가 시프트된 오페란드를 제로우드 하도록 하는 반면, 동시에 BW피일드는 W버스가 애드레스 지정된 BRAM위치로 라이트 되도록 한다. 따라서, B와 Q레지스터의 내용이 자리이동을 해서 B와 Q레지스터로 되돌아온다. 이 시프트와 관련된 특별한 효과는 CPU에 있는 제어 플립플롭의 기능이다. 실제의 자리이동이 수행된 이러한 형태의 단계는 여러가지 조합으로 여러번 수행된다. 즉, 만약 5비트 만큼 좌측으로 자리옮김을 원한다면 1비트만큼 좌측으로 자리이동이 된 단계 뒤를 이어 4비트 만큼 좌측으로자리이동하는 단계를 잇게한다. 예를들어 3만큼 우측으로 자리이동을 하려면 2만큼 오른쪽으로 자리이동을 하고 다음에 1만큼 자리이동을 시킨다.
마지막 자리이동이 수행된 후, 즉 오페란드가 방금 애드레스 지정된 BRAM 위치와 Q레지스터에 정확하게 배열된 다음의 최종단계는 자리이동을 하지않고 대신에 Q레지스터 내용을 원래 로우드되었던 BRAM위치로 복귀시키는 단계이다. 이것은 다음과 같이 수행된다. I버스 피일드는 I버스가 Q레지스터에 의해 구동되므로 열거한다. DALU(15)는 DA피일드에 의해 제어되므로 변경되지 않은 I버스를 통해 통과된다. SH피일드는 DALU가 선택기(20)를 통해 변경되지 않고 0버스(17)로 인에이블 되게하고, 시프터(19)를 통해 다시 변경되지 않고 W버스(84)로 인에이블 되게 하도록 선택된다. 다음 퍼엄웨어 워어드내의 BW비트(50)는 W버스로부터 BRAM의 로우딩을 조절하도록 세트되며 BS(B선택)비트는 BRAM에 있는 16위치중의 어느 것이 시프트된 오페란드를 수신했는가를 열거하도록 조절된다. 이것은 모두 다수의 퍼엄웨어 단계, 예를들어 3개 혹은 4개의 단계에서 발생한다.
그 한단계는 Q레지스터를 로우드해서 40비트 오페란드를 만드는데 사용되고, 그 한두단계는 오페란드의 자리이동을 원하는 데로 수행하는데 사용되고, 그 다음 한단계는 Q레지스터내용(오른쪽 16비트)을 BRAM로 복귀시켜 동작을 완성하는데 사용된다.
CPU(100)는 Cache/MMU (103)로 부터 명령과 16비트 혹은 24비트 오페란드를 받아서 그 오페란드를 조직함으로써 명령을 실행하는 마이크로 프로그램된 24비트 프로세서이다. 이것은 마이크로 프로그램 제어하에, 오페란드와 메모리 애드레스를 여러가지 소오스들로 부터 R버스(13)과 0버스(17)를 거쳐 W버스(84)로 전달됨에 따라 재배열하는 장치를 설명한다. 오페란드와 메모리 애드레스들의 배열을 위한 장치는 제4도의 96비트 마이크로 워어드중의 자리이동 피일드 비트(83-89)에 응답한다.
제5도를 보면, 확장된 정수명령(EII)이 시스템의 31비트 오페란드 처리능력을 이용한다. 이 EII는 2개 혹은 3개의 16비트 워어드로 만들어진다. 첫번째 워어드는 명령 동작 코우드와, 그리고 명령족, EII및 명령의 오페란드를 포한하는 레지스터를 식별하는 피일드를 지시하는 확장 코우드를 포함한다.
두번째 워어드는 디스크립터 워어드라고 불리우며, 오페란드 형태, 즉 비트 스트링, 디지트, 1/2워어드, 1워어드, 2워어드, 4워어드 혹은 애드레스, 그리고 오페란드가 부호가 있는지 없는지 등을 설명한다. 디스크립터 워어드는 또한 확장 코우드에 의해 선택된 오페란드의 위치를 지정하는 3개의 애드레스 음절중 하나를 포함하며, 또한 명령이 3번째 혹은 3번째와 4번째 워어드를 포함하는지를 지시한다.
필요하다면, 3번째 워어드가 직접 오페란드(IMO)라 불리는 오페란드를 포함하든지, 혹은 3번째와 4번째 워어드가 직접 애드레스(IMA)라 불리는 실효 애드레스를 포함한다.
첫번째 워어드는 비트위치 1에 2진수의 1을 포함한다. 비트위치 1-3은 첫째 오페란드를 포함하는 K레지스터를 식별한다. K1-K7까지의 32비트 K레지스터는 제2도 DRAM(11)중의 14개의 애드레스 가능 위치에 나타난다. 또한 K1, K2와 K3레지스터들은 애드레스 준비 동안에 인덱스 레지스터로써 사용된다.
비트위치(4-8)까지는 실행될 명령의 동작 코우드를 식별한다. 비트위치(9-15)까지는 확장 코우드를 기억하므로서 EII명령으로 도피코우드를 식별하며 부분적으로 이 명령을 사용할 애드레스 음절을 열거한다. 두번째 워어드의 비트위치(8)와 함께 6C16과 7C17의 확장 코우드는 EII명령으로서 명령을 식별하며, 더우기 오페란드를 가르키는 3개의 가능한 애드레스 음절중의 어느것이 2번째 워어드의 비트위치(9-15)에 있어야 하는지를 열거한다.
EII명령 및 디스크립터 워어드의 두번째 16비트 워어드는 상술된 바와같이 오페란드의 형태와 크기를 식별하며, 주 메모리나 혹은 레지스터에서 오페란드를 지시하는 애드레스 음절을 가리킨다. 비트위치(0-7)까지는 오페란드의 형태와 크기를 식별하며, 3개의 서브피일드로 구성되어 있다. 비트위치(4-7)은 비트위치(7)로써 데이타 형태를 식별하는 데, 이때 2진수 1은 부호가 있는 오페란드를 가리키며 2진수 0은 부호가 없는 오페란드를 가리킨다. 비트위치(0-4)는 만약 오페란드가 비트스트링 형태라면 오페란드에 있는 다수의 비트를 가리킨다.
비트위치(9-15)의 애드레스 음절은 오페란드를 기억하는 레지스터를 식별하고, 다음 워어드나 혹은 내용이 오페란드인 순서 워어드를 가르키며, 혹은 오페란드를 포함하는 주 메모리(108)에 있는 워어드를 가르키는 포인터로써의 애드레스 기능을 열거하므로써 두번째 오페란드를 위치시킨다. 상기 애드레스 음절은 비트위치(9-11)인 M부분과 비트위치(12-15)인 N부분을 갖는데, 이들의 기능은 다음에 설명한다.
제6도를 보면, 데이타비트(4-7)가 메모리 오페란드에 언급된다. 통상 부호없는 디지트와 부호있는 디지트를 위한 코우드가 있는 데이타 형태 코우드 0010및 0011는 EII오페란드의 경우 판독 불능이다. 또한, 이 판독불능 코우드는 부호없는 그 워어드(1010), 부호가 없거나 있는 4워어드(110×), 그리고 부호가 있는 애드레스(1111)이다. 모든 오페란드는 32비트 오페란드인데, 부호가 있는 오페란드는 좌측으로 부호확장되며, 부호가 없는 오페란드는 좌측으로 0으로 확장시켜 32비트 피일드를 채운다.
IMO로 표시된 행은, 명령의 3번째 워어드가 직접 오페란드를 포함할때, 부호가 없는 애드레스상의 부호가 있는 그 워어드를 부호가 없거나 있는 워어드로 제한되게 하는 것을 도시한다. =Kn으로 표시된 행은 애드레스 음절 3을 통해 애드레스되는 K1-K7레지스터중의 하나로 전달되는 오페란드 형태를 도시한다. 이들은 부호가 없는 애드레스와 부호가 있는 2워어드로 제한되어 있다.
REG로 표시된 행은 제2도의 BRAM(12)중 B레지스터(B0-B7)로, 혹은 DRAM(11)으로 부터 R레지스터(R1-R7)로 전달되는 오페란드 형태를 도시하는 데, 즉 부호가 없거나 있는 워어드 및 부호가 있는 단지 2워어드 R레지스터와 그리고 부호가 없는 애드레스(단지 B레지스터)등이다.
제7,8,9도는 각각 애드레스 음절(AS) 1,2,3의 맵들을 도시한다. EII1실행코우드6C16는 AS1을 열거하고, EII23실행코우드 7C16는 워어드 2의 비트위치 8을 논리 0으로 되게하는 AS2를 열거하며, 논리 1에서 AS3을 열거한다. 상기 맵의 좌표들은 M과 N이며, 비트 위치는 각각 AS의 9-11과 12-15이다. 다음표는 제7,8,9도의 맵들에 대한 기호를 정의한다. 즉,
D : 이것은 한워어드를 가리키며, 애드레스 음절을 뒤따르는 16비트의 부호가 있는 변위이다. 여기서 215≤D≤215-1이다.
△ : 이것은 2개의 워어드를 가리키며, 애드레스 음절을 뒤따르는 16비트의 부호가 있는 변위이다. 여기서 -231≤≤231-1이다.
□ : 간접 오퍼레이터
+R : 인덱싱을 열거한다. 여기서는 -215≤R≤+215-1이다.
+K : 인덱싱을 열거한다.
여기서는 -231≤K≤231-1이다.
FB : FT+L
FT : 스텍세서의 현액티브 프레임의 상위소자 애드레스.
L : 액티브 스텍 프레임의 워어드길이.
자동증가(B↑, R↑혹은 ET↑은 진행후의 증가를 나타냄)
자동감소(↓B, ↓R혹은 ↓ET는 진행전의 감소를 나타냄)
IMA : 직접애드레스 B : 베이스 레지스터
IA : 중간애드레스 K : 2워어드 오페란드 레지스터
R : 1워어드 및 1/2워어드 오페란드 레지스터
P : 프로그램 카운터, P관련 애드레스 지정을 위해 다음과 같은 정의가 사용된다. 즉,
Pd : Pd에 가산될 변위를 가르킨다. (한명령이 끝나면, P는 다음명령의 첫번째 워어드를 가르킨다)
( ) : 논리적 결합
[ ] : 내용
+ : 가산동작
IMO : 직접 오퍼랜드
IV : 인터럽트 벡터
O : 비트내의 오프세트를 열거한다. 0은 서브 워어드 명령을 실행할때만 인정된다. 즉,
-비트 명령에 대해, 0은 0≤0≤15비트에서의 오프세트를 열거한다.
-디지트 명령에 대해, 고위 2비트는 0,4,8혹은 12비트중 어느 하나의 오프세트를 허용한다.
-바이트 명령에 대해, 오프세트 피일드의 고위비트만이 사용된다. 그러므로, 0은 0혹은 8비트중 어느 하나의 오프세트로서 해석된다.
-모든 다른 명령에 대해, 0은 무시된다.
- : 감산동작 <- : 대입
× : 승산동작 EA: 실효 애드레스
제7도의 애드레스 음절1(AS1)에서의 좌표(5, 1)내지 (5, 7)는 REG를 선택한다. EII데이타 형태가 애드레스인 곳에서는 좌표가 레지스터(B1-B7)를 선택한다. (좌표(5, 4)는 레이스터 B4를 선택한다). EII데이타 형태가 2워어드인 곳에서는, 좌표(5, 3), (5, 5)또는 (5, 7)의 AS1이 2개의 16비트 레지스터 R2/R3, R4/R5혹은 R6/R7을 각각 선택한다.
제9도의 AS3에서의 좌표(5, 1)내지 (5, 7)는 REG를 선택한다. EII데이타 형태가 2워어드 또는 애드레스인 곳에서는 좌표(5, 4)가 2워어드나 혹은 애드레스를 처리하기 위해 레지스터 K4를 선택한다.
제7도의 AS1에서의 좌표(7, 0)는 1워어드, 2워어드 혹은 4워어드 데이타 형태를 위해 IMO를 선택한다. EII명령에서, IMO 오페란드의 크기는 명령 워어드 2의 데이타 형태 피일드에 있는 비트에 의해 결정된다.
이러한 형태는 메모리 위치의 실효 애드레스(EA)를 열거한다. MAS는 다음과 같은 형태를 가질수 있다. 즉,
O : P 관련 O: IV관련
O : 직접애드레스(IMA) O : 스택관련
O : B관련
다음 AS엔트리들은 P관련 MAS형태를 열거하다. 즉 O AS 맵1로 부터(제7도). 즉
□P+D : EA가 D를 Pd에 가산시켜 형성됨.
[P+D] : EA가 Pd+D에 의해 지적된 위치에 포함된다.
O AS맵 2로 부터(제8도). 즉
P+D+O : EA는 먼저 D를 Pd에 가산시켜 형성되고, 다음 이 워어드 애드레스에 오프세트 0*를 연결시키므로 형성된다.
P+D+R(1-3)+O :EA는 먼저 Pd를 Pd에 가산시켜 형성되고 워어드 오프세트 0*을 연결시키고, 그리고 마지막으로 R(1-3)에서 열거된 원자 인덱스를 가산시키므로서 형성된다.
□[P+D]+O : IA는 Pd+D에 의해 형성된 위치로 부터 판독한 포인터이다. 다음 오프세트 0*은 EA를 얻도록 IA에 연결된다.
P+△+O : EA는 △를 Pd에 더하고, 다음 이 워어드 애드레스에 오프세트 0*를 연결하므로서 형성된다.
AS맵 1(제7도)에 있는 다음의 AS 엔트리들은 IMA, MAS 형태를 열거한다. 즉
IMA : 직접애트레스. EA는 명령을 뒤따르는 위치에 포함된다.
□IMA : □은 간접 오퍼레이터이다. EA는 IMA에 의해서 지시된 위치에 포함된다.
IMA+Rm : EA는 Rm의 스케일된 내용에 의해 인덱스되는 IMA이다.
□IMA+Rm : EA는 Rm의 스케일된 내용을 IMA(간접진행후의 인덱싱)에 의해서 지시된 위치의 내용에 가산하므로서 얻어진다.
다음 AS엔트리들은 B관련 MAS형태를 열거한다. 즉
O AS 맵1로 부터(제7도). 즉
Bn : EA는 레지스터 Bn에 포함된다.
□B(n-8) : EA는 B(n-8)에 의해서 지시된 메모리 위치에 포함한다.
Bn+Rm : EA는 인덱스 레지스터 RM의 스케일된 내용을 BN의 내용에 가산하므로서 얻어진다.
□B(n-8)+Rm : EA는 인덱스 레지스터 Rm의 스케일된 내용을 B(n-8)에 의해서 지시된 위치의 내용을 가산하므로서 얻어진다.
Bn+D : EA는 D를 Bn의 내용에 가산하므로서 형성된다.
□[B(n-8)+D] : EA는 B(n-8)+D에 의해서 지시된 위치에 포함된다.
↑Bn : EA는 Bn의 내용이 하나씩 감소된 후 Bn에 포함된다.
Bn↓ : EA는 Bn에 포함된다. Bn의 내용은 하나씩 증가된다. 그 증분은 EA형성후와 동작코우드 실행전에 발생한다.
B(n-C)+R(m-4)↑ : EA는 B(n-C)의 내용을 인덱스 레지스터 R(m-4)의 스케일된 내용으로 가산하므로서 얻어진다. EA형성후와 동작코우드 실행전에, 인덱스 레지스터가 하나씩 증가된다.
B(n-8)+↓R(m-4) : 인덱스 레지스터R(M-4)의 내용은 하나씩 삼소된 다음, B(n-8)의 내용에 스케일되고 가산되어서 EA를 형성한다.
O AS를 맵2로 부터(제8도). 즉
Bn+D+O : EA는 먼저 D를 Bn에 가산하고, 다음 이 워어드 애드레스에 오프세트 0을 연결시키므로서 형성된다.
□[B(n-8)+D]+O : IA는 Bn(n-8)+D에 의해 정의된 위치로 부터 판독한 포인터이다. 다음 오프세트 O은 IA에 연결되어 EA를 얻는다.
Bn+D+Rm+O : EA는 먼저 D를 Bn에 가산하고, 다음 이 워어드 애드레스에 오프세트 O를 연결시키고, 마지막으로 Rm에 의해 열거된 원자 인덱스를 가산하므로서 형성된다.
□[B(n-8)+D]+Rm+O : IA는 B(n-8)+D에 의해 정의된 위치로 부터 판독한 포인터이다. 다음 오프세트 0은 IA에 연결되고, 마지막으로 Rm에 의해 지정된 원자인덱스는 EA를 얻도록 가산된다.
O AS맵 3으로 부터(제9도). 즉
Bn+D+Km+O : EA는 D를 Bn에 가산하고, 다음 이 워어드 애드레스에 오프세트 0*을 연결하고, 마지막으로 레지스터 Km에 의해 열거된 원자 인덱스를 가산하므로서 형성된다.
AS맵 1에 있는 다음에 엔트리는 IV관련 MAS형태를 열거한다. 즉
IV+D : IA는 현재의 수준에 대한 인터럽트 벡터에 의해 정의된 위치의 내용이다. D는 IA에 가산되어 EA를 얻는다.
다음의 엔트리들은 스택관련 MAS형태를 열거한다.
O AS맵 1로부터(제7도). 즉
↑FT↓ : ↑FT↓AS는 동작 코우드에 종속된다. 사용된 동작코우드의 기능에 따라서, 액티브 프레임이 PUSH(↓), POP(↑)되거나 또는 프로그램에러가 나타난다. 무슨 동작을 인가할지를 결정하는 기준은 다음과 같다. 즉
a. 모든 기억명령은 PUSH를 의미한다.
b. 모든 리이드-라이트 명령과 어떤다른 명령은 트랩 루우틴으로 브랜치된다.
c. 모든 다른 명령은 POP을 의미한다.
푸쉬(↓)동작은 오페란드가 액티브 프레임에 기억되는 것을 의미한다. 따라서,액티브 프레임이 확대되어야 한다. 프레임의 확대에 수반하여 새로운 "요구된" 스페이스가 오페란드를 기억하기 위해 사용된다.
프레임 확대는 워어드에서 행해진다. 결국 한바이드가 기억 되려면, 프레임은 한워어드씩 확대되며, 데이타는 워어드 내의 좌측에 있게된다. 만약 애드레스가 기억되려면, 프레임은 2워어드씩 확대된다.
POP(↑)동작은 FT에 의해 지시된 오페란드가 명령에 의해 정의된 것처럼 사용되고, 다음 프레임으로터 제거되도록 사용되는 것을 의미한다.
프레임크기의 감소는 워어드에서 행해진다. 결국 오페란드가 1비트 혹은 1바이트라면, 프레임은 한워어드씩 크기가 감소될 것이다.
O AS맵 3으로 부터(제9도). 즉
□FT+O : IA는 ET에 의해 형성된 위치로 부터 판독한 포인터이다. 오프세트 0은 IA에 연결되어 EA를 형성한다. 다음 IA는 프레임으로 부터 제거된다.
FT+D+Rn+O : 이 AS는 액티브 프레임내의 데이타를 액세스하기 위해 사용된다. 워어드 애드레스 IA는 FT+DAS를 위해 정의된 규칙에 따라 형성된다. 다음 오프세트 0는 IA에 연결되고, 마지막으로 Rn에 의해 열거된 원자 인덱스는 EA를 얻도록 가산된다.
□[FT+D]+O : IA는 FT+D에 의해 형성된 위치로 부터 판독한 포인터이다. (FT+DAS)를 위해 정의된 것과 동일한 규칙을 응용한다. 오프세트 0는 EA를 형성하도록 IA에 연결된다.
□[FT+D]+Rn+O : IA는 FT+D에 의해 형성된 위치로 부터 판독한 포인터이다.(FT+DAS를 위해 정의된 것과 동일한 규칙을 응용한다.) 그다음 오프세트0는 IA에 연결되고, 마지막으로 Rn에 의해 열거된 원자 인덱스는 EA를 얻도록 가산된다.
제7도를 보면, 확장 코우드(6, C)는 확장정수명령(EII)를 식멸하며, AS1이 사용되는 것을 열거한다. 확장 코우드(7, C)는 EII를 식별하고, 제8도의 AS2 혹은 제9도의 AS3이 사용되는 것을 열거한다. 확장코우드(5, C)는 CPU(100)명령을 식별하고, AS2 혹은 AS3이 사용되는 것을 열거한다. AS2(M, O) 혹은 AS3(M, O)는 리모우트 디스크립터를 열거한다.
제10도는 다음에 설명하는 단일 오페란드 명령(EII)표를 도시한다. 이들은 증가, 감소, 취소와 보수등이다. 제10도에는 또한 그 오페란드 명령및 스왑(SWAP)이 나타나 있다.
이러한 명령들은 소프트웨어 가시 지시기를 세트시킬 수 있는데, 즉 오페란드가 경계를 넘어 확장되었음을 가리키는 오우버 플로우 그리고 명령 실행으로 부터 생긴 자리올림을 가리키는 캐리를 세트시킨다.
제11도를 보면, 오페란드 형태 비트(4-7)가 신호 FPMR 04+내지 RPMRO7+와, F*레지스터(76)및 W버스(84)의 신호 WBUS 20+내지 WBUS 23+를 통해 다음 애드레스 발생기(44)내에 있는 프로그램 가능 판독 전용 메모리에 인가된다. F'레지스터(76)는 신호 CRFLD+2에 의해 인에이블되고, 제4도의 제어기억부(80)의 F피일드로부터 신호 ASPLOD-상승으로 로우드된다.
F레지스터(38)로 부터 PROM(44-2)으로 인가되는 신호 FREGOO+는 논리 1에 있을때 EII로서의 명령을 식별한다. 신호 MISC7B+는 논리 0일때 AS1또는 AS2로서 애드레스 음절을 식별하며, 논리1일때 AS3으로서 식별한다. 오페란드 기준 동작중에는, 논리 1에서의 MEMADR- 신호는 레지스터에서와 같이 오페란드를 식별하고, 그밖에 오페란드가 메모리 서브시스템에 위치된다. 신호 FPRMO8+는 EII의 경우에는 그다지 중요치 않다. 즉 이것은 단지 디지트나 1/2워어드를 식별하기 위해 CIP(102)명령동안에만 동작한다.
PROM(44-2)는 논리 0에서 신호 MISC6B-에 의해 인에이블 된다. 그때, 신호 MISC6B+는 논리 1에서 PROM(44-4)를 디스 에이블 시킨다. PROM(44-2)이나 혹은 PROM(44-4)중 어느 하나가 동작한다. PROM(44-4)은 CPU(100)를 포함하는 모든 명령을 위해 데이타 형태신호를 제공한다. 그러나 EII와 CIP(102)명령은 포함하지 않는다.
F버스(37)신호 FBUSOO-08+는 F레지스터(38)에 기억된다. 출력신호 FREGOO (04+내지 08+)가 RPOM(44-4)의 입력 애드레스 단자에 인가된다. 또한 신호 FREGOO+는 EII혹은 CIP 명령을 지시하도록 PROM(44-2)의 입력 애드레스단자(64)에 인가된다.
데이타 형태신호 ODADDR+, ODSIZ1+, ODSIZ2+및 ODSIZ4+는 제2도, 시험논리부(30)의 MUX(30-2)의 입력단자(4-7)에 각각 인가된다. 제4도의 TC피일드로부터 제어 기억부(80)의 신호 CRTC15+, CRTC14+ 및 CRTC13+는 신호 CRTC13+가 논리 1일때 데이타 형태 입력신호를 선택한다. MUX(30-2)는 정상기계 동작임을 가리키는 논리 0에서의 신호 DSASTF+에 의해 인에이블된다. 출련신호 TCGRP2-는 다음 애드레스 발생기(44)에 의해 사용된다.
제12도는 PROM(44-2)의 내용을 도시한다. 행 A,B,C또는 G는 CIP 명령(논리 0에서의 신호 FREGOO+)동안에 선택되며, 행B,D,F 또는 H는 EII(논리 1에서의 신호 FREGOO+)동안에 선택된다.
논리 1에서의 신호 FREGOO+에 의해 결정되는 EII는 신호 FPRM08+의 독립이다. 행B와 F는 모든 오페란드와, 논리1에서의 신호 MEMADR-를 나타내는 신호를 제공한다. 신호 MEMADR-가 논리 0일때, 행D는 1워어드, 2워어드 및 애드레스 오페란드를 나타내는 신호를 제공하고, 행 H는 2워어드와 애드레스 데이타 형태신호가 모두 입력 애드레스 단자에 인가될때 2워어드를 나타내는 신호를 제공한다. 모든 다른 입력신호 조합은 에러 상태를 초래한다. 행D는 AS1 혹은 AS2를 위해 선택되고, 행H는 AS3을 위해 선택된다. 행B와 F에서의 "D"출력 신호는 앞으로 사용하기 위해 유지된다.
제13도를 보면, 퍼엄웨어가 제5도에 도시된 명령의 첫번째 동작 코우트 비트 위치(4-8)와 그리고 확장코우드 비트위치(9-15)를 시험한다. 만약 EII가 6C16혹은 7C16의 확장 코우드라면, 저장 기억부(80)가 위치(509)로 브랜치해서 명령의 사전처리를 시작한다. 사전처리 동언에, 오페란드는 만약 부호가 있다면 부호비트를 확장하고, 또 만약 부호가 없다면 피일드를 채우기 위해 2진수 0비트를 써서 메모리(106)혹은 32비트로 확장되도록 열거된 레지스터로 부터 판독한다. 오페란드는 메모리(106)로 부터 각각 16비트의 이중워어드로서 수신되어 32비트 레지스터DA(34)에 기억된다. 하위 16비트는 L비스(32), 구동기 DW, (35), S버스(33), I버스(14), DALU(15), 선택기(20), 0버스(17), 시프터(19) 그리고 W버스(84)를 거쳐 BRAM(12)의 24비트 레지스터(BO)로 전달된다.
블럭(509)은 메모리로 부터 이중워어드 리이드를 시작해서, XB레지스터(58)속에 기억된 인덱스 값을 레지스터(BO)의 좌측 부분으로 기억한다. 블럭(509)에는 PROM(44-2)으로 부터 신호ODSIZ1+ 를 시험하는 결정불럭(509-A)이 포함된다. 논리 0일때 신호 ODSEZ1+는 1디지트, 1워어드 혹은 4워어드 오페란드를 가리킨다. 그리고 논리 1일때는 비트스트링, 1/2워어드, 2워어드 혹은 애드레스 오페란드를 가리킨다.
블럭(28F)은 2진수 0이 BRAM(12)의 32비트 레지스터에 기억되는 동안 CPU(100)을 지연시킨다. 이것은 오페란드가 부호가 없던지 아니면 정의부호를 가졌다고 가정한다. 결정블럭(28F-A)은 신호 ODSIZ2+를 시험한다. 논리1에서의 신호 ODSIZ2+ 는 판독불능 디지트나 4워어드 오페란드를 가리키며, 퍼엄웨어는 트랩루틴으로 브랜치한다. 논리 0에서의 신호 ODSIZ2+ 는 워어드 오페란드를 가리키며, 퍼엄웨어는 블럭(3DE)으로 브랜치한다.
블럭(3DE)은 메모리(106)로 부터 수신되고, 레지스터(DB 31)에 기억된 16비트 워어드를 L버스(32), DW(35), S버스(33), 구동기(DL)(51), I버스(14), DALU(15), 선택기(20), 0버스(17), 시프터(19)와 W버스(84)를 통해 레지스터(BO)로 전달한다. 결정블럭(3 DE-A)은 IBUSI6+ 및 부호비트를 검사해서 만약 논리 0에 있다면, 정의부호를 가리키며, 그다음 퍼엄웨어는 실행루틴을 시작하기 위해 브랜치한다. 만약 IBUSI6+ 가 부의 신호를 가리키면 퍼엄웨어는 블럭(1El)으로 브랜치한다.
블럭(1El)은 부의 오페란드를 보전하는 2진수 1로서 레지스터(AO)를 채운다. 결정블럭(133-A)은 F'레지스터(76)신호 FPRMO7+를 시험해서 오퍼란드가 부호가 있는지 없는지를 결정한다. 만약 FPRMO7+가 논리 1에서 부호가 있는 오페란드를 가리킨다면, 퍼엄웨어는 실행루틴으로 브랜치한다. 만약 신호 FPRMO7+가 논리 0이라면, 퍼엄웨어는 블럭(1El)으로 브랜치한다.
블럭(1El)은 확장비트를 올바로 고치기 위해 2진수 0으로 레지스터(AO)를 채우며, 퍼엄웨어는 명령을 실해이하기 위해 브랜치 한다.
만약 결정블럭(509-A)이 비트스프링, 1/2워어드, 2워어드, 혹은 애드레스 오페란드를 가리킨다면 퍼엄웨어는 블럭(68F)으로 브랜치한다.
블럭(68F)은 2워어드가 레지스터(DB)(31)에 의해 수신될때까지 CPU(100)를 지연시킨다. 레지스터(BO)의 좌측부분에 기억된 XB레지스터(58)신호는 레지스터(BO)의 우측부분으로 스왑된다. (비트위치 16-19가 비트위치 24-27로 스왑됨). 결정블럭(68F-A)은 신호 ODSIZ4+를 시험한다. 논리 1에서의 신호 ODSIZ4+는 2워어드 혹은 1애드레스를 나타내며, 논리 0에서 비트스트링이나 1/2워어드를 가리킨다.
블럭(521)은 레지스터(DB)(31)에 기억된 애드레스 혹은 2워어드중의 좌측 워어드를 구동기(DW)(35)를 거쳐 레지스터(AO)로 판독한다. 결정블럭(521A) 신호 MISC6B+는 논리 0에서 이것이 EII 명령이 아니라는 것을 가리킨다.
블럭(109)은 레지스터(DB)(31)에 기억된 애드레스 혹은 2워어드의 우측 워어드를 구동기(DA)(34)를 거쳐 레지스터(BO)로 판독하고, 퍼엄웨어는 실행루틴으로 브랜치한다.
블럭(121)은 레지스터(BO)의 비트위치(16-27)를 마스크하기 위해 OOOF16을 사용하므로서 가장우측 4비트 위치에 기억된 인덱스값을 DRAM(11)의 레지스터(LO)로 로우드 한다. 또한 인덱스 값은 레치스터(XB)로 부터 디코더(59), 시프터(56), 레지스터(Q)(50)로 전달된다. 디코더(59)는 레지스터(XB)(58)에 있는 4비트 코우드로 부터의 인덱스값을 레지스터(Q)(50)에 기억하기 위해 16코우드중의 하나로 디코드한다. 결정블럭(21121-A)은 신호 ODSIZ2+를 검사해서, 만약 논리 0이면 비트스트링 오페란드 임을 가리키고, 만약 논리 1이면 1/2워어드 오페란드 임을 가리킨다. 비트스트링 오페란드 퍼엄웨어 처리는 더 이상 설명하지 않는다.
블럭(76 B)은 레지스터(BO)에 1/2워어드를 마스킹하기 위한 준비로 DRAM(11)의 레지스터(DO)에 FFOO16을 기억한다. DALU(15)는 W버스(84)위로 OOOO16을 놓고 시프터(19)를 통해 FFOO16과 짝을 채우므로서 모든 2진 수 0을 레지스터(70)에 입력시킨다. 결정블럭(73 B-A)은 논리 0일때 좌측 바이트를 논리 1일때 우측 바이트를 지시하는 XB 레지스터(58)비트 0을 시험한다.
블럭(36 D)은 레지스터(DB)(31)에 기억된 우측 워어드를 레지스터(BO)로 전달한다. 이 경우 1/2워어드는 좌측 바이트위치에 있게된다. 시프터(19)는 좌측 바이트위치와 우측 바이트위치를 스왑한다. 또한 레지스터(DO)는 DALU(15)에 있는 좌측 바이트 위치를 마스크 아웃하기 위해 OOFF16을 기억한다. 레지스터(BO)는 이제 우측 바이트위치에 1/2워어드를 기억한다. 결정블럭(36 D-A)이 I버스(14)의 비트위치 16에 대한 부호비트를 체크해서, 만약 정의 부호나 혹은 확장된 0피일드임을 가리키는 논리 0이면, 퍼엄웨어는 실행루틴으로 브랜치한다. 만약 부호 비트가 논리 1이면, 결정블럭(12B)은 신호 FPRMO7+를 시험하는데, 이때 논리 1이면 부호가 있는 오페란드이며, 논리 0이면 부호가 없는 오페란드이다. 만약 신호 FPRMO7+가 부호가 없는 오페란드이다. 만약 신호 FPRMO7+가 부호가 없는 오페란드를 가리키는 논리 0이라면, 퍼엄웨어는 실행루틴으로 브랜치한다. 만약 신호 FPRMO7+가 부호가 있는 오페란드를 가리키면, 레지스터(AO)는 2진수 1로 세트되어야 한다.
블럭(12C)은 레지스터(BO)와 OOFFOO16을 오아링하므로서 레지스터(BO)의 좌측바이트 위치에서 모두 2진수 1을 만든다.
블럭(133)은 모든 2진수 1을 레지스터(AO)로 입력시키며, 퍼엄웨어는 실행루틴으로 브랜치한다.
만약 결정블럭(76 B-A)에서 신호 XB(0)가 우측 바이트를 가리키면, 블럭(76 D)은 레지스터(DD)에 기억된 FFOO16또는 OOFF16에 의해 워어드의 좌측 바이트 위치를 마스크 오프되게 한다. 레지스터(BO)의 우측 바이트위치에 1/2워어드를 기억되게 한다. 결정블럭(76 D-A)은 I버스(14)의 비트위치 24를 시험한다. 그래서 만약논리 0이면 정의부호나 0비트 확장을 가리키고, 실행루틴으로 브랜치한다. 논리1에서의 신호 IBUS24+는 결정블럭(12B)으로 브랜치해서, 신호나 앞에서 설명된 부호가 없는 오페란드를 시험하게 한다.
제14도를 보면, 블럭(507)은 EII 증가명령(KINC)의 실행을 시작한다. 오페란드의 16비트 좌측부분은 레지스터(AO)에 기억되고, 오페란드의 우측 16비트 부분은 레지스터(BO)에 기억된다.
블럭(507)은 레지스터(BO)에 기억된 오페란드의 우측부분에 2진수 1을 가산하고, 그 결과를 레지스터(BO)에 기억하며, 또한 W레지스터(28)의 비트위치(16-31)에 기억되게 한다. 블럭(507-A)은 DALU(15)의 비트위치(16)의 자리올림비트를 시험한다. 만약 자리올림이 없으면, 블럭(3AE)은 W레지스터(28)의 비트위치(0-15)에 오페란드의 좌측 부분을 기억한다. 만약 자리올림이 있으면, 블럭(7AE)은 레지스터(AO)를 증가시키고, W레지스터(28)의 비트위치(0-15)에 오페란드의 좌측부분을 기억한다.
EII감소명령(KDEC)의 실행은 블럭(505)에서 시작한다. 레지스터(BO)는 감소되고, W레지스터(28)의 우측부분에 기억된다. DALU(15)의 비트위치(16)는 결정블럭(505-A)에서의 자리올림을 위해 시험된다. 만약 자리올림이 있으면, 블럭3(AD)은 레지스터(AO)를 감소시키며, 그 결과를 W레지스터(28)의 좌측부분에 기억한다.
만약 자리올림이 없으면, 블럭(7 AD)에서의 레지스터(AO)의 내용이 W레지스터(28)의 좌측부분에 기억된다.
EII취소명령(KNEG)의 실행은 오페란드비트를 보수하고 이어서 오페란드를 증가시키므로서 오페란드를 0으로 부터 감산을 한다. 블럭(503)은 레지스터(AO)를 보수한다. 블럭(OAB)은 레지스터(BO)를 보수한다. 그 결과의 증분은 앞에서 설명한데로 수행된다.
EII보수명령(KPCL)의 실행은 레지스터(AO)의 내용을 보수하고, 그 보수 계산된 결과를 W레지스터(28)의 좌측부분에 기억한다. 블럭(OAC)은 레지스터(BO)의 내용을 보수 계산하고, 그 결과를 레지스터(28)의 우측부분에 기억한다.
이러한 명령의 실행에서, 결과적인 오페란드는 레지스터(AO, BO, W)에 기억된다. (WL은 W레지스터(28)의 좌측부분은 WR은 우측부분을 가리킨다).
결정블럭(AE-AD)은 데이타형태 신호 ODSIZ1+를 시험해서 EII명령의 사후처리를 시작한다. 만약 그 신호가 논리 1이면 비트스트링, 1/2 워어드 혹은 2워어드 오페란드를 가리키고, 논리0이면 워어드 오페란드를 가리킨다. 결정블럭(7AF)은 신호 ODSIZ4+를 시험하는데, 이때 논리1에서는 XW 루틴으로 브랜치하는 2워어드 오페란드를 가리킨다. 또한 논리 0에서는 신호 ODSIZ4가 비트 스프링 혹은 1/2워어드 오페란드를 가리킨다. 결정블럭(OGE)은 신호 ODSIZ2+를 시험하는데, 이때 논리 0에서는 비트스프링을 지시하고, 논리1에서는 1/2워어드를 지시한다. 더 이상의 비트 스프링 처리를 설명하지 않는다.
블럭(7B4)은 레지스터(BO)로 부터 W레지스터내의 비트위치(16-23)과 (24-31)양쪽에 1/2워어드를 짝을 맞추고, 기억하므로서
Figure kpo00001
워어드를 처리한다. 이것은 메모리 라이트 동작동안에 메모리(106)에 워어드위치의 좌측 혹은 우측 바이트 위치중 어느 하나로 전달하기 위해 1/2워어드를 준비한다. 결정블럭(7B4-A)은 부호가 있는 혹은 부호가 없는 오페란드를 위해 신호F'(7)+를 검사한다.
만약 부호가 없다면, 블럭(2CC)은 OOFFOO을 지닌 레지스터(BO)앤드링하고, 그 결과를 W버스(84)위에 놓으므로서 모든 0에 대해 레지스터(BO)의 우측반의 좌측바이트 위치를 시험한다. 결정블럭(2CC-A)은 모든 0에 대해 0버스(17)를 시험한다. 레지스터(BO)로 부터의정보는 R버스(13), 앤드링 동작이 수행되는 DALU(15), 선택기(20), 0버스(17)와 시프터(19)를 거쳐 W버스(84)에 보내진다. 만약 그 결과가 0과 같지 않으면, 블럭(019)은 I레지스터(57)에 있는 오우버 플로우비트를 세트시키고, XW루틴으로 브랜치한다. 만약 그 결과가 0과 같으면, 모든 0에 대해 오페란드의 좌측반을 시험할 필요가 있다. 이것은 1/2워어드가 0확장되었거나 정의부호 확장되었음을 가리킨다.
블럭(418)은 레지스터(BO)의 내용을 I버스(14)로 전달한다. 여기서 결정블럭(418A)은 부호비트 IBUS16+를 시험한다. 그것이 논리0이기 때문에, 부호비트 IBUS16+는 결정블럭(2CC-A)에서 시험되고, 그 다음 블럭(018)은 A레지스터의 내용을 W버스 (84)위로 전달한다. 0버스(17)신호가 0이 아니면, 블럭(019)에 있는 I레지스터(57)에서 오우버폴로우비트 0이 세트되고, 그 다음 퍼엄웨어는 XW 루틴으로 브랜치한다.
결정블럭(7B4-A)이 부호가 있는 오페란드를 가리키면 블럭(6CC)에서 레니스터(BO)의 내용이 I버스(14)위에 놓여지고, 결정블럭(6CC-A)은 부호비트 IBUS24+를 시험한다. 만약 부호 비트가 논리0이면 블럭(2CC)은 좌측 바이트를 마스크하고, 레지스터(BO)의 내용을 W버스(84)위로 전달한다. 결정블럭(2CC-A)은 다시 다음에 설명된 바와같이 모든 0을 위해 0버스(17)를 시험한다. 만약 부호비트 신호 IBUS24+가 논리 1이면, 블럭(6CD)는 레지스터(BO)를 보수계산하고, 그것을 OOFFOO16에 의해 마스크한다. 결정블럭(6CD-A)은 모든 0을 위해 시험하고, 만약 모두 0이면 XW 루틴으로 브랜치하던지 혹은 블럭(019)에서 보수비트를 세트시킨다.
결정블럭(AE-AD)신호 ODSIZ1+는 논리0일때 블럭(3AF)에서 W레지스터(21)의 우측워어드 위치에 그리고 Q레지스터(50)에 기억된 워어드 오페란드를 가리킨다. 결정블럭(3AF-A)은 신호F'(7)+를 시험하고 만약 논리 1이면 부호있는 오페란드를 가리키고, 만약 논리0이면 부호없는 오페란드를 가리킨다.
블럭(018)은 레지스터(AO)의 내용을 W버스(84)위에 놓고, 결정블럭(018A)은 0버스(17)위의 정보가 모두 0인가를 체크한다. 만약 그렇다면 퍼엄웨어는 명령을 실행하기 위해 브랜치한다. 만약 0버스(17)신호가 모두 0을 가리키지 않으면, 블럭(019)은 I레지스터 (57)에 있는 오우버플로우신호를 세트한다.
레지스터(AO, K7)의 내용이 스왑되고, 레지스터(BO, L7)의 내용이 스왑되는 스왑명령(KSW)의 실행은 블럭(52 C)에서 시작한다. 레지스터 K7 및 L7은 DRAM(11)내에 있다.
블럭(52C)은 레지스터(K7)의 내용을 레지스터(AO)와, W레지스터(28)의 좌측 워어드위치로 전달하며, 그리고 레지스터(AO)의 내용을 레지스터(K7)로 전달한다. 결정블럭 (52C-A)은 신호 ODSIZ1+를 시험하고, 만약 논리0이면 워어드 오페란드를 가리키고 블럭(3Bl)으로 브랜치한다. 만약 논리1이면 비트스프링, 1/2워어드 혹은 2워어드 오페란드를 가리키고 블럭(7Bl)으로 브랜치한다.
블럭(3Bl)은 레지스터(L7)의 내용을 레지스터(BO)와, W레지스터의 우측워어드 위치로 전달하며, 레지스터(BO)의 내용을 레지스터(L7)로 전달한다. 결정블럭(3AF-A)은 상술된 바와같이 부호가 있거나 혹은 없는 오페란드를 위해 신호F' (7)+를 시험하고, 올바르게 확장된 비트에 대해 체크하고, 오우버플로우에 대해 시험한다.
블럭(3Bl)은 레지스터(L7, BO)사이에서 블럭(7B)과 결정블럭(7AF)이 한것과 동일한 스왑을 수행한다. 신호 ODSIZ4+는 논리 1일때 2워어드 오페란드를 가리키고, XW루틴으로 브랜치한다. 신호 ODSIZ4+는 논리 0에서 결정블럭(06F)을 요구한다. 그 사퀸스는 앞에서 설명되었다.
설명되지 않는 XW 루틴은 레지스터에 혹은 메모리(106)에서 오페란드를 기억하고, 다음 명령을 요구한다.
지금까지는 본 발명의 양호한 실시예를 첨부한 도면을 참조하여 기술하였으며, 당분야에서 숙련된 기술을 가진자라면, 본 발명의 특허 청구된 범위내에서 여러가지 변경 및 수정이 가능할 수 있다는 것을 인지할 것이다. 따라서 상기에 언급된 많은 소자들은 똑같은 결과를 나타내면서 본 발명의 특허청구범위내에 속하는 다른 소자들로 대치변경될 수 있을 것이다.

Claims (6)

  1. 명령과 오페란드를 기억하는 메모리서브시스템과 그리고 상기 명령을 수신하여 상기 서브시스템으로 부터 상기 오페란드를 수신하고 상기 명령을 실행하는 중앙처리장치(CPU)를 포함하고, 상기 명령들중 하나는 제1워어드와 제2워어드를 포함하고, 상기 제1워어드는 상기 CPU가 실행할 상기 명령들중의 하나를 식별하기 위한 동작코우드 피일드와, 확장된 정수명령(EII)및 상업용 명령처리가(CIP)의 명령을 포함하는 다수의 명령을 식별하기 위한 확장 코우드 피일드를 포함하고, 상기 제2워어드는 오페란드 형태를 식별하기 위한 데이타 형태 피일드와, 상기 확장 코우드 피일드와 관련하여 실효 애드레스를 발생하는 애드레스 음절 피일드를 포함하는 데이타 처리시스템에 있어서, 상기CPU가 다수의 마이크로워어드를 기억하기 위한 위치를 가지며, 상기 CPU의 동작을 제어하기 위해 상기 다수의 마이크로워어드의 각각에 대해 다수의 제어 기억신호를 발생하는 제어 기억수단과, 상기 데이타형태 피일드를 나타내는 신호를 기억하기 위해 상기 다수의 제1제어 기억신호에 응답하는 레지스터 수단과, 제1동작 코우드신호, 제1제어 기억신호, 제2제어 기억신호, 그리고 다수의 오페란드 크기 신호를 발생하기 위한 데이타 형태 피일드 신호에 응답하는 판독전용 메모리수단(ROM)과, 상기 다수의 제2제어 기억신호와, 그리고 상기 다수의 오페란드 크기 신호중 선택된 한 신호를 나타내는 시험신호를 발생하기 위한 상기 다수의 오페란드 크기 신호에 응답하는 멀티플랙서 수단과, 상기 다수의 제어 기억신호의 다음 신호를 발생하기 위해 상기 다수의 마이크로워어드의 하나 다음의 워어드를 기억하는 상기 위치로 브랜치하기 위한 상기 시험신호에 응답하는 상기 제어 기억수단을 구비한 것을 특징으로 하는 데이타처리 시스템.
  2. 제2항에 있어서, 상기 판독전용 수단이 다수의 입력 애드레스 단자와 인 데이블 단자를 가지며, 상기 인에이블 단자는 판독전용 메모리를 인에이블 하기 위해 상기 EII및 상기 CIP명령을 지시하는 제3제어 기억신호에 응답하는 판독전용 메모리(ROM)와, 상기 데이타형태 피일드 신호에 응답하고, 상기 EII오페란드를 나타내는 상기 다수의 오페란드 크기 신호를 발생하기 위해 EII오페란드를 지시하는 제1상태에서 상기 제1동작 코우드 신호에 응답하고, 그리고 CIP명령 오페란드를 지시하는 제2상태에서 상기 제1동작, 코오드 신호에 응답하고, 상기 CIP명령 오페란드를 나타내는 상기 다수의 오페란드 신호를 발생하기 위해 상기 데이타형태 피일드 신호에 응답하는 상기 입력 대으레스 단자를 구비한 것을 특징으로 하는 데이타처리 시스템.
  3. 제2항에 있어서, 상기 판독전용 메모리 입력 애드레스 단자가 추가로 상기 메모리 서브 시스템에 기억될 상기 오페란드를 지시하는 제1상태에서 제4제어 기억신호에 응답하고, 다수의 레지스터에 기억될 상기 오페란드를 지시하는 제2상태에서 상기 제4제어 기억신호에 응답하고, 그리고 상기 오페란드크기 신호를 발생하기 위해 상기 데이타 형태 피일드 신호에 응답하는 것을 특징으로 하는 데이타처리 시스템.
  4. 제3항에 있어서, 상기 판독전용 메모리 입력 애드레스 단자가 추가로 상기 제2상태에서 상기 제4제어 기억신호에 응답하고, 제1상태에서 제5제어 기억신호에 응답하고, 그리고 제1레지스터에 기억될 상기 오페란드의 크기를 지시하는 상기 오페란드 크기 신호를 발생하기 위해 상기 데이타형태 피일드 신호에 응답하는 것을 특징으로 하는 데이타처리 시스템.
  5. 제4항에 있어서, 상기 판독전용 메모리 입력 애드레스 단자가 추가로 상기 제2상태에서 상기 제4제어 기억신호에 응답하고, 제2상태에서 제5제어 기억신호에 응답하고, 그리고 제2레지스터에 기억될 상기 오페란드의 크기를 지시하는 상기 오페란드 크기 신호를 발생하기 위해 상기 데이타형태 피일드 신호에 응답하는 것을 특징으로 하는 데이타처리 시스템.
  6. 명령과 오페란드를 기억하는 메모리서브시스템과, 상기 명령을 수신하고 이 명령을 실행하기 위해 상기 서브시스템으로 부터 상기 오페란드를 수신하는 프로세서 장치와, 마이크로 명령을 기억하기 위한 위치를 가지며, 상기 프로세서 장치의 동작을 제어하기 위해 상기 마이크로프로그램의 각각의 마이크로워어드에 대해 다수의 출력신호를 발생하는 제어 기억부를 구비하여 상기 한 종류의 명령이 특별한 종류의 처리 동작을 지정하는 동작코우드를 포함하고, 그리고 프로세서장치가 상기 한 종류의 명령의 일부인 특별한 명령들을 식별하기 위한 제1피일드와, 상기 처리 동작이 수행되는 오페란드 형태를 식별하기 위한 제2피일드를 수행하도록 다른 크기의 오페란드를 처리하기 위한 데이타처리 시스템에 있어서, 상기 프로세서 장치가 상기 제2피일드 중 하나를 기억하기 위해 상기 제어 기억 신호에 응답하는 레지스터와, 대응 기억된 인디시아를 나타내는 출력신호로 인가된 애드레스에 응답하여 상기 기억부의 다른 애드레스 가능 기억위치에서 다른 크기의 오페란드 인디시아를 호울드하기 위한 애드레스 가능 기억부와, 상기 제어 기억출력신호와, 레지스터의 내용을 나타내는 신호와, 그리고 애드레스로서 상기 제1피일드를 상기 애드레스 가능 기억부에 나타내는 신호를 인가하기 위한 상기 레지스터 및 상기 제어 기억부에 연결되게 하기 위한 수단과, 상기 제어 기억 출력신호에 응답하고, 상기 애드레스 가능 기억 출력신호에 의해 나타나는 오페란드 크기를 표시하는 단일 신호를 발생하기 위해 상기 다수의 애드레스 가능 기억 출력 신호에 응답하는 수단과, 상기 프로세서 장치가 상기 단일 신호에 의해 표시된 크기의 오페란드를 처리하도록 상기 제어 기억부를 마이크로프로그램 서브루틴으로 브랜치하기 위하여 상기 단일신호를 상기 제어 기억부에 연결하는 수단을 구비한 것을 특징으로 하는 데이타처리 시스템.
KR8205399A 1981-12-01 1982-12-01 데이타 처리 시스템 KR880000340B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US326,442 1981-12-01
US81-326442 1981-12-01
US06/326,442 US4491908A (en) 1981-12-01 1981-12-01 Microprogrammed control of extended integer and commercial instruction processor instructions through use of a data type field in a central processor unit

Publications (2)

Publication Number Publication Date
KR840003080A KR840003080A (ko) 1984-08-13
KR880000340B1 true KR880000340B1 (ko) 1988-03-20

Family

ID=23272228

Family Applications (1)

Application Number Title Priority Date Filing Date
KR8205399A KR880000340B1 (ko) 1981-12-01 1982-12-01 데이타 처리 시스템

Country Status (7)

Country Link
US (1) US4491908A (ko)
EP (1) EP0080901B1 (ko)
JP (1) JPS58161042A (ko)
KR (1) KR880000340B1 (ko)
AU (1) AU550873B2 (ko)
CA (1) CA1181865A (ko)
DE (1) DE3279867D1 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4853956A (en) * 1983-05-20 1989-08-01 American Telephone And Telegraph Company Communication system distributed processing message delivery system
US4893235A (en) * 1983-10-03 1990-01-09 Digital Equipment Corporation Central processing unit for a digital computer
US4812971A (en) * 1983-10-03 1989-03-14 Digital Equipment Corporation Central processing unit for a digital computer
US4586130A (en) * 1983-10-03 1986-04-29 Digital Equipment Corporation Central processing unit for a digital computer
GB8421066D0 (en) * 1984-08-18 1984-09-19 Int Computers Ltd Microprogram control
US4942547A (en) * 1985-04-11 1990-07-17 Honeywell Bull, Inc. Multiprocessors on a single semiconductor chip
JPH0642198B2 (ja) * 1985-07-08 1994-06-01 株式会社日立製作所 デ−タ処理装置
JPH0827716B2 (ja) * 1985-10-25 1996-03-21 株式会社日立製作所 データ処理装置及びデータ処理方法
US4956809A (en) * 1986-11-24 1990-09-11 Mark Williams Company Method for canonical ordering of binary data for portable operating systems
US5045992A (en) * 1988-10-19 1991-09-03 Hewlett-Packard Company Apparatus for executing instruction regardless of data types and thereafter selectively branching to other instruction upon determining of incompatible data type
JPH02190930A (ja) * 1988-12-29 1990-07-26 Internatl Business Mach Corp <Ibm> ソフトウエア命令実行装置
US5068821A (en) * 1989-03-27 1991-11-26 Ge Fanuc Automation North America, Inc. Bit processor with powers flow register switches control a function block processor for execution of the current command
US5001662A (en) * 1989-04-28 1991-03-19 Apple Computer, Inc. Method and apparatus for multi-gauge computation
ZA91432B (en) * 1990-02-05 1991-11-27 Steiner Silidur A G Andelfinge Covering members for drainage ducts
US6754892B1 (en) * 1999-12-15 2004-06-22 Transmeta Corporation Instruction packing for an advanced microprocessor
US7698539B1 (en) 2003-07-16 2010-04-13 Banning John P System and method of instruction modification
US7606997B1 (en) 2003-07-18 2009-10-20 Guillermo Rozas Method and system for using one or more address bits and an instruction to increase an instruction set
KR101700405B1 (ko) * 2010-03-22 2017-01-26 삼성전자주식회사 레지스터, 프로세서 및 프로세서 제어 방법

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3958221A (en) * 1973-06-07 1976-05-18 Bunker Ramo Corporation Method and apparatus for locating effective operand of an instruction
US4109310A (en) * 1973-08-06 1978-08-22 Xerox Corporation Variable field length addressing system having data byte interchange
US4021655A (en) * 1976-03-30 1977-05-03 International Business Machines Corporation Oversized data detection hardware for data processors which store data at variable length destinations
US4128876A (en) * 1977-04-28 1978-12-05 International Business Machines Corporation Synchronous microcode generated interface for system of microcoded data processors
US4210960A (en) * 1977-09-02 1980-07-01 Sperry Corporation Digital computer with overlapped operation utilizing conditional control to minimize time losses
DE2846495C2 (de) * 1977-10-25 1993-10-21 Digital Equipment Corp Zentraleinheit
ES474427A1 (es) * 1977-10-25 1979-04-16 Digital Equipment Corp Un aparato central de tratamiento para uso en un sistema de tratamiento de datos.
US4135242A (en) * 1977-11-07 1979-01-16 Ncr Corporation Method and processor having bit-addressable scratch pad memory
US4236206A (en) * 1978-10-25 1980-11-25 Digital Equipment Corporation Central processor unit for executing instructions of variable length
US4246644A (en) * 1979-01-02 1981-01-20 Honeywell Information Systems Inc. Vector branch indicators to control firmware
US4309753A (en) * 1979-01-03 1982-01-05 Honeywell Information System Inc. Apparatus and method for next address generation in a data processing system
GB2040519B (en) * 1979-01-03 1983-08-17 Honeywell Inf Systems Data processing systems
US4384340A (en) * 1980-12-24 1983-05-17 Honeywell Information Systems Inc. Data processor having apparatus for controlling the selection of decimal digits of an operand when executing decimal arithmetic instructions
DE3176654D1 (en) * 1980-12-24 1988-03-24 Honeywell Inf Systems Data processing system

Also Published As

Publication number Publication date
EP0080901A3 (en) 1986-04-02
JPS58161042A (ja) 1983-09-24
US4491908A (en) 1985-01-01
EP0080901A2 (en) 1983-06-08
AU550873B2 (en) 1986-04-10
DE3279867D1 (en) 1989-09-14
AU9083882A (en) 1983-06-09
CA1181865A (en) 1985-01-29
JPH059816B2 (ko) 1993-02-08
KR840003080A (ko) 1984-08-13
EP0080901B1 (en) 1989-08-09

Similar Documents

Publication Publication Date Title
KR880000340B1 (ko) 데이타 처리 시스템
US4524416A (en) Stack mechanism with the ability to dynamically alter the size of a stack in a data processing system
CA1123959A (en) Data processing apparatus having opcode extension register
US5375248A (en) Method for organizing state machine by selectively grouping status signals as inputs and classifying commands to be executed into performance sensitive and nonsensitive categories
US3898624A (en) Data processing system with variable prefetch and replacement algorithms
US4395758A (en) Accelerator processor for a data processing system
US4229801A (en) Floating point processor having concurrent exponent/mantissa operation
US4204252A (en) Writeable control store for use in a data processing system
US4322846A (en) Self-evaluation system for determining the operational integrity of a data processing system
WO1994003860A1 (en) Massively parallel computer including auxiliary vector processor
JPS6114535B2 (ko)
JPS6298440A (ja) プログラマブルアクセスメモリ
GB1585284A (en) Cpu/parallel processor interface with microcode extension
US4371924A (en) Computer system apparatus for prefetching data requested by a peripheral device from memory
US4348724A (en) Address pairing apparatus for a control store of a data processing system
US4312036A (en) Instruction buffer apparatus of a cache unit
US4240142A (en) Data processing apparatus providing autoincrementing of memory pointer registers
US4360869A (en) Control store organization for a data processing system
US4250545A (en) Data processing apparatus providing autoloading of memory pointer registers
US5034879A (en) Programmable data path width in a programmable unit having plural levels of subinstruction sets
CA1182579A (en) Bus sourcing and shifter control of a central processing unit
US5832533A (en) Method and system for addressing registers in a data processing unit in an indexed addressing mode
US3942156A (en) Indirect arithmetic control
US4348723A (en) Control store test selection logic for a data processing system
EP0177268B1 (en) Programmable data path width in a programmable unit having plural levels of subinstructions sets