본 발명은 마이크로 컴퓨터에 관한 것으로, 특히 마이크로 컴퓨터에 의해 실행되어진 동시에 발생하는 다수의 처리를 스케쥴링(scheduling)하는 것에 관한 것이다.
유럽 특허출원 제0113516호에는 동시에 발생하는 다수의 처리들을 실행하기 위한 마이크로 컴퓨터가 기술되어 있다. 이는 링크 리스트를 사용하여 처리를 스케쥴하고 디스케쥴하기 위해 제공된다. 또한 이는 처리들간의 동기화된 멧세지 통신을 제공한다. 스케쥴링 장치는 처리들이 그들 프로그램 순차내의 대응단들에 있을때 발생하도록 멧세지 통신을 허용하는 처리들을 스케쥴 혹은 디스케쥴하도록 배열된다. 그러한 실예에 있어서, 모든 처리들은 동일 우선권을 갖는것으로 다뤄진다.
본 발명의 목적은 다른 처리들에게로 서로 다른 우선권을 할당하게 해주는 개량된 마이크로 컴퓨터를 제공하는데에 있다.
또한 본 발명의 목적은 처리 대기 실행이 그들의 우선권에 따라 그룹화(groupe)될 수 있는 마이크로 컴퓨터를 제공하는데에 있다.
본 발명은 다수의 프로그램 단계에 따라서 동시에 발생하는 다수의 처리를 실행하도록 배열된 프로세서 및 메모리를 구비한 마이크로 컴퓨터가 제공되는데 상기 프로그램 단계들은 프로세서에 의해 연속적인 실행을 위한 다수의 명령어로 구성되며, 각각의 명령어는 프로세서에 의해 실행되어진 소정의 가능을 지시하는 한 세트의 기능 비트를 포함하며, 여기에는
(a) 상기 프로세서는, 1) 다수의 레지스터와 이레지스터에게 또는 이로부터 데이타전달하는데 사용하기 위한 데이타 전달장치, 2) 각각의 명령어를 입수하기 위한 그리고 프로세서 레지스터들중에 하나에 상기 명령어와 연관된 값을 부하하기 위한 장치 및 3) 프로세서가 상기 기능 비트에 따라 동작하도록 하는 상기 기능비트에 응답하는 레지스터와 상기 데이타 전달장치를 제어하기 위한 제어장치를 포함하고 있으며, (b)마이크로 컴퓨터는 스케쥴링 장치를 포함하되, 스케쥴링 장치는 1) 프로세서에 의해 실행되어진 현재 처리를 지시하기 위한 장치, 2) 각각의 동시에 발생하는 처리를 위한 프로그램 스테이지 지시기, 3) 각각의 처리의 할당된 우선권을 지시하기 위한 장치, 4) 프로세서에 의해 제1의 콜렉션(collection) 대기 실행을 형성하는 하나이상의 제1의 우선권 처리들을 확인하기 위한 장치, 5) 프로세서에 의해 또 다른 콜렉션 대기실행을 형성하는 하나이상의 또 다른 우선권 처리를 확인하기 위한 장치, 6) 부가된 우선권 처리에 따라 상기 콜렉션들중의 하나에 처리를 부가시키기 위한 장치 및, 7) 상기 콜렉션 각각에 다음의 처리를 지시하기 위한 다음 처리 지시기등을 포함하고 있으며, c) 프로세서는 현재 처리 실행을 멈추게 하도록 동작할 수 있으며 또 다른 처리가 현재의 처리를 동시에 발생하는 다수의 처리들간의 그 처리 시간으로 분할하도록 만들어 주며, 상기 프로세서는 또한 각각의 콜렉션에 응답하며 상기 다음 처리 지시기에 응답하는 장치를 포함하여 실행을 위한 다음 처리의 선택이 처리의 우선권에 따르게 한다.
터엄(term) 마이크로 컴퓨터가 일반적으로 집적 회로 방식을 기초로 한 작은 크기의 컴퓨터에 관한 것이지만 여기에는 컴퓨터가 얼마나 작아야 하는 어떠한 제한은 없다.
이하 본 발명은 첨부된 도면과 그에 다른 여러 실시예를 통하여 더욱 상세히 설명될 것이다.
이 실시예에 기술된 마이크로 컴퓨터는 외부통신을 허용하는 링크와 마찬가지로 RAM의 형태로 프로세서와 메모리 양자를 가지는 단일 실리콘 칩 형태의 집적회로 방식을 포함한다. 마이크로 컴퓨터의 주 소자는 P형의 잘 보상된 MOS기법(R-well complementory Mostechnology)을 사용한 제1도에 도시된 단일 실리콘 칩(11)이다. 중앙처리장치(이하 CPU라 칭함, 12)는 약간의 판독전용 메모리(이하 RAM이라 칭함 13)도 제공되며 이너페이스 제어논리(15)에 의해 제어된 메모리 인터페이스(14)에 접속된다. CPU(12)는 산술논리유니트(이하 ALU로 칭함), 레지스터 및 제2도에 좀더 자세히 도시된 데이타 경로와 조합되어 있다. CPU(12)와 메모리 인터페이스(14)는 칩(11)상의 소자들간에 상호 접속하는 버스(16)에 접속된다. 마이크로 컴퓨터는 랜덤억세스 메모리(이하 RAM으로 칭함, 19)라 ROM(20)으로 제공되며 칩상의 다량의 메모리는 1K 바이트보다 작지않아서 프로세서(12)가 외부 메모리 없이도 동작할 수 있다. 양호하게는 칩상의 메모리는 적어도 4K 바이트이다. 외부 메모리 인터페이스(23)는 임의의 외부 메모리에 접속하기 위한 다수의 핀(24)에 접속되도록 제공된다. 마이크로 컴퓨터가 회로망을 형성하는 다른 컴퓨터에 링크되어지도록 하기 위하여, 다수의 일련 링크(25)가 각각 입력과 출력핀들(26 및 27)로 제공된다. 일련 링크의 입출력핀은 자체의 단일선에 의해 제2도에 도시된 바와같은 또 다름 마이크로 컴퓨터상의 일련 링크의 대응 입출력핀에 분할되지 않는 단일 방향으로 각각 접속되어 있다. 각각의 일련 링크는 처리 스케쥴 논리를 구비한 동기 논리 유니트(10)에 접속된다.
제1도에 도시된 블록도는 유럽특허출원서 No. 83307078.2와 일본특허출원서 No. 221455/1983 및 미국 특허출원서 Nos. 552601, 552602, 553027, 553028 및 553029에 포함된 것과 일치한다. 설명이 반복되는 것을 피하기 위하여, 그 마이크로 컴퓨터의 구조 및 동작에 대한 상세한 설명은 생략되겠지만 상술한 특허출원서들내의 설명은 본원 발명을 설명하는데 참조하여 기술된다.
본 실시예는 개량된 형태의 트랜스퓨터(Transputer 상표 INMOS 국제 plc)마이크로 컴퓨터가 제공된다. 상술한 특허출원서들내에 기술된 특정 실시예에 있어서, 모든 처리는 동일 우선권을 갖는 것처럼 취급되었다. 한 처리와 또 다른 처리간에 통신된 메세지는 연속적인 동기와 작동간의 단일 메세지 길이를 가졌으며, 기술된 실예에는 메세지 길이가 1개의 워드로 되어있다. 만일 처리가 다수의 교호입력채널중의 하나로부터 입력에 요구되어졌을 경우 이는 출력 처리가 가능 채널중의 하나의 출력 작동을 시작할때까지 그러한 채널들을 테스트하기 위하여 스케쥴되어져 남도록 필요하게 된다.
본 실시예는 개량된 것으로서 이는 다른 우선권을 다른 처리들에게로 할당되게 하다. 이는 처리들간의 다양한 길이 메세지 통신을 허용하며, 각각의 메세지는 바이트와 같은 1개 이상의 표준 바트 길이 단위로 구성되어 있다. 더욱이 이는 또한 출력처리를 대기하는 동안 스케쥴 되어 남도록 할 필요없이 입력처리가 다수의 교호 입력채널들중의 하나로부터 입력으로 행하여지도록 해준다.
마이크로 컴퓨터의 전체 배열은 일반적으로 상술한 특허출원서들에 기재된 것과 비슷하다. 아래 주어지는 설명에는 상술한 특서출원서내의 실시예에 상응하는 부분에는 유사한 명칭으로 주어진다. 메모리는 포인터에 의해 지시될 수 있는 어드레스 가능한 위치를 가지는 다수의 처리 작업 공간이 제공된다. 메세지 통신은 동일 마이크로 컴퓨터상의 통신을 처리하는 처리의 경우에 있어서 어드레스 가능한 메모리 위치(여기에서는 소위 소프트채널)를 통하여 될 수 있다. 서로 다른 마이크로 컴퓨터들간의 통신을 처리하는 처리를 하기 위해 입, 출력 채널(여기에서는 소위 하드채널)은 일련 링크내에 제공되며, 이러한 채널들은 메모리내에 제공된 소프트 채널에 비슷한 방식으로 어드레스 될 수 있다.
상술한 개량을 수행하기 위하여, 마이크로 컴퓨터의 구조 및 동작에 있어 다양한 변형이 필수적이며, 후술되는 설명은 그러한 견지에서 상기 변형이 그러한 개량을 이루어지게 하기 위하여, 상술한 특허출원서의 실예에서와 같이, 기술된 실예의 특정 워드길이는 16비트이지만 8, 16, 24, 32와 같은 다른 워드길이가 사용될 수 있다는 것을 인지하게 될 것이다.
더욱이 본원의 경우에 있어서, 다른 워드길이 마이크로 컴퓨터는 동일 회로망내에서 접속될수 있어 이는 그들은 독립적인 워드길이를 무시하고 서로 통신될 수 있다.
이러한 실시예에서, 동일 마이크로 컴퓨터 혹은 다른 마이크로 컴퓨터들간의 메세지 통신은 하나이상의 표준 비트 길이의 메세지 단위를 전송하므로써 이루어지며 각각의 메세지 단위는 8비트로 구성되어 1바이트를 형성한다. 이는 메모리내에 바이트를 동일시할 수 있는데 필수적이라는 것을 의미한다. 프로세서는 워드내로 메모리를 억세스하고 모든 바이트 동작은 프로세서에 의해 실행된다. 제5도에 도시된 바와같이, 포인터는 단일 워드데이타이다(이 특정한 실예의 16비트에 있어서), 가장 중요치는 않는 비트(The least significant bit ; 이하 LSB라 칭함)는 바이트 선택기로서 작용하고 가장 중요한 비트(The most significant bit ; 이하 MSB라 칭함)인 15비트는 워드 어드레스를 제공한다. 바이트 선택기를 설명하는데 필요한 비트의 수는 마이크로 컴퓨터의 워드 길이에 따른다. 16비트 장치의 경우에 있어서, 오직 1비트는 바이트 선택기로써 필요하게 된다. 그러나 바이트 선택기는 24 혹은 32비트 마이크로 컴퓨터에 대하여 2비트 및 80비트 마이크로 컴퓨터에 대하여 4비트를 필요로 한다는 것을 인지하게 될 것이다. 포인터가 바이트 보다 워드를 동일시하는데 사용되는 곳에서는 2워드내의 LSB에 대한 포인터가 사용된다.
포인터는 2개의 보충신호 값으로서 취급된다. 이뜻은 만일 포인터의 MSB가 1인 경우 MSB는 양성의 수를 표시하는 모든 잔여비트로써 음성을 취하게 된다. 만일 MSB가 0인 경우 포인터의 모든 비트는 양성값을 나타내는 바와같이 취해진다. 이는 그들이 수치상에 사용되는 방식으로 표준비교 기능을 포인트의 값에 사용되어지도록 한다.
확실한 값은 소정의 특이한 작용이 통신 채널의 상태에 특별히 요구되는 것을 가리키도록 보존되는 포인터와 같이 사용되지는 않는다.
아래 주어지는 설명에서의 명칭들은 이러한 값이나 다른 값들을 설명하는데 사용된다. 즉
Most Neg : 거의 음성인 값(MSB가 1이고 모든 다른 비트는 0)
Most Pos : 거의 양성인 값(MSB가 0이고 모든 다른 비트는 1)
장치 TRUE : 1
장치 PALSE : 0
Not 처리 P :
구동 P :
대기 P :
준비 P :
전술한 특허출원서의 실예에서와 같이, 각각의 처리는 처리에 의해 수동조작된 국부변수와 일시적인 값을 유지하는데 사용된 메모리내의 백터 워드로 구성된 작업공간을 가지게 된다. 작업공간 포인터(이하, WPTR이라 칭함)는 처리 작업공간에 대한 셀위치를 지시하는데 사용된다. 다수의 워드로 구성된 각각의 처리 작업공간과 같이 바이트 선택기를 조합하는 것을 필수적이 아니다. 그러므로 처리의 우선권을 나타내는데 바이트 선택기 비트를 사용하는 것이 가능해진다. 이러한 경우에 있어서, 각각의 처리는 제6도에 도시된 형태의 "처리설명"에 의해 동일시될 수 있다. LSB는 처리의 우선권을 지시하고 MSB 15비트는 처리 작업공간을 동일시하는 메모리의 워드를 지시한다.
본 실시예 있어서, 마이크로 컴퓨터는 각각의 처리에 대하여 2개의 가능 우선권중의 하나를 배당한다. 고우선권 처리는 지정 Pri(designation pri)=0이 주어지며 저우선권 처리는 지정 pri=1을 가진다. 그러므로 각각의 처리 설명기는 작업공간 포인터 WPTR의 "비트와이즈 OR"(bit wise OR)와 처리 우선권 Pri를 취하므로써 형성되는 단일워드를 포함한다. 유사하게 작업공간 포인터 WPTR은 NOT 1과 처리 설명기의 "비트와이즈 AND"를 형성함에 의해 설명기로부터 얻어진다. 처리의 우선권은 1과 처리 서명기의 "1비트와이즈 AND"를 형성함에 의해 얻어진다.
CPU 데이타 경로 및 레지스터
중앙처리장치(12) 및 그 작동은 제2도를 참조하여 더욱 상세히 설명될 것이다.
CPU(12)는 상술 논리 유니트(ALU; 30)과 X버스, Y버스, Z버스 및 양방향성 데이타버스(31)에 접속된 다수의 데이타 레지스터를 가진다. 레지스터들의 작동과 버스들에로의 그들의 상호접속은(32)에서 도식적으로 나타낸 다수의 스위치들에 의해 제어되어 ROM(13)내에 함유된 마이크로 명령어 프로그램으로부터 추출된 신호들에 의해 제어된다.
CPU와 메모리간의 통신은 데이타버스(31)와 마찬가지로 메모리 인터페이스(14)로 안내하는 양방향성 어드레스 경로(33)를 통하여 이루어진다.
상술한 특허출원서들에서와 같이, 각각의 명령어는 제7도에 도시된 형태를 가지는 8비트로 구성되어 있다. 4비트는 명령어의 요구된 기능을 나타내고 4비트는 데이타에 대하여 할당된다. 처리를 위한 프로그램 순차로부터 취출된 각각의 명령어는 명령어 버퍼(34)로 인가되어 2명령어는 디코더(35)에 의해 디코드된다. 디코더(35)의 출력은 상태 멀티프렉서(36)를 통하여 마이크로 명령어 ROM(13)을 어드레스하기 위하여 사용된 마이크로 명령어 레지스터(37)에 인가된다. 명령어 버퍼(34), 디코더(35), 상태 멀티프렉서(36), MIR(37), 마이크로 명령어 ROM(13) 및 스위치들(32)의 동작은 일반적으로 상술한 특허출원서들내에 기술되어 있다.
본 실시예가 2세트의 처리들로 취급하는데 배열되므로써, 그러한 우선권 0과 그러한 우선권 1, 2개의 레지스터 뱅크가 제공된다. 레지스터 뱅크(38)는 우선권 1처리에 대하여 제공되며 비슷한 레지스터 뱅크(39)는 고우선권 0처리에 대하여 제공된다. 양자의 레지스터 뱅크는 X, Y, Z 및 데이타 버스에 유사하게 접속된 비슷한 세트의 레지스터를 갖는다. 간단히 하기 위하여, 레지스터 및 그들에의 접속은 오직 레지스터 뱅크(38)에 대하여만 자세히 도시되어 있다. 특정 우선권들에게로 할당된 2개의 레지스터 뱅크에 부가하여, CPU는 콘스탄트 박스(40), 레지스터 뱅크 선택기(41) 및 우선권 0 및 1처리의 양자에 공통인 제2도에 지시된 다수의 다른 레지스터를 포함한다. 그 레지스터들은 아래와 같다.
약자 레지스터
양자의 우선권처리에 공통
MADDR : 요구된 메모리 위치의 어드레스를 포함하는 메모리 어드레스 레시스터(42)
데이타 출력(DATA OUT) : 데이타버스(31)상의 메모리에 데이타를 공급하기 위한 레지스터(43)
명령어 버퍼(IB) : 메모리로부터 연속적으로 명령어를 수신하기 위한 명령어 버퍼(34)
일시레지스터(TEMP REG) : 일시레지스터(44)
처리포인터 레지스터(PROCPTR REG) : 처리포인터(우선권 지시없음)를 보유하기 위한 레지스터(45)
처리설명기 레지스터(PROCDESC REG) : 처리설명기를 포함하기 위한 레지스터(46)
FRI FLAG : 빈번하게 실행하는 처리의 우선권 0 혹은 1을 지시하기 위한 1비트 레지스터 혹은 프래그(47) 만일 프로세서가 처리를 실행하지 않는다면, 이는 11로 셋트된다.
PROCPRI FLAG : 처리 우선권을 가리키기 위한 1비트 레지스터 혹은 프래그(48)
우선권 1에 대한 뱅크(38)내의 레지스터
TREG : 일시레지스터(49)
IPTR REG : 레지스터(51)에 의해 지시되는 어떠한 처리의 명령어 포인터(IPTR)를 보유하는 레지스터(50)
WPTR REG : 중단된 처리 혹은 현재처리의 작업공간 포인터(WPTR)를 보유하기 위한 레지스터(51)
BPTR REG : 실행을 대기하는 우선권 1처리 리스트의 전단부에서의 처리의 작업공간 포인터를 보유하기 위한 레지스터(52)
FPTR REG : 실행을 대기하는 우선권 1처리 리스트의 전단부에서의 처리의 작업공간 포인터를 보유하기 위한 레지스터(53)
A 레지스터 : ALU(30)에 대한 오퍼란드를 보유하기 위하고 레지스터(55 및 56)으로 겹쳐지게 배열된 제1레지스터(54).
B 레지스터 : 겹쳐진 배열된 제2레지스터(55).
C 레지스터 : 겹쳐진 제3레지스터를 형성하는 레지스터(56).
O 레지스터 : 일시레지스터로 사용되고, 명령어 버퍼(34)내의 명령어로부터 취출된 데이타를 수신하기 위한 오퍼랜드 레지스터(57).
SNP FLAG : 세트가 1일때 현재처리가 전류 명령어의 종결에 디스케쥴되어야 함을 지시하는 프래그(58) 혹은 비트 레지스터.
COPY FLAG : 세트가 1일때, 처리가 메모리에도 혹은 메모리부터 데이타 블록을 카피(copying)하는 것을 지시하는 프래그(59) 혹은 1비트 레지스터.
우선권 0처리들에 대한 레지스터(39)의 뱅크는 우선권 1처리들에 대하여 전술하였던 것과 같다. 설명에 있어서, 써픽스(suffix)[1]은 우선권 1뱅크에 관한 레지스터를 지시하고 써픽스[0]는 레지스터가 우선권 0 뱅크에 관한 것을 지시한다. 우선권이 알려지지 않는 곳에서, 써픽스[Pri]는 적절한 우선권 처리의 레지스터가 사용된다.
레지스터들은 이 경우에 있어서 통상 1비트 프래그(47, 48, 58 및 59)로부터 떨어진 16비트들인 워드 길이이다.
A, B 및 C 레지스터들(54, 55 및 56) 은 가장 산술적이고 논리적인 동작에 대한 소스와 목적지이다. 그들은 겹쳐지게 구성되어 레지스터내로의 부하값은 B레지스터내로의 A레지스터로부터와 C레지스터내로의 B레지스터의 존재성분을 다시 위치시킴에 의해 선행된다. 비슷하게 A레지스터로부터 취출된 값의 저장은 B레지스터의 성분을 A레지스터내로 이동하게 하며 C레지스터의 성분은 레지스터내로 이동하게 한다.
TREG(49)는 데이타블록의 카피를 요하는 소정의 통신 명령어로부터 떨어진 모든 명령어의 실행 동안 일시적인 값을 보유하는데 유용하며 이 경우에 있어서 TREG(49)는 데이타 블록의 카피가 완결된 경우 수행되어진 작용을 지시하는데 사용된다.
레지스터 뱅크(38 및 39)양자의 OREG(57)는 디코더(35)에 접속되어 양자의 우선권 처리들에 대하여 O레지스터 내로 인가되는 명령어부분은 디코더가 적절한 마이크로 명령어를 발생하는데 사용되게 한다. SNP FLAG(58) 및 양자의 우선권 뱅크의 COPY FLAG(59)는 상태 멀티플렉서(36)에 또한 접속되어 마이크로 명령어는 언제든지 프로세서에 의해 발생될 수 있는 다음 작용을 결정하는데 양자의 우선권 처리에 대한 이러한 프래그의 셋팅을 고려할 수 있게 된다.
작업공간 포인터(WPTR)의 처리가 기초로서 사용되어 그것으로부터 처리의 국부변수가 어드레스될 수 있으므로써, 때때로 작업공간 포인터에 의해 지시되는 위치로부터의 오프셋 값을 계산하는데 이 처리가 필수적으로 된다.
콘스탄트 박스(40)는 Y버스에 접속되어 마이크로 명령어 ROM(13)의 제어하에 2버스상에 일정한 값이 주어지게 해준다. 이들은 처리 작업공간내의 위치를 오프셋하도록 지시하는데 사용될 수 있다. 레지스터 뱅크들(38 혹은 39)의 하나 혹은 다른 하나의 선택을 하기 위하여, 레지스터 뱅크 선택기(41)는 PRI FLAG(47), PRO PRI FLAG(48) 및 마이크로 명령어 ROM(13)으로부터의 입력들을 가진다. 레지스터 뱅크 선택기로부터의 출력은 상태 멀티플렉서(36), 디코더(35) 및 스위치(32)에 접속된다. 마이크로 명령어 ROM(13)의 출력에 따르면, 선택기는, PRI FLAG(47) 혹은 PRO PRI FLAG(48)에 의해 지시된 레지스터 뱅크를 선택할 것이다.
처리 작업공간에 대한 메모리 할당
전술한 특허출원서들내에서 기술한 실시예에서와 같이, 마이크로 컴퓨터는 다수의 처리들간의 그 시간을 다같이 분할하는 다수의 처리들을 수행한다. 다같이 수행되는 처리들은 동시에 발생하는 처리로 불려지며 어떠한 시간에서나 실행되어지는 처리는 전류 처리로 불려진다. 각각의 동시에 발생되는 처리는 처리에 의해 수동 조작되는 국부변수 및 일시적인 값을 보유하기 위한 작업 공간으로 불려지는 메모리의 영역을 가진다. 작업공간의 제1국부 변수의 어드레스는 작업공간 포인트(WPTR)에 의해 지시된다. 이는 제3도에서 4개의 동시에 발생되는 처리들인 처리 L, M, N 및 O가 작업공간(60, 61, 62 및 63)을 가진다. 작업공간(60)은 더욱 상세히 도시되어 있으며, WPTRREG(51)로 유지된 작업공간 포인터는 이예에서 10000으로써 지시된 어드레스를 가지는 단일 워드 위치인 0위치에로 지시된다. 이 처리에 대한 다른 국부변수는 작업공간 포인터에 의해 지시된 워드로부터 양성 오프셋 어드레스로서 어드레스된다. 0위치로부터 작은 음성 오프셋을 가지는 약간의 작업공간위치는 스케쥴하기 위하고 통신 목적을 위하여 사용된다.
이러한 실예에 있어서, 3개의 부가 워드위치들(65, 66 및 67)은 WPTR에 의해 지시된 0위치들 이하로 각각 1, 2 및 3의 음성 오프셋을 가지고 도시되어 있다. 이러한 3개의 위치는 아래와 같다 :
위치(65), 처리가 현재처리 될시에 처리에 의해 실행되어진 다음 명령어도 포인터(IPTR)를 보유하도록, 처리가 현재처리가 아닐 경우 사용된다. 위치(66)는 실행을 대기하는 처리들의 열 혹은 링크리스트상의 다음 처리의 작업공간 포인터를 저장하는데 사용된다. 위치(67)는 데이타 블록을 카피하기 위한 포인터로서 혹은 교호입력동작을 수행하는 처리의 상태 지시를 포함하는데 통상 사용된다. 이는 아래에 더욱 상세히 기술될 것이다.
메모리는 또한 통신을 처리하는 처리용의 워드 위치를 제공해주며, 제3도는 소프트 채널(70)과 같이 지시된다.
메모리의 단일 워드에 의해 제공된 소프트 채널을 통한 통신에 부가하여, 외부 통신은 일련 링크를 통하여 발생할 수 있다.
일련 링크
상술한 특허출원서에 기술된 바와같이, 데이타는 하나의 마이크로 컴퓨터로부터 예정된 프로토컬(protocol)을 가지는 데이타 묶음의 형성도 다른 하나의 마이크로 컴퓨터로 전송된다. 데이타의 수신은 확인묶음의 전송에 의해 지시된다. 이러한 특정 실예에 있어서, 데이타는 제8도에 도시된 묶음의 형태로 전송된다. 각각의 묶음은 이 경우에 있어서 1바이트(8비트)로 구성된 표준 데이타 단위로 구성되어 있다. 데이타 묶음은 2개의 개시비트로 시작하되, 각각의 1개는 데이타의 바이트에 의해 주어지며, 정지비트 0으로 종결한다. 제8도에 도시된 바와같이 각각의 묶음의 전송후에, 2묶음을 수신하는 일련 링크의 입력채널은 제9도에 도시된 형태의 확인 묶음을 전송하는 자체 연관된 출력채널에 신호가 주어지도록 배열된다. 이는 단순히 1로 개시하여 0으로 종결하는 2비트 묶음이다.
데이타를 송수신하는 처리에 의해 실행되는 명령어는 하나이상의 그러한 묶음의 데이타가 메세지 전송에 포함되고 연속적으로 명령어가 얼마나 많은 표준 비트를 지시하게 되며 혹은 데이타 바이트가 명령어에 의해 요구된 메세지를 완성하기 위하여 전송되어지는 가를 요구하게 된다. 링크의 구조는 제10도 내지 14도에 더욱 상세히 도시된다. 일련 링크들(70, 71, 72 및 73)에 대한 제10도에 도시된 실예에 있어서는 각각 입력핀(26) 및 출력핀(27)을 가지며 도시되어 있다. 각각의 링크는 병렬 버스들(75 및 76)에 의해 메모리 인터페이스(14)에 접속된다. 또한 링크들은 인터페이스 제어논리에 각가 판독요청 및 서입요청 신호를 제공하는 라인들(77 및 78)에 의한 인터페이스 제어논리(15)에 접속된다. 제어 논리(15)는 라인(79)상의 링크에 "데이타 유효"신호를 제공하도록 배열된다. 각각의 링크는 제2도의 상태 멀티플렉서(36)에 라인(80)상의 상태 출력 신호를 제공하도록 배열된다. Z 버스는 또한 링크(70 내지 73) 각각에 접속되며 Z버스는 라인(81)을 통하여 동기논리(10)에 접속된다. 라인(82)는 동기논리(10)에 마이크로 명령어 ROM(13)으로부터 출력을 제공하며, 라인(83)은 상태 멀티플렉서(36)에 동기논리(10)로부터 출력을 제공한다. 라인(84)는 링크가 프로세서에 의해 작용에 대한 요청을 가리킬때 링크로부터 요청신호를 운반하기 의하여 동기논리(10)에 각각의 링크를 접속한다. 라인(85)는 프로세서로부터 링크에도 요청신호를 제공하도록 하기 위하여 각각의 링크에도 마이크로 명령어 ROM(13)을 접속한다.
제11도는 상세한 하나의 링크를 도시한다. 2링크는 하나의 출력채널(90)과 입력채널(91)을 가진다. 양자는 제14도에 상세히 도시된 링크 인터페이스에 접속된다. 링크 인터페이스(92)는 입력핀(26)과 출력핀(27)에 접속되며 제8도 및 9도를 참조하여 기술된 바와같이 확인 묶음과 데이타를 송신 혹은 순신하도록 배열된다. 출력 채널(90) 입력채널(91) 및 링크인터페이스(92)는 공통클록으로부터 클록펄스들(93)을 모두 공급한다. 출력 채널(90)은 링크인터페이스로부터 출력 확인신호(94)를 수신하고 링크인터페이스에 버스(95)상의 출력 데이타 신호 및 라인(96)상의 출력데이타 유효신호를 공급하는데 배열된다. 비슷하게 입력채널은 링크인터페이스(92)로부터 라인(97)상의 입력데이타와 라인(98)상의 입력 데이타 유효신호를 수신하고 라인(99)상의 입력 확인신호를 링크 인터페이스에 보내도록 배열된다.
리셋라인(101)은 출력채널(90), 입력채널(91) 및 링크인터페이스(92)에 접속된다.
출력채널(90)은 데이타에 대한 라인(77)상의 판독 요청을 버스(76)상에 주어진 어드레스로부터 카피되어지게 하므로써 특정의 메모리 위치로부터 예정된 수의 데이타 바이트를 출력하도록 배열된다. 데이타는 라인(79)상의 출력데이타 유효신호와 함께 병렬 버스(75)상의 채널에 공급된다.
비슷하게 입력채널(91)은 버스(76)상에 주어진 메모리 어드레스에서 라인(78)상의 서입요청을 발생시킴에 의해 특정수의 데이타 바이트를 특정 목적지 어드레스에서 메모리내로 서입되어지도록 할 수 있다. 데이타는 병렬버스(75)상의 메모리에 출력된다.
프로세서로 통신하기 위하여, 채널(90 및 91)양자는 Z버스에 접속된다. 마이크로 명령어 ROM(13)은 라인 85a상의 출력 요청을 출력채널(90)에도 하게 된다. 입력채널(91)의 경우에 있어서, 마이크로 명령어 ROM(13)은 버스(85)상의 3개의 다른 신호를 제공하게 된다. 이는 입력요청(85b) 혹은 구동신호(85c) 혹은 상태조회(85d)를 만든다. 동기논리(10)에 안내하는 버스(84)는 출력채널(90)로부터 출력 우선권 신호(84a)와 출력 진행요청(84b)신호를 운반하게 된다. 버스(84)는 입력우선권(84d)와 함께 입력준비요청(84c) 및 입력채널(91)로부터 동기논리(10)에도 입력우선권 신호와 함께 입력진행요청(84e)신호를 운반하게 된다.
입력채널(91)은 또한 라인(80)상의 상태 출력 신호를 제공한다.
이러한 신호의 기능은 이후에 더욱 상세히 설명하기로 한다.
제12도는 출력채널(90)의 상세한 도시도 이다. Z버스는 채널을 사용한 우선권처리를 지시하는데 사용된 우선권 레지스터(110)에 접속된다. Z버스는 또한 바이트 계수기(111)와 버스(76)상에 지시된 데이타의 어드레스 소스를 포함하는데 사용된 포인터 레지스터(112)에 접속된다. 일련 링크내의 상태장치 각각은 예정된 패턴의 출력신호와 상태레지스터에 대한 새로운 값을 발생하도록 하기 위하여 상태장치에 다영한 입력 신호들과, 상태 레지스터의 값에 응답하는 프로그램 가능한 논리 배열과 장치의 전류 상태를 보유하는 상태 레지스터로 구성되어 있다.
상태장치(113)는 4개의 입력을 가진다. 이들은 라인(85a)상에 출력요청, 라인(101)상의 리셋, 라인(94)상의 출력확인 및 라인(114)상의 계수 제로 신호들이다. 메세지 출력의 초기에서, 바이트 계수기 레지스터(111)는 메세지내에 전송되어진 총 바이트의 수를 지시하지만 각각은 바이트가 전송되는 바와같이 레지스터는 상태장치(113)로부터의 비계수출력신호(115)의 제어하에 감소할 것이며, 바이트가 보내지지 않게 되는 경우 계수 제로신호(114)를 발생할 것이다. 비계수출력(115)에 부가하여, 상태장치(113)은 라인(77)상의 판독요청 출력, 라인(116)상의 진행요청 신호를 제공하며 라인(117)상에 잉크 포인터(Incpointer)를 제공한다. 포인터 레지스터(112)는 처음에 제1의 바이트가 전송되어지는 포인터를 포함하지만 라인(117)상의 신호에 기인하여 각각의 바이트가 전송되어지는 바와같이 포인터가 증가하게 된다.
출력(116)은 (84b)로 표시된 진행요청 신호 라인에 접속되며 또한 우선권 레지스터(110)로부터 라인(119)상의 또 다른 출력을 입수하는 AND게이트(118)에 접속된다. 여기에서, 출력처리의 우선권은 진행요청이 라인(84b)상에 주어졌을때 라인(84a)상에 지시될 수 있다.
메모리 인터페이스로부터의 라인(79)과 버스(75)상의 신호는 채널을 통하여 라인(95 및 96)상의 링크 인터페이스(92)에 직접 접속된다. 버스(75) 및 라인(95)은 전송되어진 바이트 값을 전송하는 반면, 라인(79 및 96)은 데이타가 현재 양호하게 충분한 데이타 바이트를 나타내는 가를 지시하는 메모리 인터페이스에 의해 발생되는 출력데이타 유효신호를 운반한다.
전달상태기(113)에 대한 연속적인 전이 상태는 아래와 같다.
제13도는 입력채널(91)을 상세히 도시한다. 이는 우선권 프래그 즉 레지스터(120), 바이트 계수기 레지스터(121) 및 모두 버스에 접속된 포인터 레지스터(122)를 포함한다. 채널에 대한 입, 출력 신호는 3개의 상태기에 의해 제어된다. 이들은 전달상태기(125), 교호상태기(126) 및 준비상태기들로 구성된다. 상태기들의 각각은 동일소스(93)으로부터 클록펄스들의 입력을 수신한다.
전달상태기(125)는 채널을 통하여 메모리 위치에로 메세지 입력을 제어한다. 프로세서가 입력메세지에 필수적인 명령어를 실행하는 경우 이는 바이트 계수기 레지스터(121)가 입력된 바이트의 수를 지시하도록 하며, 포인터 레지스터(122)는 제1메모리 위치로 포인터가 부하되게 하고 그 안으로 메세지가 카피되어지게하며, 우선권 프래그(120)는 입력 명령어를 실행하는 우선권처리의 지시로 셋트된다. 그후 프로세서는 전달상태기(125)에의 입력중의 하나를 형성하는 라인(85b)상에 입력 요청신호를 갖게 한다. 바이트 계수기 레지스터(121)는 배열된 감쇄기(deremetor)를 포함하여 입력메세지의 각각의 바이트가 수신되는 바와 같이, 계수가 결국 제로에 이를때까지 감소된다. 비슷하게 포인터 레지스터(122)는 증가기(incrementor)를 조합하여 각각의 바이트가 수신되는 바와 같이 포인터가 입력메세지의 다음 바이트에 대한 메모리 목적지 어드레스로 증가하게 한다.
전달상태기(125)는 라인(101)로부터 리셋입력, 바이트계수기(121)로부터 라인(128)상에 계수제로 신호, 라인 85b로부터 입력 요청 신호 및 준비 상태기(127)로부터 라인(129)상에 준비신호를 갖는다. 전달 상태기(125)는 바이트계수기(121)를 감소하기 위하여 라인(130)상의 출력 비계수를 가진다. 비슷하게 이는 포인터 레지스터(122)를 증가하기 위하여 라인(131)상에 출력 잉크포인터를 가진다. 또한 이는 라인(78)상에 출력서입요청, 라인(99)상의 입력확인 및 라인(84e)상의 진행요청 신호들을 제공한다.
전달상태기(125)의 연속적인 상태는 아래와 같이
준비 상태기(127)는 단일플립플롭의 형태가 될 수 있으며, 바이트 데이타가 링크내의 입력 레지스터내에 입수되었는가 또는 아직 확인되지 않았는가를 지시하는데 사용된다. 준비 상태기(127)는 리셋입력(101)을 가지며 부가하여 이는 입력신호를 가지되 라인(98)상의 입력 데이타 유료는 유료바이트의 데이타가 인터페이스의 입력 레지스터내에 입수되어졌을시에 링크인터페이스로부터 취출된다. 덧붙혀, 상태기(127)는 입력 확인 신호 라인(99)로부터 취출된 입력(132)을 갖게 되어 상태기는 바이트 데이타가 링크인터페이스에 의해 입수되어졌을때 하나의 상태로 셋트되며 그후 입력 확인신호가 라인(99)상에 보내졌을시 한번 리셋트된다.
상태기(127)는 교호상태기(126)에 대한 준비입력(134)과 AND 게이트(133)에 대한 하나의 입력과 마찬가지로 전달상태기(125)에 대한 입력을 형성하는 라인(129)상의 단일 출력 준비 신호를 제공한다. 준비상태기(127)의 연속적인 상태는 아래와 같다.
전이
교호상태기(126)는 다수의 교호입력 채널에 대한 명령어를 실행하는 처리들을 행한다. 준비입력(134)에 부가하여, 이는 리셋입력(101), 구동입력(85c) 및 상태 조회입력(85d)를 가진다. 이는 신호라인(84c)에 인도하는 준비요청 출력(135)를 제공한다. 이는 AND 게이트(133)에 대한 제2입력을 형성하는 라인(136)상의 또 다른 출력응답을 제공한다. 출력라인(135 및 84e)양자는 OR 게이트(137)에 대한 입력을 형성한다. OR 게이트는 입력채널을 사용한 우선권 처리를 지시하는 라인(139)로부터의 입력을 입수하는 AND 게이트(138)에 출력을 제공한다.
라인(85)상의 입력신호의 사용에 의하여, 프로세서는 입력요청을 하게할 수 있거나 채널을 구동하게 하거나 또한 상태조회를 하게할 수 있으며, 이들은 아래에서 더욱 상세히 기술된다. 링크는 진행요청이나 라인(84상의 준비요청을 제공하여 게이트를 (137 및 138)에 의하여, 우선권은 양자인 준비요청 혹은 진행요청이 행해질 경우에 라인(84d)상에 지시된다. AND 게이트(133)의 제공으로 준비상태가 라인(80)상에 지시되게 구동한다.
교호상태기(126)의 연속적인 상태는 아래와 같다.
전이
비록 출력 및 입력채널(90 및 91)이 프로세서 및 메모리와 통신할지라도 이는 데이타 묶음 혹은 확인 묶음을 산출하는 링크인터페이스(92)이며, 상기 데이타 묶음 혹은 확인 묶음은 제8 및 9도에 도시된 프로토컬에 의하여 출력되며 그리고 비슷하게 또 다른 마이크로 컴퓨터에 의해 출력되는 이러한 묶음중의 어느 하나를 수신하거나 식별한다. 링크인터페이스는 비트계수기(141)를 가진 출력상태기(140)과 비트계수기(143)를 가지는 입력 상태기(142)로 구성된다. 더욱이 이는 출력데이타버스(95)에 접속되고 바이트데이타를 입수하도록 배열된 출력 레지스터(144)를 포함한다. 입력 레지스터(145)는 입수데이타를 수신하기 위하여 입력핀(26)에 접속된다. 레지스터(145)는 메모리 인터페이스로 안내하는 입력데이타 버스(97)에 접속된다. 또한 링크 인터페이스는 2개의 준비 지시기(146 및 147)를 포함하되 이들은 플립플롭을 구비할 수 있다. 또한 이는 OR 게이트(153)과 마찬가지로 3개의 AND 게이트(150, 151 및 152)를 포함한다. 출력상태기(140)는 아래와 같은 다수의 입출력을 가진다.
입력상태기계(142)용 일련의 상태는 다음과 같다.
두 개의 상태기에 대하여, 특정출력이 출력항에 기재되어 있는데, 이 경우에는 특정출력을 지시하도록 신호 1이 발생된다는 것을 의미한다. 다른 모든 시간에서 기재되지 않은 각 출력의 신호값은 제로이다. 입력항에 기재된 입력을 제외한 모든 입력은 무시된다. 심볼
∧△은 부울동작(boolean operations) AND, OR, NOT을 나타낸다.
래치(148)의 목적은 출력동작을 제어하는 것이다. 1바이트의 데이타가 출력되면, 출력(169)으로부터의 신호는 래치(148)를 AND 게이트(150)를 제어하는 상태로 셋트시켜 래치(148)가 입력상태기로부터의 출력(178)에서의 확인신호에 의해 리셋트될때까지 다른 출력을 금한다. 데이타가 수신되었을때, 라인(177)상의 신호는 래치(149)를 셋트시켜 확인 신호가 수신될때까지 데이타가 입력된다는 점을 상기시킨다. 래치(149)가 확인신호가 전송된 것을 지시하는 출력(170)에 의해 리셋트될때까지 출력상태기에 "확인진행(Ack go)"입력을 허용하도록 AND 게이트(152)를 제어한다.
이와 같이 링크인터페이스의 동작은 다음과 같다. 먼저, 장치가 데이타를 출력시키는 상태를 고려한다. 장치는 버스(95)를 따라 출력레지스터에 데이타가 공급되도록하며, 출력데이타유효신호(96)는 준비지시기(147)를 세트한다. 지시기(147)의 출력은 AND게이트(150)에 공급되며, 래치(148)의 상태는 "데이타 진행(Data go)" 신호가(161)에서 입력이 되도록 한다. 핀(27)상의 출력은 OR 게이트(153)를 통해 유출되며, 따라서, 상기 출력은 출력상태기로부터의 출력(166)상의 신호로 이루어지거나 출력상태기로부터의 출력(167)상에 공급된 신호에 관계된 AND 게이트(151)의 출력으로 이루어진다. 출력상태기(140)용 전이테이블로부터 알 수 있는 바와 같이, 상태기가 리셋트되어 휴지상태인때 라인(166)에 대한 어떠한 지시출력도 없으며, 결과적으로, 제로를 지시하는 신호레벨이 출력핀(27)으로 전송된다. "데이타 진행"신호가 입력(161)에 공급될때, 이는 입력 "데이타 진행"신호는 존재하고, "확인 진행"신호는 존재하지 않는 상태테이블의 라인 번호 4에 대응한다. 지시된 바와 같이 이는 출력(166)상에 신호 원아웃을 발생시킨다. 이는 신호 1을 출력핀(27)에 공급하며, 데이타 묶음의 제1비트를 형성한다. 그후 출력상태기계는 상태테이블의 라인 6에서 볼 수 있듯이 소위 "데이타플래그"의 상태로 이동한다. 다른 입력을 갖지 않는 이와 같은 조건에서 상태기는 출력(166)상에는 "원아웃"신호를, 출력(164)상에는 "부하계수"신호를 제공한다. 이는 제2신호값 1이 핀(27)에 의해 출력되도록 야기시키며, 따라서, 데이타 묶음의 두개의 개시비트가 형성된다.
또한, 비트계수(141)에는 8개의 출력될 비트의 수가 실리게 된다. 그후 출력상태기는 소위 "데이타비트"상태로 되며, 상태테이블의 라인 7, 8에서 볼 수 있듯이 이는 "데이타 아웃"신호를 AND 게이트(151)에 제공하여 레지스터(144)의 내용이 출력핀(27)으로 출력되도록 허용한다. 출력(168)상의 "시프트 아웃"신호는 레지스터(144)로부터 데이타를 순차적으로 인출시키며, 이에 따라 비트계수기(141)내의 계수가 감소된다. 상태테이블의 라인 8에서 볼 수 있듯이 계수기가 제로로되면 "데이타곤"신호가 (169)로 출력되어 래치(148)를 변화시키며 입력(161)으로부터의 "데이타 전송개시"신호를 제거한다. 상태테이블의 라인 8로부터 볼 수 있듯이 라인(166)(167)상에는 어떠한 출력도 존재하지 않으며, 이는 신호값 0가 라인(166)상에 존재함을 의미하며 이는 OR 게이트(153)를 통해 공급되고 따라서 제8도에 도시된 데이타 묶음의 마지막 비트에 종료비트 0을 형성하게 된다. 출력상태기는 휴지상태로 복귀된다.
또한, 출력채널은 확인 묶음을 전송하는데 이용된다. 입력채널이 1바이트의 데이타를 수신할때, 입력채널은 출력 상태기에 신호를 전송하여 제9도에 도시된 형태의 확인 묶음을 출력시킨다. 준비지시기(146)로부터의 신호가 AND 게이트(152)에 공급되며, 이때, 래치(149)의 상태는 "확인 진행"신호가 출력상태기(140)의 입력(163)에 인가되도록 허용한다. 이는 출력상태기(140)용 상태테이블의 라인 3에 대응한다. 이때 출력(166)상에는 "원아웃"신호가 출력된다. 상기 신호는 OR게이트(153)를 통해 전송되어 핀(27)상의 신호레벨을 제로에서 1로 변화시키므로써, 확인 묶음의 제1비트가 형성된다. 상기 신호는, 출력상태기(140)를 확인 플래그 상태로 변화시키므로써 라인(166)(167)상에는 어떠한 다른 출력도 존재하지 않게 되며, 이는 출력(166)상의 신호 레벨을 제로로 다시 변화시키므로써 출력(27)상의 신호 레벨은 확인 묶음의 제2비트인 제로를 형성한다. 또한, 출력상태기(140)는 라인(170)상에 "확인곤"출력을 발생시켜 래치(149)의 상태를 변화시키며, 이에 따라 AND 게이트(152)의 출력이 변화되며, "확인진행"신호는 입력(163)으로부터 제거된다. 그후 출력상태기는 휴지상태로 복귀된다.
입력상태기(142)의 동작은 다음과 같다. 상기 입력상태기(142)는 라인(101)상의 리셋트 신호에 의해 리셋트된다. 입력상태기(142)용 상태테이블의 라인 1에 의해, 상태기는 휴지상태로 존재한다. 어떠한 출력이 존재하지 않기 때문에, 모든 출력상의 신호는 제로의 신호 레벨로 될 것이다. 입력(172)은 입력핀(26)에 접속되어 있으며, "데이타인"신호가 존재하지 않는한 상태기는 상태테이블의 라인 2에 따라 휴지상태를 유지한다. 제8도에 도시된 형태의 데이타 묶음의 또는 제9도에 도시된 형태의 확인 묶음중 임의의 묶음의 개시 비트의 도착에 기인하여 "데이타인"신호가 입력(172)에 수신됨과 동시에 상태기는 상태테이블의 라인 3에서와 같이 "개시"상태로 존재하게 된다. 만일 입력핀(26)에 도착될 다음 비트가 제9도에 도시된 형태의 확인 묶음에 의해 0이면 입력상태기(142)용 상태테이블의 라인 4가 적용될 것이다. 기계는 묶음의 제1비트의 도착에 의해 상태가 "개시"로되나 제2비트가 0이면 라인(172)상에는 더이상 데이타인 신호가 존재하지 않으며, 상태테이블의 라인 4에 따라 출력(178)상에는 "데이타 준비셋트"신호가 출력되며, 상태기는 휴지상태로 복귀된다. 라인(178)상의 출력은 래치(148)에 공급되어 확인 묶음이 수신되는 출력상태기를 지시한다. 상기 출력은 준비지시기(147)에도 공급된다.
그러나, 입력핀(26)에 도달된 묶음의 제2비트가 0가 아니라 1로서 데이타 묶음인 경우에, 상태테이블의 라인 5에서처럼 상태기는 데이타 묶음의 제1비트에 의해 개시비트로 되며 입력은 입력(172)상에 "데이타인"신호로 된다. 이는 출력(174)상에 출력 "부하계수"신호를 발생시키게 되어, 비트 계수기(143)은 데이타 묶음내에서 예상된 비트의 수로 이루어지게 된다. 이와 같은 경우에, 비트의 수는 1바이트의 데이타에 대응하는 8비트가 될 것이다. 그후 기계는 라인 6에서처럼 "데이타비트"인 새로운 상태로 이동하며, 입력(173)이 제로로 되지 않는한 상태기는 출력라인(176)상의 "시프트인"신호에 따라 입력 레지스터(145)를 거쳐 연속적으로 인입비트를 이동시키는 동작을 계속한다. 이에 따라 계수기가 출력(175)상의 "계수감소신호에 따라 순차적으로 감소한다. 계수기(143)내의 계수가 제로로되어 요구된 8비트의 데이타가 수신되었다는 것을 지시할, 입력상태기 테이블의 라인 7이 적용되어 상태기는 계속 "데이타비트" 상태를 유지하며 "계수제로"신호가 라인(173)상에 수신된다. 이는 라인(176)상에 "시프트인"출력을 야기시켜 마지막 데이타비트가 입력 레지스터(145)내로 이동되며 상태기는 "데이타종료"상태로 변환된다. 상태테이블의 라인 8의 조건은 "데이타진행"신호가 라인(177)상에 출력되어 해치(149) 및 준비지시기(146)를 변환시킨다. 그후, 입력상태기(142)는 휴지상태로 복귀된다. 준비지시기(146)에 공급된 "데이타 수신완료"신호는 라인(98)상의 "입력 데이타 유효"신호가 입력레지스터(145)에 의해 현재 완전한 바이트의 데이타가 수신되었다는 것을 지시하도록 한다.
따라서, 제14도에 도시된 링크인터페이스는 출력상태기(140)내의 묶음발생기에 관련 비트계수기 래치 및 게이트를 제공하므로써 데이타는 제8도에 도시된 형태의 묶음이나 제9도에 도시된 형태의 확인 묶음으로 출력된다. 입력상태기(142)는 입력핀(26)에서의 확인 묶음을 수신하는가, 데이타 묶음을 수신하는가를 구별하는 래치 및 비트계수기와 함께 묶음디코더를 형성한다. 데이타 묶음의 경우에, 데이타 묶음은 입력레지스터(145)에 실리게 되며, 완전한 바이트가 수신될때 준비지시기(146)로부터 출력을 제공한다. 확인 묶음의 경우에, 확인 묶음은 입력레지스터(145)에 실리지는 않고 다음 데이타 묶음의 출력을 제어하는데 이용하기 위한 신호를 출력시킨다. 상기 출력 신호는 래치(148)를 변환시켜 AND 게이트(150)를 통해 다음의 "데이타진행"신호를 전송하게 하며, 라인(94)상의 출력 "확인"신호로 하여금 출력될 다른 바이트가 현재 비트(95)를 따라 출력 레지스터(144)에 공급되고 있는가를 지시하도록 한다. 1바이트의 데이타가 입력레지스터(145)에 의해 수신되어 버스(97)를 거쳐 데이타의 수신지로 전송될때, 입력확인신호가 라인(99)에서 발생되어 다른 바이트의 데이타가 입력되기전에 확인-묶음이 출력핀(27)에 의해 전송되어야만 한다.
제14도에서 도시된 링크인터페이스를 사용하므로써, 메세지는 제8도에 도시된 형태의 묶음으로 각각 전송되는 한개 이상의 데이타로 이루어진다는 것을 이해할 수 있을 것이다. 제8도에 도시된 형태의 각 묶음이 입력핀에 의해 수신되는 것과 같이, 제 9도에 도시된 형태의 확인 묶음이 다음의 데이타 묶음이 입력되기전에 관련 출력핀에 의해 출력되어야만 한다. 유사하게 출력핀은 다음의 데이타 묶음이 출력되기 전에 각 데이타 묶음에 대한 확인 묶음을 기다려야 한다. 각 바이트는 전송되어 확인된다.
각각의 바이트가 분리되어 보내지고 확인 되어져야만 할지라도, 그 프로세서는 메세지 전송을 완결하기 위하여 다수의 바이들로 구성된 메세지를 전송하거나 수신함에 의해 단일 출력 혹은 입력명령어에 응답하도록 요구된다.
상술한 실예에 있어서, 입력 및 출력채널 그리고 링크 인터페이스내의 모든 상태기는 공통클록으로부터 타이밍 펄스가 공급된다. 이는 출력핀(27)에 의해 전송된 데이타 및 확인 묶음의 비트주파스를 제어하는데 사용된다. 상술한 실예에서 다음을 가정할 수 있는데, 즉 링크 인터페이스가 출력 메세지 전송을 운반하기 위하여 접속되는 다른 방식은 동일 클록으로부터 타이밍 펄스가 인가된다. 이러한 방식에서, 동기는 입력상태기(142)와 입력핀(26)으로부터의 입수데이타간에서 이루어진다. 그러나, 링크 인터페이스는 입력핀(26)과 입력상태기(142)간에 동기논리로 작동하도록 배열하게 되어 통신목적으로 다같이 접속된 서로 다른 방식은 서로 다른 클록을 사용하게 된다. 그러한 서로 다른 클록은 그들이 비록 다른 위상을 갖더라도 주파수를 가져야 한다. 그러한 동기논리는 메세지내의 비트패턴의 주파수보다 높은 주파수에서 입수비트 패턴을 샘플(sample)하도록 배열되어 신호레벨이 각각의 입수비트에 대하여 샘플된 여러개의 시간을 갖게 된다. 이러한 방식에 있어서, 개시비트의 안내연부는 검출될 수 있게 되어 입력핀(26)에서의 신호레벨은 개시비트의 안내연부를 검출한후에 예정된 시간을 유효하게 취급되어진다. 이러한 방식에서, 입수데이타의 샘플링은 각각의 입수 비트주기를 통하여 대략 중간지점에 이루어진다.
주해 (Notation)
마이크로 컴퓨터가 특히 그 기능, 작동 밋 진행 순서를 참조하여 작동하는 방식의 주어지는 설명에 있어서, 주해가 OCCAM(상표 INMOS 국제 plc) 언어에 의해 사용되었다. 이 언어는 1983년 영국의 INMDS사에 의해 발행되어 분류된 편람 명칭 "프로그래밍 매뉴얼-OCCAM"에 정립되어 있다. 더우기 사용된 주해는 영국특허 출원서 0110642에 충분히 기술되어 있으머, 본원의 설명을 간편히 하기 위하여 본 명세서에서는 반복 설명 않기로 한다.
At 워드(베이스, N, A) A를 N번째 워드 페스트(past) 베이스에서 지적하도록 셋트
At 바이트(베이스, N, A) A를 N번째 바이트 페스트 베이스에서 지적하도록 셋트
R 인덱스 워드(베이스, N, X) X를 N번째 워드 페스트 베이스 값으로 셋트
R 인덱스 바이트(베이스, N, X) X를 N번째 바이트 페스트 베이스 값으로 셋트
R 인덱스 워드(베이스, N, X) N번째 워드 페스트 베이스값을 X로 셋트
R 인덱스 바이트(베이스, N, X) N번째 바이트 페스트 베이스 값을 X로 셋트
워드 오프셋(베이스, X, N) N을 X와 베이스간의 워드수로 셋트
마이크로컴퓨터에 의해 사용된 절차
아래 설명에 있어서,15개의 따른 절차(PROC)가 참조된다. 아래의 6개 절차는 프로세서의 작동설명에 사용된다.
Dequeue
진행
다음처리개시
진행요청조작
준비요청조작
블록카피단계
절차 "Dequeue"는 현재 처리를 나열한 우선차 "Pri"처리의 전단부상의 처리를 만든다.
1. PRDC Dequeue=
2. 순차
3. Wptr 레지스터[Pri] =Fptr 레지스터[Pri]
4. 만일
5. Fptr 레지스터[Pri] =Bptr 레지스터
6. Fptr 레지스터[Pri]=Not처리. P
7. 참(true)
8. R 인덱스워드(Fptr 레지스터[Pri], 링크. S, Fptr 레지스터[Pri])
9. 인덱스워드(Wptr 레지스터[Pri], Iptr. S, Iptr 레지스터[Pri])
절차, "진행"은 설명기가 Proc Desc 레지스터내에 포함된 처리를 스케쥴한다.
이는 우선권, 처리를 이미 실행한 것에 우선하여, 우선권 0처리를 즉시 진행을 개시하도록 한다.
1. PROC 진행=
2.순차
3. Proc Pri 프래그 : =Proc Desc 레지스터 / \ 1
4. Proc Ptr 레지스터 : =Proc Desc 레지스터/ \(1이 아님)
5. 만일
6. (Pri=0) 혹은 ((Proc Pri 프래그=Pri) 그리고(Wptr 레지스터[Pri<> Not 처리.P))
7. 순차--처리를 열(gueue)로 더한다.
8. 만일
9. Fptr 레지스터[Proc Pri 프래그]=Not 처리. P
10. Fptr 레지스터[Proc Pri] 프래그=Proc Ptr 레지스터
11. 참
12. W 인덱스워드(Bptr 레지스터[Proc Pri 프래그], 링크. S Proc Ptr 레지스터)
13. Ptr 레지스터[Proc Pri 프래그] : =Proc Ptr 레지스터
14. 참
15. 순차--Pri을 방해하는 Pri O나 혹은 Pri 1 그리고 휴지 m/c
16. Pri : =Proc Pri 레지스터
17. Wptr 레지스터[Pri] : =Proc Ptr 레지스터
18. R 인덱스워드(Wptr 레지스터[Pri], Iptr. S, Iptr 레지스터[Pri])
19. O 레지스터[Pri] : 0 :
절차 "다음처리개시"는 현재처리를 디스케쥴 하는게 만일 거기에 또다른 진행 가능한 처리가 있을 경우, 다음의 진행가능한 처리를 선택한다. 이는 만일 진행하는데 또다른 우선권 0처리들이 없을 경우 차단된 우선권 1처리가 재개시되게 한다.
절차 "다음처리개시"는 항상 셋트되어진 프래그의 결과로써 실행된다. 그러므로 이러한 처리의 제1의 작용은 그 프래그를 크리어(Clear)하는데 있다.
1. PROC 다음처리개시=
2. 순차
3. SNP 프래그[Pri] : =0--SNP 프래그를 크리어
4. 만일
5. Fptr 레지스터[Pri] <> Not 처리. P
6. Dequeue
7. Pri = 0
8. 순차
9. Pri=1
10. 만일
11. (Wptr 레지스터[Pri]=Not 처리. P) 그리고
12. (Fptr 레지스더[Pri]<> Not 처리. P)
13. Dequeue
14. 참
15. 도약(SKIP)
16. Pri=1
17. Wptr 레지스터[Pri] : =Not 처리. P.
절차 "진행요청조작"은 프로세서에 대해 "진행요청"을 만드는 링크의 결과로써 실행된다. 절차의 설명에 있어서, "Port No"는 요청신호를 만드는 링크의 수이다. 절차는 링크와 연관된 처리워드의 내용을 "Proc Desc 레지스터"에 부하되게 하고 "진행"절차를 실행함에 의해 동작한다.
1. PROC 진행요청조작(VAR Port No)=
2. 순차
3. R 인덱스워드(Port 베이스, PaIt No, Proc Desc 레지스터)
4. 진행
절차 "준비요청조작"은 프로세서에 대한 "준비요청"을 만드는 링크의 결과로써 실행된다. 절차의 설명에 있어서, "Port No"는 링크의 수이다. Port 베이스는 제1의 링크의 어드레스이다. 절차는 링크와 연관된 처리워드의 내용으로부터 교호입력을 수행하는 처리를 동일시한다.
1. PROC 준비요청 조작(VAR Port No)=
2. 순차
3. R 인덱스워드(Port 베이스, Port No, Proc Desc 레지스터)
4. Proc Ptr 레지스터 : =Proc desc 레지스터(1이 아님)
5. R 인덱스 워드(Proc Ptr 레지스터, 상태, S, 일시레지스터)
6. 만일
7. 일시레지스터 = 구동. P
8. W 인덱스워드(Proc Ptr 레지스터, 상태. S, 준비, P)
9. 일시레지스터 =준비. P
10. 도약
11. 일시레지스터=대기. P
12. 순차
13. W 인덱스워드(Proc Ptr 레지스터, 상태, S, 준비. P)
14. 진행
절차 "블록 카피단계"는 메세지의 단일 바이트가 전달되어지게 한다. 그 절차는 항상 셋트되어지는 "카피프래그"의 결과로써 실행한다. 만일 그 절차가 메세지의 최종 바이트를 카피하게 되면 이는 "카피 프래그"를 크리어(비셋트)하고 만일 "T 레지스터"가 처리 설명기를 포함하면 그 처리는 스케쥴된다.
1. PROC 블록카피단계=
2. 순차
3. R 인덱스바이트(C 레지스터[Pri], O, O 레지스터[Pri])
4. 인덱스바이트(B 레지스터[Pri], O, O 레지스터[Pri])
5. 0 레지스터[Pri] : =0
6. 바이트에서(C 레지스터[Pri], 1, C 레지스터[Pri])
7. 바이트에서(B 레지스터[Pri], 1, B 레지스터[Pri])
8. A 레지스터[Pri] =A 레지스터[Pri] -1
9. 만일
10. A 레지스터[Pri] = 0--블록 카피가 완료됨
12. 순차
13. 카피 프래그[Pri] : =0
14. 만일
15. T 레지스터[Pri]<> Not 처리. P
16. 순차
17. Proc Desc 레지스터 : =레지스터
18. 진행
19. T 레지스터[Pri]=Not 처리. P
20. 도착
21. 참
22. 도약 :
프로세서는 순차작동을 수행한다. 이들은 현재 처리의 작동이나 링크의 작동들중의 어느 하나에서 수행된다.
현재처리의 작동에서 수행되게 되는 작동은 "다음처리개시" 및 "불록카피단계"를 수행하거나 혹은 명령어를 페취(fetch), 디코드 및 실행하는 것이다.
링크의 작동상에서 수행되는 작동은 "진행요청조작"을 수행하거나 "준비요청조작"을 수행하는 것이다.
이들 각각의 작동은 마이크로 명령어의 순차에 일치한다. 이러한 작동을 수반하는 소정의 순차내의 최종마이크로 명령어는 "다음작동"이다. 이는 다음 작동을 선정하는 프로세서가 수행되어지게 해둔다.
"다음작동"마이크로 명령어가 실행되는 경우 다음에 수행되어지는 작동을 결정하는 프로세서의 방식은 아래 기술된 바와 같다.
동기 제어논리(10)는 어느때나 프로세서에 가장 최상의 "진행요청" 혹은 "준비요청"을 전송할 것이다. 동기제어논리는 우선권 0 요청 우세가 있을 경우 우선권 1 요청신호를 전송하지 않을 것이다. 이는 상태 멀티플렉서로 를어가는 2개신호, 즉 하나는 요청신호의 존재를 지시하는것, 다른 하나는 그 요청신호의 우선권을 지시하는 것 등에 의해 초래된다.
상태 멀티플렉서는 또한 현재 선택된 프래그와 현재 선택된 카피프래그로부터 오는 신호를 가진다. 그러므로 이는 아래 기술된 바와 같이 선택될 수 있다.
프로세서는 SNP 프래그[Pri] 셋트되었는가를 "다음처리개시"로 수행한다. 그렇지 않으면 프로세서는 그 요청의 우선권이 현재 처리 우선권보다 낮지 않는한 채널요청을 조작할 것이다. 그렇지 않으면 현재처리가 되고 있는 경우 명령어를 페취, 디코드 및 실행하게 될 것이다. 아니면 프로세서는 채널요청 신호가 있을 때까지 대기할 것이다.
아래 주어진 기능의 설명은 부가의 7개절차에 대한 것이다.
링크 입력되게 함
링크 출력되게 함
링크 준비상태조회를 만듬
구동링크
링크 채널 입력작동
링크 채널 축력작동
선택된 처리인가
4개의 절차 "링크입력되게함", "링크출력되게함", "링크준비상태조회를 만듬" 및 "구동링크"는 프로세서와 링크간의 상호작동을 기술한다.
절차 "링크입력되게함(VAR Port No)"은 우선권, 포인터 및 계수로 링크 채널 Port No를 부하하여 그후 링크채널이 메세지를 입력하도륵 하는 링크 채널에 입력요청신호를 만든다. 더욱 상세하게는, 프로세서는 Pri 프래그, C 레지스터[Pri]레지스터 및 프로세서의 A 레지스터[Pri]레지스터로부터의 링크채널의 계수 레지스터를 부하시키어 링크 채널에 입력요청신호를 만든다.
절차 "링크출력되게함(VAR Port No.)은 우선권, 포인터 및 계수로 링크 채널 Port No를 부하시키고 링크채널이 메세지를 출력하도륵 하는 출력요청신호를 만든다. 더욱 상세하게는, 프로세서는 우선권 프래그, 포인터 레지스터 및 Pri 프래그, C 레지스터[Pri]레지스터 및 프로세서의 A 레지스터[Pri]레지스터로부터의 링크 채널의 계수레지스터를 부하시키어 그 링크 채널에도 출력요청신호를 만든다.
절차 "링크준비상태조회를 만듬(VAR Port No, 준비)는 링크 채널 Port No에 준비상태 조회신호를 만든다. "준비"는 링크채널이 준비인 경우 "참"으로, 준비가 아닌경우 "거짓"으로 셋트된다.
절차 "구동링크(VAR Port No.)"는 링크 채널 Port No의 우선권 프래그를 pri 프래그의 값으로 셋트하여 링크 채널로 구동요청신호를 발생한다.
잔여절차는 아래와 같이 기술된다.
1. PROC 링크 채널 입력작동=
2. VAR Port No :
3. 순차
4. W 인덱스워드(Wptr 레지스터[Pri], Iptr S. Iptr 레지스터[Pri])
5. W 인덱스워드(B 레지스터[Pri], 0, Wptr레지스터[Pri] Pri)
6. 워드 오프셋(Port 베이스, B 레지스터[Pri], Port No)
7. 링크 입력되게함(Port No)
8. SNP 그래프[Pri] : =1:
1. PROC 링크채널 출력작동=
2. VAR Port No
3. 순차
4. W 인덱스워드(Wptr 레지스터[PrI], Iptr. S,Iptr 레지스터[Pri])
5. W인덱스워드(B레지스터[Pri], 0, Wptr 레지스터[Pri] [Pri])
6. 워드오프셋(Port 베이스, B 레지스터[Pri], Port No)
7. 링크출력되게함(Port No)
8. SNP 프래그[Pri] : =1 :
1. PROC 이는 선택된 처리인가=
2. --이는 모든 비사용 명령어에 의해 사용된다.
3. 순차
4. R 인덱스워드(Wptr 레지스터[Pri], 0, 0레지스터[Pri])
5. 만일
6. 0 레지스터[Pri] = (-1)
7. 순차
8. W 인덱스워드(Wptr 레지스터[Pri], 0, A 레지스터[Pri])
9. A 레지스터[Pri] : =상태기 참
10. 0 레지스터[Pri]<>(-1)
11. A 레지스터[Pri] : =상태기 거짓 :
기능셋트
유럽 특허 명세서 0110642에 기재된 바와 같이, 마이크로 컴퓨터에 대한 각각의 명령어는 기능셋트로부터 선택된 기능소자를 포함한다. 마이크로 컴퓨터에 의해 실행되는 기능은 직접기능, 프리픽싱(prefixing) 기능 pfix 및 nfix, 그리고 오퍼란드 레지스터인 0 레지스터를 사용하여 한셋트의 동작중 하나를 선택하는 간접기능 opr을 포함한다. 상술한 특허 명세서와 같이, 0 레지스터[Pri]는 PFIX 및 NFIX를 제외한 모든 명령어의 실행 후에 크리어된다.
직접기능의 개량된 셋트와 본원의 작동은 아래와 같다.
직접 기능
국부 부하
정의 : 순차
C 레지스터[Pri] : =B 레지스터[Pri]
B 레지스터[Pri] : =A 레지스터[Pri]
R 인덱스워드(Wptr 레지스터[Pri], 0 레지스터[Pri], A 레지스터[Pri])
목적:위치의 값을 현재 처리 작업공간내로 부하.
국부 기억
정의 : 순차
W 인덱스워드(Wptr 레지스터[Pri], 0 레지스터[Pri] A 레지스터[Pri])
A 레지스터[Pri] : =B 레지스터[Pri]
B 레지스터[Pri] : =C 레지스터[Pri]
목적 : 위치의 값을 현재 처리 작업공간내로 부하.
국부포인터 부하
정의 : 순차
C 레지스터[Pri] : =B 레지스터[Pri]
B 레지스터[Pri] : =A 레지스터[Pri]
워드에서(Wptr 레지스터[Pri], 0 레지스터[Pri], A 레지스터[Pri])
목적 : 위치내의 포인터를 현재 처리 작업공간내로 부하 위치 백터의 제1위치에 대한 포인터를 현재 처리
작업 공간내로 부하
비국부 부하
정의 : R 인덱스워드(A 레지스터[Pri], 0 레지스터[Pri], A 레지스터[Pri])
목적 : 외부작업공간의 값을 부하.
백터값으로부터의 값을 부하.
포인터(간접)-이경우 0 레지스터=0와 같은 값을 사용한 값을 부하.
비국부 기억
정의 : 순차
W 인덱스워드(A 레지스터[Pri], O 레지스터[Pri], 레지스터[Pri])
A 레지스터[Pri] : =C 레지스터[Pri]
목적 : 의부 작업공간내의 위치내로 값을 기억 백터값으로서 값을 기억 포인터(간접)-이 경우 0 레지스터=0와 같은 값을 사용한 값을 기억
비-국부 포인터 부하
정의 : 워드에서(A 레지스터[Pri], O 레지스터[Pri], A 레지스터)
목적 : 워드백터 및 작업공간의 워드로 포인터를 산출.
상수 일정
정의 : 순차
C 레지스터[Pri] : =B 레지스터[Pri]
B 레지스터[Pri] : =A 레지스터[Pri]
A 레지스터[Pri] : =O 레지스터[Pri]
목적 : 값을 부하
상수 부가
정의 : A 레지스터[Pri] : =A 레지스터[Pri] + O 레지스터[Pri]
목적 : 값을 부가
점프(Jump)
정의 : 바이트에서(Iptr 레지스터[Pri], O 레지스터[Pri], Iptr 레지스터[Pri])
목적 : 순방향 혹은 역방향, 루프제공, 루드로부터의 출력, 프로그램의 조건적 구획후의 연속등의 제어를 전달
조건적 점프
정의 : 만일
A 레지스터[Pri]=0
바이트에서(Iptr 레지스터[Pri], O레지스터[Pri], Iptr 레지스터[Pri])
A 레지스터[Pri]< >0
순차
A 레지스터[Pri] : =B 레지스터[Pri]
B 레지스터[Pri] : =C 레지스터[Pri]
목적 : 오직 제로값이 부하되어, 구획의 조건적 실행 혹은 프로그램 및 조건적 루프출력을 순방향 혹은 역방향 제어를 전달, 한세트의 값에 대한 값의 비교를 촉진
호출
정의 : 순차
W 인덱스워드(Wptr 레지스터[Pri], -1, C 레지스터[Pri])
W 인덱스워드(Wptr 레지스터[Pri], -2, B 레지스터[Pri])
W 인덱스워드(Wptr 레지스터[Pri], -3, A 레지스터[Pri])
W 인덱스워드(Wptr 레지스터[Pri], -4, Iptr 레지스터[Pri])
A 레지스터[Pri] : =Iptr 레지스터[Pri]
워드에서 (Wptr 레지스터[Pri], -4, Wptr 레지스터[Pri])
워드에서 (Iptr 레지스터[Pri], O 레지스터[Pri], Iptr 레지스터[Pri])
목적 : 절차를 호출
작업공간 조절
정의 : 워드에서(Wptr[Pri], O 레지스터[Pri], Wptr[Pri])
목적 : 작업공간 포인터를 조절
간접 기능
작동
정의 : 작동(O 레지스터[Pri])
목적 : 소정의 동작을 한정하는 코드로서 오퍼란드 레지스터 O 레지스터[Pri]의 내용을 사용하여 동작을 수행.
프리픽싱 (Prefixing) 기능
프리픽스
정의 : O 레지스터[Pri] : =O 레지스터[Pri]<<4
목적 : 영역 0 내지 15내가 아닌 명령어 오퍼란드를 하나 이상의 프리픽스 명령어를 사용하여 나타내게함.
네가티브 프리픽스
정의 : O 레지스터[Pri] : =(NOT O 레지스터[Pri]<<4
목적 : 네가티브 오퍼란드를 제로 혹은 2 이상의 프리픽스 명령어에 의해 주어지는 단일 네가티브 프리픽스에 의해 표시되게 함.
레지스터 수동조작동에 대한 작동
역전
정의 : 순차
O 레지스터[Pri] : =A 레지스터[Pri]
A 레지스터[Pri] : =B 레지스터[Pri]
B 레지스터[Pri] : =O 레지스터[Pri]
목적 : 대칭작동의 오퍼란드를 역전시키되, 여기서 이는 컴파일러(compiler)내에서 간편하게 실행될 수 없다.
복귀
정의 : 순차
R 인덱스 워드(Wptr 레지스터[Pri], 0, Iptr 레지스터[Pri])
워드에서(Wptr 레지스터[Pri] 4, Wptr 레지스터[Pri])
목적 : 호출된 절차로부터 복귀
일반호출
정의 : 순차
O 레지스터[Pri] : =Iptr 레지스터[Pri]
Iptr 레지스터[Pri] : =A 레지스터[Pri]
A 레지스터[Pri] : =O 레지스터[Pri]
목적 : A 레지스터내의 새로운 명령어 포인터와 함께 절차 호출을 수행
일반조절 작업공간
정의 : 순차
O 레지스터[Pri] : =Wptr 레지스터[Pri]
Wptr 레지스터[Pri] : =A 레지스터
A 레지스터[Pri] : =O 레지스터
목적 : 현재처리의 작업공간은 변화.
어드레싱용 동작
포인터를 명령어로 부착
정의 : 바이트에서(Iptr 레지스터[Pri], A 레지스터[Pri], A 레지스터[Pri])
목적 : 포인터를 명령어로 부하
바이트 가입
정의 : 순차
바이트에서(A 레지스터[Pri], B 레지스터[Pri], A 레지스터[Pri])
목적 : 포인터를 백터의 항으로 산출수를 ldco, ldwn, bsub를 사용한 바이트 포인터를 변환 워드가입
정의 : 순차
워드에서(A 레지스터[Pri], B 레지스터[Pri], A 레지스터[Pri]
B 레지스터[Pri] : =C 레지스터[Pri]
목적 : 포인터를 워드의 백터항으로 산출구를 ldco, ldln, wsub를 사용한 워드포인터로 변환.
바이트 계수
정의 : A 레지스티[Pri] : =A 레지스터[Pri]*트라바이트 피워드(Tra Bytes Per Word)
목적 : 워드로 측정한 길이를 바이트로 측정된 것으로 변환, 트라바이트 피워드는 바이트의 수/마이크로 컴퓨터에 의해 사용된 워드를 뜻한다.
워드계수
정의 : 순차
C 레지스터[Pri] : =B 레지스터[Pri]
B 레지스터 : =바이트부(A 레지스터)
A 레지스터 : =워드부(A 레지스터)
목적 : 포인터를 Wcnt, bcnt, add를 사용한 O으로부터 바이트 오프셋으로 변환.
루핑 (looping)
루프종결
정의 : 순차
R 인덱스워드(B 레지스터[Pri], 1, C 레지스터[Pri])
C 레지스터[Pri] : =C 레지스터[Pri]-1
W 인덱스워드(B 레지스터[Pri], 1, C 레지스터[Pri])
만일
C 레지스터[Pri]>0
순차
R 인덱스워드(B 레지스터[Pri], 0, C 레지스터[Pri])
C 레지스터[Pri] : =C 레지스터[Pri]+1
W 인덱스워드(B 레지스터[Pri], 0, C 레지스터[Pri])
워드에서 (Iptr 레지스터[Pri], -A 레지스터[Pri], Iptr 레지스터[Pri])
참
도약
목적 : 응답기(replicator)를 이행시킴
단일 바이트 동작
바이트 부하
정의 : R 인덱스 바이트(A 레지스터[Pri], 0, A 레지스터[Pri])
목적 : 만일 바이트를 부하
바이트 기억
정의 : 순차
W 인덱스 바이트(A 레지스터[Pri], 0, B 레지스터[Pri])
A 레지스터[Pri] : =C 레지스터[Pri]
목적 : 단일 바이트를 기억
바이트 스프링 작동
메세지 카피
정의 : 순차
카피[Pri] : =1…블록카피를 지시
T 레지스터[Pri] : =Not처리, P…비입력 혹은 출력을 지시
목적 : 바이트의 백터를 또 다른 블록의 값으로 셋트
비교 (comparison)
보다큰
정의 : 순차
만일
B 레지스터[Pri]>A 레지스터[Pri]
A 레지스터[Pri]=상태기참
참
A 레지스터[Pri]=상태기 거짓
B 레지스터[Pri]=C 레지스터[Pri]
목적 : B 레지스터가 A 레지스터보다 크면 1(상태기 참)로 부하되고, 9(상태기 거짓)으로 되는 A 레지스터 와 레지스터(그들을 2개의 여수(complenent)정수)를 비교하거나 아니면, (rev, gt)에 의해 b<a를 이행(gt, egc0)로써 b<=a를 이행 그리고(rev, gt, egc0)에 의해 B 레지스터>=A 레지스터.
기본산술
부가
정의 : 순차
A 레지스터[Pri] =A 레지스터[Pri]
B 레지스터[Pri]
B 레지스터[Pri]=C 레지스터[Pri]
목적 : B 레지스터와 A 레지스터의 합을 부하
감산
정의 : 순차
A 레지스터[Pri]=B 레지스터[Pri]-A 레지스터[Pri]
B 레지스터[Pri]=C 레지스터[Pri]
목적 : B 레지스터로부터 A 레지스터를 감산, 그 결과를 부하
a=b, as sub, egcO
a< >b as sub, egco, egco
만일 a< >b 경우…as sub, egco, cj…
만일 a=b인 경우…as sub, cj…를 이행
스케쥴링을 위한 작동
최저 정수
정의 : 순차
C 레지스터[Pri]=B 레지스터
B 레지스터[Pri]=A 레지스터
A 레지스터[Pri]=Most Neg
목적 : 하드(hard)채널을 억세스 소프트(soft)채널을 개시
처리개시
정의 : 순차
바이트에서 (lptr 레지스터[Pri], B 레지스터[Pri], O 레지스터[Pri]
W 인덱스워드(A 레지스터[Pri] Iptrs, O 레지스터
Ro Desc 레지스터 : =A 레지스터[Pri]\/Pri진행
목적 : 처리를 활성 처리 리스트의 단부에 부가
처리 종결
정의 : 순차
R 인덱스워드(A 레지스터[Pri], 1 , 0레지스터[Pri])
만일
O 레지스터[Pri]=1
순차
R 인덱스워드(A 레지스터[Pri], 0
Iptr 레지스터[Pri])
Wptr 레지스터[Pri] : =A 레지스터[Pri], O 레지스터[Pri]< >1
순차
W 인덱스워드(A 레지스터[Pri] 1, O 레지스터[Pri], -1)
SNP[Pri] : =1
목적 : 2개의 병렬 처리를 연결 : 2개의 워드가 사용되는데, 하나는 계수기이고, 다른 하나는 작업공간에 대한 포인터이다. 계수가 1에 이를때, 작업공간은 변화된다.
진행처리
정의 : 순차
Proc Desc 레지스터 : =A 레지스터[Pri]진행
목적 : 특정화된 우선권에서 처리를 진행
처리정지
정의 : 순차
W 인덱스워드(Wptr 레지스터[Pri], Iptr, S, Iptr 례지스터[Pri])
SNP[Pri] =1
목적 : 현재 처리를 디스케쥴한다.
우선권 부하
정의 : 순차
C 레지스터[Pri] : =B 레지스터[Pri]
B 레지스터[Pri] : =A 레지스터[Pri]
A 레지스터[Pri] : =Pri
목적 : 현재 처리의 우선권을 얻는다.
메세지 통신을 위한 작동
입력 및 출력 메세지의 후술되는 설명에 있어서는 하드(B 레지스터)는 레지스터가 하드채널(일련링크의처리위치)에 대한 포인터일 경우 참이며, 그렇지 않을 경우 거짓이다. 비슷하게, 소프트(B 레지스터)는 B 레지스터가 하드채널에 대한 포인터일 경우 거짓이며, 그렇지 않으면 참이 된다.
입력 메세지
1 정의 : …로 들어간다.
2 …A 레지스터=계수
3 …B 레지스터=채널
4 …C 레지스터=목적지
5 만일
6 하드(B 레지스터[Pri])
7 링크채널 입력작동
8 소프트(B 레지스터[Pri])
9 순차
10 R 인덱스워드(B 레지스터[Pri], 0, T 레지스터[Pri])
11 만일
12 T 레지스터[Pri]=Not 처리·P
13 순차
14 W 인덱스워드(B 레지스터[Pri]), 0, Wptr 레지스터[Pri]\/Pri
15 W 인덱스워드(Wptr 레지스터[Pri], Iptr, S, Iptr 레지스터[Pri])
16 W 인덱스워드(Wptr 레지스터[Pri], 상태·S, C 레지스터[Pri])
17 SNP 프래그[Pri] : =1
18 T 레지스터[Pri]< >Not 처리·P…
20 순차
21 W 인덱스워드(B 레지스터[Pri]0, Not 처리·P)……리셋채널
22 …블록카피를 준비
23 처리 설명기를 이미 포함한 T 레지스터
24 계수를 이미 포함한 A 레지스터
25 B 레지스터[Pri] : =C 레지스터[Pri]...목적지
26 ProcPtr 레지스터 : T 레지스터[Pri]\/(1이 아님)
27 R 인덱스스드(Proc Ptr 레지스터·상태·S, C 레지스터[Pri])...소스
28 카피프래그[Pri] : =1…셋트 카피프래그
목적 : 채널로부터 바이트의 블록을 입력
출력 메세지
1 정의 : …로 를어감
2 …A 레지스터=계수
3 …B 레지스터=채널
4 …C 레지스터=소스
5 만일
6 하드(B 레지스터[Pri])
7 링크채널 출력작동
8 소프트(B 레지스터[Pri])
9 순차
10 R 인덱스워드(B 레지스터[Pri], 0, T 레지스터[Pri])
11 만일
12 T 레지스터[Pri]=Not 처리·P
13 순차
14 W 인덱스워드(B 레지스터[Pri], 0, Wptr 레지스터[Pri]\/Pri)
15 W 인덱스워드(Wptr 레지스터[Pri], Iptr, S, Iptr 레지스터[Pri])
16 W 인덱스워드(Wptr 레지스터, 상태·S, C 레지스터[Pri])
17 SNP 프래그[Pri] : =1
18 T 레지스터[Pri] < >Not 처리·P…준비
19 순차
20 Proc Ptr 레지스터 : T 레지스터[Pri]\/(1이 아님)
21 …상태 위치를 판독
22 R 인덱스워드(Proc Ptr 레지스터, 상태·S, O 레지스터[Pri])
23…… 교호처리 혹은 입력처리에 대하여 검사
24 만일
25 O 레지스터[Pri]=구동·P
26 순차
27 W 인덱스워드(Proc Ptr 레지스터, 상태·S, 준비·P)
28 W 인덱스워드(B 레지스터[Pri], 0, Wptr 레지스터[Pri]\/Pri)
29 W 인덱스워드(Wptr 레지스터[Pri], Iptr, S, Iptr 레지스터[Pri])
30 W 인덱스워드(Wptr 레지스터[Pri], 상태·S, C 레지스터[Pri])
31 SNP 프래그[Pri] : =1
32 레지스터[Pri]=대기·P
33 순차
34 W 인덱스워드(Proc Ptr 레지스터·상태·S·준비·P)
35 W 인덱스워드(B 레지스터[Pri], 0, Wptr 레지스터[Pri] \/Pri)
36 W 인덱스워드(Wptr 레지스터[Pri], Iptr, S, Iptr 레지스터[Pri])
37 W 인덱스워드(Wptr 레지스터[Pri], 상태·S, C 레지스터[Pri])
38 SNP 프래그[Pri] : =1
39 Proc Desc 레지스터 : T 레지스터[Pri]
40 진행
41 O 레지스터[Pri] = 준비·P
42 순차
43 W 인덱스워드(B 레지스터[Pri], 0, Wptr 레지스터[Pri]\/Pri)
44 W 인덱스워드(Wptr 레지스터[Pri], Iptr, S, Iptr 레지스터[Pri])
45 W 인덱스워드(Wptr 레지스터[Pri], 상태·S, C 레지스티[Pri])
46 SNP 프래그[Pri] : =1
47 참…O 레지스터[Pri] 유효포인터를 포함
48 순차
49 …리셋채널
50 W 인덱스워드(B 레지스터[Pri], 0, Not 처리·P)
51 …블록카피에 대한 레지스터를 설정
52 …입력처리 설명을 이미 포함한 T 레지스터[Pri]
53 카피프래그[Pri] : =1 …블록카피를 지시
54 B 레지스터[Pri] : =O 레지스터[Pri]…목적지
목적 : 바이트의 블록을 채널에 츨력
교호입력을 위한 작동
교호개시
1 정의 : W 인덱스워드(Wptr 레지스터[Pri], 상태·S, 구동·P
목적 : 교호입력을 구동하기 전에 처리상태 의치설정을 개시한다.
교호대기
1 정의 : 순차
2 W 인덱스워드(Wptr 레지스터[Pri], 0, -1)
3 R 인덱스워드(Wptr 레지스터[Pri], 상태·S, A 레지스터[Pri])
4 만일
5 A 레지스터[Pri]=준비·P
6 도약
7 참
8 순차
9 W 인덱스워드(Wptr 레지스터[Pri], 상태·S, 대기·P)
10 W 인덱스워드(Wptr 레지스터[Pri], Iptr·S, Iptr 레지스터[Pri])
11 SNP 플래그[Pri] : =1
목적 : 구동원 여러개 채널중 하나를 기다림.
교호종료
정의 : 순차
1 R 인덱스 워드(WVptr 레지스터[Pri], 0, O 레지스터[Pri])
2 바이트에서(Iptr 레지스터[Pri], 레지스터[Pri], Iptr 레지스터[Pri])
목적 : 교호처리중 선택된 입력의 실행해기 시킴
구동도약
1 정의 : 만일
2 A 레지스터[Pri]< >기계거짓
3 W 인덱스워드(Wptr 레지스터[Pri], 상태·S, 준비·P)
4 A 레지스터[Pri]=상태기 거짓
5 도약
목적 : 생략방지를 구동한다.
생략 비구동
정의 : 순차
만일
B 레지스터[Pri]< > 상태기 거짓
이는 선택된 처리인가?
B 레지스터[Pri]=상태기 거짓
A 레지스터[Pri] : =상태기 거짓
B 레지스터[Pri] : =C 레지스터
목적 : 생략방지를 비구동한다.
구동채널
1 정의 : 순차
2 만일
3 A 레지스터[Pri]=상태기 거짓
4 도약
5 A 레지스터[Pri]< >상태기 거짓
6 순차
7 만일
8 소프트 B 레지스터[Pri]
9 순차
10 R 인덱스워드(B 레지스터[Pri], 0, O 레지스터[Pri])
11 만일
12 O 레지스터[Pri]=Not 처리·P
13 W 인덱스워드(B 레지스터[Pri], 0, Wptr 레지스터[Pri]\/Pri)
14 O 레지스터[Pri] =Wptr 레지스터[Pri]\/Pri)
15 도약
16 참
17 W 인덱스워드(Wptr 레지스터[Pri], 상태·P, 준비·P)
18 하드(B 레지스터[Pri])
19 VAR Port No·준비 :
20 순차
21 워드옵셋(포트베이스, B 레지스터[Pri], Port No)
22 링크준비상태로 조회(포트번호, 준비),
23 만일
24 준비
25 W 인덱스워드(Wptr 레지스터[Pri], 상태·S, 준비·P)
26 참
27 순차
28 W 인덱스워드(B 레지스터[Pri], 0, Wptr 레지스터[Pri]\/Pri)
29 구동링크(포트번호)
30 B 레지스터[Pri] : =C 레지스터[Pri]
목적 : 채널입력을 구동시킨다.
비구동 채널
1 용도 : 입력시 A 레지스터=명령옵셋
2 B 레지스터=방지
3 C 레지스터-채널 1
4 출력시 만일
5 선택된 방지처리일때
6 A 레지스터=상태기 참
7 그외
8 A 레지스터=상태기 거짓
9 정의 : 만일
10 B 레지스터[Pri]=상태기 거짓
11 A 레지스터[Pri] : =상태기 거짓
12 B 레지스터[Pri]< >상태기 거짓
13 만일
14 소프트(C 레지스터[Pri])
15 순차
16 R 인덱스워드(C 레지스터[Pri], 0, B 레지스터[Pri])
17 만일
18 B 레지스터[Pri]=Not 처리·P
19 A 레지스터[Pri] : =상태기 거짓
20 B 레지스터[Pri] =(Wptr 레지스터[Pri]\/Pri)
21 순차
22 W 인덱스워드(Creg[Pri], 0, Not 처리·P)
23 A 레지스터[Pri] : =상태기 거짓
24 참
25 선택된 처리인가
26 하드(C 레지스터[Pri])
27 VAR Port No. 준비 :
28 순차
29 워드옵셋(포트베이스, C 레지스터[Pri] Port No)
30 …링크채널이 준비되었는가를 검색
31 …채널이 비구동되게 함
32 링크준비 상태조회(포트번호, 준비)
34 준비
35 선택된 처리인가
36 참
37 A 레지스터[Pri] : =기계거짓
목적 : 구동된 채널을 비구동상태로 만들고 교호구동된 입력중 하나를 선택하기 위함
마이크로명령어 ROM(13)은 상기에 나열된 모든 기능과 연산 대응하는 마이크로 명령어를 포함하며, 따라서 프로세서는 ROM(13)으로부터에 나오는 마이크로 명령어의 결과에 따라 상기 작용중 어느 것을 실행하게 된다.
스케쥴링
프로세서는 2개의 다른 우선권 레벨 0과 1에서 많은 동시 처리 실행 사이에서 시간을 할당한다. 우선권 0처리는 우선권이 둘다 실행될 수 있다면 우선권 처리에 앞서 항상 실행될 것이다. 항상 처리중의 단 하나는실행되고 있으며, 현재 처리되고 있는 상기 처리는 WPTR 레지스터(51)에서 작업공간 포인터(WPTR)를 가지고 있으며, IPTR 레지스터(50)에 있는 명령어 포인터(IPTR)는 특정처리에 연관된 프로그램에 있는 명령의 순서로부터 실행될 다음 명령어를 표시한다. 현재 처리되지 않고 실행을 대기하지 않고 있는 어떤처리는 디스케쥴된다. 처리가 스케쥴 되었을매, 현재 처리가 되거나 또는 리스트에 첨가되거나 또는 실행을 대기하는 일련의 순서를 짓는다. 상기 리스트는 현재 작업공간에 대한 상기 리스트상에서 다음 처리의 작업공간의 링크 위치에서 포인터를 가진 리스트상에서 각 처리와 링크된 리스트로 형성되어 있다. 리스트상의 어떤 처리의 명령어 포인터(IPTR)는 제3도에 도시된 바와 같이 작업공간의 IPTR 위치(65)에서 기억되어있다.
현재의 경우 프로세서는 각 우선권 레벨에 대해 하나씩 처리되기 위해 대기하고 있는 처리의 2개 리스트를 유지하고 있다. 상기 상태는 제3도와 제4도에 도시되어 있다. 제3도는 우선권이 높은 0 리스트를 나타내며, 제4도는 우선권 0인 처리가 제3도에 도시한 바와 같이 현재의 처리일때 낮은 우선권 1을 나타낸다.
상기의 경우 현재 처리가 높은 우선권 0처리일때, 레지스터 뱅크 선택기(41)는 사용을 위해 프로세서에의해 뱅크(39)에 있는 레지스터에서 선택된다. 결과적으로 WPTR 레지스터(0)는 포인터를 제3도에 표시된 바와 같이 현재 공정의 작업공간 0 위치에 유지시킨다.
IPTR 레지스터(0)는 메모리에 기억된 프로그램 순차(181)에서 다음 명령에 대한 포인터(180)를 포함한다. 제3도에 표시된 레지스터(54, 55, 56, 57)는 현재 처리 L의 실행중 사용될 수 있는 다른 값을 포함한다. 스케쥴 되어 있고, 실행을 대기하고 있는 우선권 0처리의 리스트는 61, 62, 63에서 작업공간이 다이어그램식으로 표시되는 3개의 처리 M, N, O에 의해 제3도에서 표시되어 있다. 상기 작업공간의 각각은 처리 L을위해 표시된 것과 일반적으로 비슷하다. 53으로 표시된 FPTR 레지스터(0)는 상기 리스트의 전방에서 처리되는 처리 M의 작업공간에 대한 포인터를 포함한다. 처리 M의 작업공간은 IPTR 위치(65a)에서 포함하고 프로그램 순차에서 다음 명령에 대한 포인터는 처리 M이 현재 처리가 되었을때 실행될 것이다. 처리 M의 링크 위치(66)는 리스트에서 다음 처리인 처리 N의 작업공간에 대한 포인터를 포함한다. 표시된 리스트상에서 마지막 처리는 63에서 표시된 작업공간을 가진 처리 0이다. (52)로 표시원 BPTR 레지스터(0)는 상기 마지막 처리 0의 작업공간에 대한 포인터를 포함한다. 상기 처리 0의 작업공간(63)은 이전의 처리 N의 링크위치(66) 내용에 의해 포인트된다. 그러나, 상기의 경우 처리 0의 링크 위치는 리스트상의 마지막 처리에서와 같이 어떤 포인터를 포함하지 않는다.
다른 처리와 리스트에 첨가되었을때, 다른 처리의 작업공간에 대한 포인터 BPTR 레지스터(52)에 배치되고 다음 처리 0의 링크위치(66)는 리스트에 첨가된 다른 처리의 작업공간에 대한 포인터를 포함한다.
우선권 1 리스트는 일반적으로 비슷하며, 제4도에 표시되어 있다. 상기의 경우 스케쥴되어 있고, 실행을 대기하고 있는 우선권 1의 리스트 처리 P, Q, R로 구성되어 있다. S로 표시된 다른 우선권 1처리가 도시되어 있다. 그러나, 이것은 동시에 디스케쥴되고 링크리스트의 부분을 형성하지 않는다.
FPTR 레지스터(1)는 실행을 기다리는 리스트상의 제1처리를 형성하는 처리 P의 작업공간에 대한 포인터를 포함한다. BPTR 레지스터(1)는 실행을 기다리는 리스트상에서 마지막 처리를 형성하는 처리(R)의 작업공간에 대한 포인터를 포함한다. 처리 P, Q, R의 각각은 상기 처리가 현재의 처리일때 다음 명령어를 취할 수 있는 프로그램 단계를 나타내는 IPTR 위치에서 IPTR을 가지고 있다. 리스트상에서 마지막 처리와 별개의 각 처리를 링크위치는 리스트상에서 다음 처리의 작업공간에 대한 포인터를 포함한다.
제4도에 도시된 위치는 51로 표시된 WPTR 레지스터(1)이, 현재 우선권 0처리가 끝나기전에 우선권 1처리를 방해하지 않고 현재처리가 된다는 가정하에서, 처리 작업공간에 대한 유효한 포인터를 포함하지 않는다.
예를를어 어떤 통신의 완료와 같이 처리가 진행할 준비가 되었을때, 즉시 실행되거나 또는 적당한 리스트에 첨가된다. 만약 우선권 0처리 중이거나, 우선권 0처리가 실행되고 있지 않거나 또는 우선권 1처리중 또는 다른 처리가 실행되고 있지 않다면, 즉시 진행될 것이다. 처리는 처리의 디스케쥴링을 필요로 하는 채널상에서 통신이 사용될때까지 실행을 계속할 것이며, 만약 우선권 1처리라면, 보다 우위인 우선권 0이 진행하도록 정지되거나 또는 방해될때까지 실행을 계속할 것이다.
우선권 0처리가 실행될때, PRI 플래그(47)는 0에 셋트된다. 프로세서가 우선권 1처리를 실행하거나 또는 진행할 처리가 없을때, PRI 플래그(49)는 값 1을 갖는다. 만약 진행될 처리가 없을때, WPTR(1) 레지스터는 값 Not 처리 P를 갖는다. 이러한 것은 우선권 1처리가 차단되지 않는 우선권 1처리의 리스트가 있는 제4도에 도시된 WPTR 레지스터(51)에 대한 위치가 될 것이다. 만약 우선권 1처리가 우선권 0 처리의 실행을 하도록 차단되어진다면, 차단된 우선권 1처리의 작업공간 포인터는 WPTR 레지스터(1)에 남아 있을것이다. 따라서, 더 이상 처리될 우선권 0가 없을때, 프로세서는 우선권 1처리가 WPTR(1) 레지스터의 내용에 의해 차단될 것인가를 결정한다. 만약 상기 내용이 값 Not 처리 P를 가진다면, 차단된 처리는 없고, 처리기는 FPTR 레지스터(1)의 내용을 읽어 우선권 1을 검토한다. 만약 WPTR 레지스터(1)가 아직 작업공간 포인터에 남아 있다면, 프로세서는 차단원 처리의 실행을 계속할 수 있다. 만약 우선권 리스트에서 처리를 대기하고 있는 것이 없다면, 적당한 FPTR 레지스터는 Not 처리 P값을 포함하고 있을 것이다.
새로운 동시처리는 "처리개시"작동의 실행 또는 "처리진행"의 실행에 의해 만들어진다. 상기 실행은 "처리엔드" 작동의 실행 또는 처리 스톱의 실행에 의해 종료가 될 것이다.
처리는 상기에서 정의된 "디큐"처리절차의 사용하여 실행하기 위해 리스트의 상부로부터 진행될 수 있다. 상기 다른 정의와 함께 상기 정의는 상기 정의 부분이 아니고 단지 설명을 용이하게 하는 라인 숫자를 포함한다. 처리절차 디큐정의의 라인 1은 처리절차의 이름을 주며, 라인 2는 발생되는 사전의 순차를 표시한다. 라인 3에 따라서, 적당한 뱅크(38 또는 39)의 WPTR 레지스터(51)는 동일한 뱅크의 FPTR 레지스터(53)에 유지되었던 포인터를 가져온다. 라인 4는 어떤 조건의 시험이 실행될 것을 나타낸다. 라인 5는 만약 BPTR 레지스터(52)의 내용이 BPTR 레지스터(53)의 내용과 동일한 내용이 발견된다면, 라인 6에 따라서 "Not 처리 P"값이 FPTR 레지스터에 입력된다. 라인 7은 만약 라인 5의 조건이 상기의 경우와 같이 발견되지 않는다면 라인 7은 적당한 레지스터 뱅크의 FPTR 레지스터(53)는 FPTR 레지스터의 내용으로 이미포인트된 작업공간의 링크위치(66)에서 현재 기억된 포인터를 입력하도록 지시한다.
라인 9에 따라서, IPTR 레지스터(50)는 WPTR 레지스터(51)의 내용으로 방금 포인트된 작업공간의 IPTR 위치(65)로부터 IPTR로 부하된다.
상기 효과는 전단처리를 오프시켜서 진행시키고 실행준비가 된 적당한 레지스터에 부하시킨다.
현재 처리는 상기에서 정의된 "다음 처리개시"절차에 의해 디스케쥴될 수 있다. 현재 처리는 SNP 플래그(58)를 값 1에 셋팅시키는 것을 포함하는 명령을 실행할 수 있으며, 상기의 경우 처리가 다음 작동을 취하는데 필요한 마이크로 명령어에 대응할때, 처리기는 상기의 정의에 따라 절차를 진행한다. 정의중 라인 3에 있어서, 처리기는 최초에 SNP 플래그(58)를 값 0에 셋트시켜서 클리어시킨다. 라인 4는 라인 5의 상태가 참인지를 테스트하는 처리기를 필요로 한다. 제공된 FPTR 레지스터는 "Not 처리 P"값을 포함하지 않으며, 라인 6에 따라서 디큐처리 절차가 일어나 다음 처리는 상부리스트를 벗어난다. 그러나 만약, 라인 5가 참이 아니라고 하면, 상기는 현재 우선권에 대해 리스트상에서 대기하고 있는 처리가 없다는 것을 나타낼 것이다. 다음 처리기는 라인 7의 조건이 참인지를 검색할 것이다. 상기는 PRI 플래그(47)가 0값을 갖는지를 테스트하는 것을 포함한다. 만약 0값을 가진다면, 라인 5에서의 테스트 결과로 인해 대기하고 있는 우선권 0처리가 없다는 것을 알 수 있다. 따라서 프로세서는 우선권을 1에 셋팅하는 라인 9로 순차 시작을 계속한다. 상기는 프로세서가 우선권 1처리를 위한 레지스터 뱅크를 검색하게 하며, 라인 11과 라인 12에 따라서, 프로세서는 WPTR 레지스터(1)가 "Not 처리 P"값을 포함하는 여부 및 FPTR 레지스터(1)가 "Not 처리 P"값을 포함하지 않는지의 여부를 알기 위해 검색한다. 상기는 WPTR 레지스터(51)에서 WPTR이 남아 있고, 리스트상에서 대기하고 있는 우선권 1처리가 있는 차단원 우선권 1없다는 것을 의미한다. 제공된 상기 조건이 참이라면, 라인 13에 따라 처리기는 다음 우선권 1처리가 리스트의 전반부를 벗어나게하는 디큐처리 절차를 실행한다.
그러나 만약 라인 11과 라인 12의 조건이 틀린다면, 처리기는 어떤 작용을 생략한다. 상기는 만약 WPTR 레지스터(1)에 WPTR이 있다면 프로세서는 차단된 처리를 계속 실행한다는 것을 의미한다. 만약 차단된 처리가 없고 우선권 1리스트상에서 대기하고 있는 것이 없다면, 프로세서는 다른 처리의 스케쥴링을 기다릴 것이다. 그러나, 프로세서가 라인 7에 있는 조건이 틀린 것이 아니라 우선권이 1이라고 발견하였다면 라인 16과 라인 17에 따라 WPTR 레지스터(1)는 "Not 처리 P"값을 가질 것이다.
멧세지 전달중, 처리는 디스케쥴되는 반면 프로그램에서 대응하는 단에 도달하는 연결처리를 위한 대기상태에 있게 된다. 2개의 연결처리가 대응하는 단에 연결되었을때, "진행"절차는 PROCDESC 레지스터(46)에서 포함된 설명기를 가진 처리를 스케쥴하기 위해 사용될 수 있다. 처리기의 작용은 상술된 "진행"절차의 정의로부터 알 수 있다. 라인 3에 있어서, PROCDESC 레지스터(46)에 의해 표시된 처리의 우선권은 계산되고 PROCPRI 플래그(48)에 부하된다. 라인 4에 있어서, 레지스터(46)에서 설명기를 가진 WPTR의 처리는 계산되고 PROCPTR 레지스터(45)내에 로우드된다. 다음 프로세서는 라인 6의 상태를 인가할 것인가를 알기 위해 테스트한다. 현재 처리는, 만약 PROCPRI 플래그(48)에 있는 우선권이 PRI 플래그(47)에 있는 우선권과 같다면 0의 우선권을 가지며, 동시에 현재 처리의 WPTR REG(51)는 작업공간 포인터를 포함하며, 프로세서는 라인 7의 다음 순차를 실행한다. 라인 7은 단지 처리를 큐에 첨가할 필요가 있는 순차를 설명한다. 라인 8은 프로세서가 라인 9의 조건이 장인가를 테스트하기 위해 실행되는 것을 필요로 한다. 플래그(48)에 의해 표시된 FPTR 레지스터가 "Not 처리 P"값을 갖는다면, 라인 10에 따라서 FPTR 레지스터는 레지스터(45)의 포인터로 부하된다. 상기는 리스케쥴된 처리가 리스트의 상부가 되도록 한다. 라인11은 라인 10의 조건이 옳지 않다면 레지스터(46)에 포함된 포인터가 적당한 우선권의 BPTR 레지스터에의해 표시된 리스트상에서 최종 처리의 링크위치(66)내에 수록되도록 표시한다. 상기 BPTR 레지스터는 포인터로 레지스터(45)의 내용에 부하된다. 바꾸어 말하자면, 리스케쥴된 처리는 리스트의 끝에 첨가된다. 라인 14는 라인 6의 조건이 상기의 경우가 아닐때 라인 15의 순차가 일어나는 것을 의미한다.
상기의 경우 라인(16)은 PRI 플래그(47)는 PROCPRI 플래그(48)의 현재 값을 가지도륵 요구할 것이며, 라인 17에 따라서 적당한 우선권의 WPTR 레지스터는 레지스터(45)에서 나온 포인터로 부하될 것이다. 라인(18)은 적당한 우선권의 IPTR 레지스터(50)가 WPTR 레지스터(51)에 있는 포인터에 의해 표시된 처리의 IPTR 위치(65)로부터 취한 IPTR로 부하되는 것을 필요로 한다. 라인 19는 값 0을 적당한 우선권 뱅크의 0레지스터에 넣는다.
처리 대 처리 통신
하나의 처리는 메모리에서 하나의 어드레스 가능한 워드위치에 의해 제공된 소프트채널을 사용하는 다른처리와 연결될 수 있다. 달리 하나의 마이크로 컴퓨터상에서 처리는 하드 입출력·채널을 사용하는 일련의 링크를 통해 다른 마이크로 컴퓨터와 연결 소통될 수 있다. 각 일련의 링크는 비지향성 비분할 통신통로를 형성하는 단일 도선에 의해 다른 마이크로 컴퓨터의 대응편에 연결된 입력핀과 출력핀을 갖는다. 내부 및 외부연결을 위해 각 출력 처리는 출력될 각 멧세지에 대해 상기 정의된 바와 하나의"출력 멧세지"연산을 실행한다. 그리고 각 입력처리는 입력될 각 멧세지에 대해 상기 정의된 바와 같이 "입력 멧세지"연산을 실행한다. 본 실시예에 있어서, 각 "출력 멧세지" 또는 "입력 멧세지"연산을 위해 전달될 멧세지 길이는 길이가 변할 수 있다. 데이타는 하나 이상의 특정 비트 길이 단위로 전송된다. 그리고 상기의 경우, 비트길이는 1바이트를 만드는 8비트이다. 그래서 멧세지는 필요한 멧세지의 길이에 따라 다수의 단위 또는 바이트로 구성될 수 있다. 통신이 효력을 발생하는 방법을 설명하기 위해 실시예를 들어 기술하기로 한다.
실시예 1
처리 Y는 2개의 처리가 동일한 우선권을 가진 소프트 채널을 사용하는 같은 마이크로 컴퓨터상에서 처리X에 멧세지를 출력하려고 한다. 이러한 것은 제15도의 순차에서 도시되어 있다. 최초에 채널(70)은 처리 Y와 처리 X가 상기 채널을 필요로 하는 명령을 아직 실행하지 않았을때 "Not 처리 P"값을 포함하고 있다. 처리 Y가 출력을 실행하고져 하는 프로그램의 포인트에 도달했을때, 멧세지를 구성하는 바이트의 수를 나타내는 계수를 A 레지스터(54)에 부하시킨다. 통신을 위해 사용될 채널의 어드레스를 B 레지스터(55)에 부하시키며 전송될 멧세지의 제1바이트를 위한 메모리 어드레스인 소스 어드레스를 C 레지스터내에 부하시킨다. 상기는 "출력 멧세지"연산의 정의인 라인 2, 3, 4를 따른 것이다.
또한 라인 참고번호는 상술된 출력 멧세지의 정의에 관한 것이다. 라인 5는 제공된 채널 어드레스가 하드채널 어드레스와 대응하는 가를 알기 위해 B 레지스터의 내용을 시험하기 위해 프로세서를 필요로 한다. 만약 대응한다면, 라인 7의 정의는 상기에서 정의된 링크 채널 출력 작용 처리절차를 실행하는 프로세서를 필요로 한다. 상기의 경우가 아닌 제15도의 실시예에서 라인 8의 정의는 참이라고 하면 B 레지스터는 소프트 채널의 어드레스를 포함한다. 결과적으로 프로세서는 라인 9 다음 순차를 실행한다. 라인 10에 있어서, T 레지스터(49)는 옵셋이 없는 B 레지스터에서 나온 포인터에 의해 포인트된 값 즉 채널 내용으로 부하된다. 다음 라인 11과 라인 12는 T 레지스터가 Not 처리 P값을 포함하는지를 검토하기 위해 프로세서를 필요로 하며, 상기는 물론 제15b도에 있는 경우이다. 따라서, 프로세서는 라인 14의 순차에 출력 멧세지 정의의 라인 17까지 실행한다. 라인 14를 채널(70)에 수록될 처리 Y를 위한 처리설명기를 필요로 한다. 라인15는 처리 Y를 위한 작업공간의 IPTR 위치(65)에 기억될 IPTR 레지스터(50)의 내용을 필요로 하며 라인16은 처리 Y의 작업공간의 상태위치(67)에 수록될 소스 어드레스를 필요로 한다. 라인 17은 프로세서의 다음 작용에 의해 처리 Y가 디스케쥴되어야 하는 것을 나타내는 1에 셋트되어질 SNP 플래그를 필요로 한다. 상기는 제15c도에 도시된 위치이머, 입력 처리 X가 입력명령어로 실행될때까지 상기 위치에 남아 있다.
다시 처음처리 X는 입력될 멧세지를 위해 필요한 바이트 숫자의 계수를 A 레지스터(54)에 부하한다. 입력을 위해 사용될 채널의 어드레스를 B 레지스터에 부하하며, C 레지스터는 입력될 제1바이트를 위해 메모리에 목적지 어드레스로 부하된다. 상기는 입력 멧세지의 정의 라인 2, 3, 4를 따른 것이며, 제15d도에 도시된 위치이다. 입력 멧세지 정의의 라인 5, 6, 7은 B 레지스터에 있는 어드레스가 하드채널에 대응하는가를 검토하는데 필요한 처리를 필요로 하며, 상기의 경우 처리기는 링크 입력작용 절차를 수행하는데 필요할 것이다. 상기는 B 레지스터가 소프트 채널(70)을 지적하는 것과 같은 제15도의 경우는 아니다. 결과적으로 라인 8의 조건은 참이며 라인 9 다음의 순차가 발생된다. 우선, 처리 X를 위한 T 레지스터(49)는 옵셋이 없는 B 레지스터의 포인터로 지적된 값 즉 채널 내용으로 부하된다. 만약 상기 값이 "Not 처리 P"였다면, 프로세서는 디스케쥴링 처리 X를 만드는 라인 13에서 17을 따를 것이다.
그러나, 현재의 경우, T 레지스터는 "Not 처리 P"를 포함하지 않는 라인 18의 정의 조건에 맞는다. 라인 21의 정의에 따라서, 프로세서는 "Not 처리 P"를 제15e도에 도시된 바와 같이 채널(70)에 수록하여 채널(70)을 리셋시킨다. 라인 22에서 24까지 T 레지스터(49)가 현재 처리 Y의 처리 설명기를 포함하고, A레지스터가 전송될 바이트수의 계수를 포함하고 있는 동안 한 메모리 위치(소스)에서 다른 메모리 위치(목적지)까지의 데이타의 블록 복사를 실행하기 위해 프로세서가 마련될 수 있다는 것을 설명하는 것을 포함하고 있다. 라인 25의 정의는 프로세서를 위해 이전에 레지스터 C에 있었던 목적지 번지가 부하된 B 레지스터를 필요로 한다. 라인 26에 따라서, PROC 포인터 레지스터(45)는 레지스터 T로부터 처리설명기를 가져가 유도된 처리 Y의 WPTR로 부하되고 우선권 비트를 제거한다. 라인 27은 처리 X를 위한 C 레지스터는 처리 Y를 위한 작업공간의 상태위치(67)에 취한 소스 어드레스가 부하되는 것을 필요로 한다. 다음 라인28은 1에 셋트될 적당한 우선권의 복사 플래그를 필요로 하며 따라서 다음 단계에서, 프로세서는 상기에서 정의된 블럭복사 단계를 실행한다. 상기는 프로세서가 소스 메모리 어드레스로부터 목적지 메모리 어드레스로 한번에 1바이트씩 전달하게 하며, 상기 작용은 각 바이트가 전달될때 소스와 목적지를 계속적으로 바꾸어가면서 반복한다. 그리고 전달된 나머지 바이트수의 계수를 A 레지스터에서 차츰 감소시킨다. 계수가 0으로 되었을때 디스케쥴된 처리 Y는 상기 절차의 진행에 의해 리스케쥴된다.
상기는 블럭 복사 단계의 정의로부터 볼 수 있다. 라인 2는 발생될 순차를 정의한다. 제1단계는 C 레지스터에 의해 표시된 메모리에서 소스 어드레스로부터 나온 바이트를 0레지스터에서 판독하는 라인 3이다. 다음 라인 4는 0레지스터로부터 읽는 데이타의 상기 바이트를 B 레지스터에 의해 표시된 목적 메모리 어드레스에 수록한다. 다음 라인 5는 0레지스터를 클리어시킨다. 라인 6은 한 바이트가 앞선 새로운 소스 포인터를 만든다. 그리고, 라인 7은 한 바이트가 앞선 새로운 목적번지를 만든다. 라인 8은 A 레지스터에 있는 계수가 하나씩 감소될 수 있게 한다. 다음 라인 9는 블럭복사가 끝났을 경우에 라인 10에 따라 A 레지스터가 현재 0계수를 포함하고 있는가를 알기 위해 실행될 테스트를 필요로 한다. 만약 A 레지스터가 0계수를 포함하고 있지 않다면 라인 21의 조건은 이루어진다. 그러나-복사플래그가 아직 1에 셋트되어 있기 때문에, 프로세서는 적당한 다음 단계를 계속 진행할 것이다. 만약 블럭복사에 포함된 처리의 우선권의 낮은 우선권처리이고, 높은 우선권 처리가 진행될 준비가 되어 있다면, 프로세서는 높은 우선권을 실행하기 위해 전체 멧세지 전달을 끝내기 전에 하나 이상의 바이트를 전달한 후 블럭복사를 차단할 수도 있다. 그러나 대기하고 있는 높은 우선권 처리가 없다면, 블럭복사 단계의 라인 22에 도달과 동시에 프로세서는 복사플래그가 셋트되어 있는 동안 라인 2로부터 순차시작을 반복할 것이다. 따라서 계수가 0으로 될때까지 라인 3에서 8까지의 블럭복사 단계를 반복할 것이다.
다음 라인 13은 클리어되고, 0으로 리셋될 복사플래그를 필요로 한다. 라인 14와 라인 15는 T레지스터(49)가 Not 처리 P보다 다른 값을 갖는가를 검토하기 위한 프로세서를 필요로 한다. 현재의 경우, 스케쥴된 처리 Y의 처리 설명기를 가지고 있다. 따라서, 라인 16에서 시작하는 순차가 일어나며, 처리 설명기 레지스터(46)는 T 레지스터에 이미 포함된 처리 Y의 처리 설명기로 부하되어 있을 것이다. 상술된 처리절차는 처리 Y를 재스케쥴하기 위해 작용할 수 있을 것이다. 라인 19와 20은 단지 T레지스터가 디스케쥴된 처리설명기를 포함하고 있는지만을 나타낸다. 그리고는 상기 작용은 생략될 것이다.
실시예 2
제16도는 제2마이크로 컴퓨터(252)상의 입력처리 X와 소통하는 제1마이크로 컴퓨터(251)상의 출력 처리 사이의 멧세지 통신 순차를 도시한다. 처리 Y를 위한 출력채널(90)의 출력핀(27)은 단일 도선(253)에 의해 처리 X를 위한 입력채널의 입력핀(26)에 의해 연결된다.
하드채널을 사용하는 입·출력을 실행하는 모든 처리로, 상기 처리는 적당한 출력 또는 입력 명령을 실행한 후 디스케쥴된다. 한 마이크로 컴퓨터의 메모리에 있는 소스 어드레스로부터 다른 마이크로 컴퓨터의 메모리에 있는 목적지 어드레스까지 소정수의 바이트 전달은 제10도 내지 제14도에 도시된 링크유니트의 제어하에서 실행된다. 바이트의 전달은 처리기에 의해 독립적으로 실행되어 2마이크로컴퓨터의 프로세서는 멧세지 전달과는 별개로 현재의 처리를 실행할 수 있다. 링크가 프로세서에 의한 다른 작용을 필요로 하는 멧세지 전달의 단계에 도달했을때, 상기 링크는 프로세서에 적당한 요청을 하게 된다. 각 링크채널은 처리 워드라 불리는 메모리내의 어드레스 가능한 워드로 구성된 채널 어드레스를 갖는다. 상기 하드 채널 처리 워드의 어드레스는 하드채널이 링크에 별도로 연결될 필요가 있을때 상기를 프로세서가 구별하도록 선택된다.제16도 내지 제19도 각각에서 처리 Y를 의한 출력채널과 처리 X를 위한 입력채널을 나타내기 위해 비슷한 형태로 사용된다. 채널은 약어 PW로 표시된 관련 처리 워드(256)를 갖는다. 출력채널은 제12도에서 상술된 레지스터(257)를 가지머, 전달상태기(113)상의 상태가 나타나는 위치(257)를 가진다. 입력채널(91)을 위해 처리워드위치(256)는 제13도에서 이미 기술된 입력 채널 레지스터(255)와 마찬가지로 도시되어 있다. 그리고 위치(258)는 제13도에서 3개의 상태기의 상태를 나타낸다. 제16도에서, 2개의 처리는 비슷한 우선권을 가지고 있으며, 출력처리 Y는 처리 X가 멧세지를 입력하려고 하기전에 멧세지를 츨력하려고 한다. "출력메세지"의 라인 2 내지 4의 정의에 따라서 처리 Y는 멧세지에서 전달될 바이트의 수를 레지스터(54)에 부하시키고, 사용될 채널의 어드레스를 B레지스터(55)에 부하시키며, 복사될 제1바이트를 위해 메모리에 있는 소스 어드레스를 C레지스터(56)에 부하시킨다. 제16a도에 도시된 바와 같이 이번에는 출력채널이 사용되지 않으머 따라서, 입력채널은 상태 데이타 부재, 비사용, 비구동상태로 되어 있다.
제16a도 이후 처리 Y는 "출력 멧세지"연산을 실행하며, 상기 연산의 라인 6정의에 따라 프로세서는 채널이 하드 채널이라는 것을 알아내고 라인 7에 따라 "링크 채널 출력작용" 절차가 실행된다. "링크 채널 출력작용"절차의 정의는 IPTR 레지스터(50)로부터 처리 Y를 위한 현재 IPTR 취하고 처리 Y를 위한 작업공간의 IPTR 위치에 기억을 하는 것을 표시한다. 라인 5는 처리 Y의 처리설명기가 출력 채널(90)의 처리워드위치(256)에 수록되는 것을 필요로 한다. 라인 6은 출력채널을 위한 포트수를 셋트시키며, 라인 7은 상술된 "코우즈 링크출력"처리를 필요로 한다. 상기는 계수 소스로 채널 레지스터(254)로 전달하며, 처리 Y의 실행중 사용되고 있는 적당한 레지스터로부터 우선권을 전달한다. 입력신청은 링크채널을 통해 만들어져 데이타의 제1바이트가 전송된다. 라인 8에 따라서 SNP 플래그는 1에 셋트되어 처리기에 의한 상술된 바와 같이 디스케쥴될 처리 Y를 필요로 한다. 위치는 제16b도에 도시된 것과 같다.
처리 X가 입력 멧세지를 실행하려고 할매, A레지스터(54), B레지스터(55) 및 C레지스터(56)는 제16c도에 도시된 바와 같이 입력을 위해 필요한 목적지와 계수채널을 부하시킨다. 처리 X가 "입력 멧세지"연산을 실행할때, 라인 6의 정의에 따라 채널이 하드채널이라는 것을 알 수 있으며, "링크 채널 입력 작용"의 절차를 수행한다. 상기는 링크 채널 출력작용에 대해 기술된 순차와 같은 순차로 실행한다. 처리 X의 작업공간의 IPTR 위치(65)에 X의 IPTR을 기억시키고, 처리 X를 위한 처리 설명기를 입력채널(91)의 처리워드(256)에 수록한다. 그리고 계수목적지와 X의 우선권을 입력채널(91)의 레지스터(255)내에 부하시킨다. 상기의 경우 처리 링크 채널입력 작용의 라인 7은 링크에서 출력요구를 하도록 하여 확인 묶음 처리 X와 연관된 출력 채널로부터 처리 Y와 연관된 입력채널로 보내진다. 상기 위치는 제16b도에 도시된 바와 같다.
데이타묶음에 있는 다수의 데이타 바이트는 제14도를 참고로 기술된 바와 같이 확인묶음 다음에 보내진다. 최종 확인 묶음이 처리 X로부터 보내졌을때 처리 X는 13을 참고로 기술된 바와 같이 라인 84e에서 진행요구를 하여 마이크로 컴퓨터(258)의 처리기가 만약 이미 리스트가 있다면, 리스트의 끝에 첨가하여 처리X를 재스케쥴 한다. 상기는 16e 다음 최종 확인 묶음은 처리 Y를 위한 입력 채널에 의해 수신되고, 진행요청신호는 제12도의 라인 84b상에서 발생되어 처리기는 다음 작용을 취하도록 요구되었을때 처리 Y를 적당한 우선권 리스트의 끝에 첨가시킨다. 다음 위치는 제16f도에 도시된 것과 같다.
교호입력 채널에서 나온 처리입력
교호처리는 입력을 위해 많은 채널중 하나를 선택하고 다음 교호처리중의 대응성분처리를 실행하는 것이다. 가능한 다음 교호처리에서 나온 채널의 선택은 채널을 통해 출력되기 위해 이미 대기하고 있는 출력처리를 갖고 있는 즉, 입력을 위해 하나 이상의 준비되어 있는가를 결정하는 모든 채널을 검사하는 입력처리에 의해 수행된다. 만약 준비된 채널이 없다면, 입력처리는 채널중의 하나가 준비될때까지 디스케쥴된다. 만약 채널중 최소한 하나가 준비되어 있다면, 또는 입력처리가 출력처리의 작용때문에 디스케쥴된다면, 처리는 현재 준비가 되어 채널을 통해 입력을 수행하는 입력중의 하나를 선택한다. 입력채널의 선택중, 처리작업공간의 상태위치(67)는 단지 특정한 값 구동 P·대기 P·준비 P를 가져온다.
많은 교호채널중 하나에서 입력처리를 할 수 있도록 하기 위해, 상기 교호채널중 하나로부터 입력하려고하는 프로그램에 있는 단계에 입력처리가 처음 도착하였을때 교호입력채널이 준비가 되어 있지 않을 경우 입력처리가 디스케쥴되는 것이 중요하다. 상기는 특히 프로세서가 다른 우선권 처리와 함께 연산하는 곳에서는 아주 중요하다. 한편으로 교호입력에 영향을 미치는 높은 우선권 처리는 낮은 우선권 처리를 무한정 정체시킬 수 있으며, 반면, 여러 교호입력채널중 하나에서 출력하기를 기다리고 있는 교호입력채널의 상태를 스케쥴된 시험을 반복한다. 따라서, 현재의 실시예는 만약 교호입력 채널이 하나도 준비가 되어 있지 않고, 입력처리에 의해 처음 테스트된 것일때 입력처리가 디스케쥴 되게한다. 만약 입력처리가 상기와 같은 방식으로 디스케쥴 되었을때, 프로세서는 채널중의 하나가 출력처리에 의한 작용으로 준비상태가 되자마자 재스케쥴되도륵요청한다. 그러나, 입력처리가 재스케쥴되고, 입력이 실행되기전에, 하나이상의 출력채널이 준비상태로 될 수도 있다. 결과적으로, 어떤 출력처리는 입력처리가 디스케쥴되어 대기하고 있을때 채널이 준비상태로 되자마자, 입력처리를 재스케쥴하기 위해 하나 이상의 요구가 프로세서에 행하여지는 것을 방지할 수 있다. 상기는 상기 정의된 교호개시, 채널구동, 교호대기, 채널비구동, 교호종료 및 멧세지 입력등을 포함하는 명령을 사용하여 이루어질 수 있다. 교호입력에 영향을 미치려고 하는 어떤 처리는 가능한 교호채널의 각각을 위해 하나씩 연산구동 채널 다음 교호개시를 처음으로 실행한다. 상기는 교호대기, 채널구동, 교호종료로 이어진다. 상기후 처리는 상술한 바와 같이 입력 "멧세지"에서 사용을 위해 계수채널과 소스정보를 주기 위해 어떤 부하명령을 실행할 필요가 있을 것이다.
교호입력을 위한 명령을 포함하는 여러가지 실시예를 기술하기로 한다.
실시예 3 .
상기는 한 마이크로컴퓨터상의 출력처리 Y에서 멧세지를 일련의 링크를 통해 다른 마이크로컴퓨터상의 입력처리 Y 사이의 통신에 관한 것이다. 처리 X는 Y가 어떤 출력명령을 실행하기 전에 입력연산을 시작한다. 어떤 교호입력도 처리 X 시작때에는 준비가 되어 있지 않다. 또한 처리 Y에 의한 출력작용 때문에 한번에 하나의 채널이 준비상태로 되고 다른 교호채널은 어느 것도 준비가 되어 있지 않다는 것을 가정한다. 처음에 처리 X는 "교호개시"를 실행하고, 연산의 정의에 따라 "구동 P"를 처리 X의 작업공간의 상태위치(67)에 수득한다. 출력채널(90) 및 입력채널(91)의 상태기는 제17a도에 도시된 것과 같다. 다음 처리 X는 "채널구동" 연산을 실행한다. 상기는 가능한 입력채널의 각각에 대해 행해지며 그러나 제17b도는 처리 Y에 의해 사용될 특정 채널상에서의 결과를 나타낸다. 구동채널의 정의에서 나타난 바와같이 처음에 처리 X는 감시값을 A 레지스터에 수득하고, 상기는 연산을 진행하기 전에 검색된다. 하인 8에서 7까지는 만약 채널이 소프트채널이라면 허용될 수 있는 순차를 세분화한다. 현재의 경우 채널의 어드레스 하드채널의 어드레스와 대응하며, 따라서, 라인 21에서 29까지의 순차가 이어진다. 라인 21은 채널의 포트수를 계산하고 라인22은 프로세서가 채널을 의해 상태 조회를 하게 한다. 라인 23에서 라인 25까지는 만약 채널이 준비되어 있다면 준비값 P가 처리 X를 위해 상태위치(67)에 수록될 수 있는 것을 표시한다.
그러나 상기는 현재의 경우가 아니며; 따라서 라인 27에서 라인 29까지의 순차가 인가된다. 처리 X를 위한 처리 설명기를 라인 28의 정의에 따라 채널을 위해 처리워드 위치에 수록되며, 라인 29는 상기 정의된 처리단계 구동링크를 필요로 한다. 상기는 입력채널의 우선권 플래그를 처리 X의 우선권에 셋트시키고, 링크채널이 구동요청을 하게 한다. 상기는 또한 채널의 상태가 제17b도에 도시된 바와같이 "구동"으로 바뀌게 한다.
다음 처리 X는 교호대기를 실행한다. 교호대기의 라인 2 정의에 따라 상기는 각-1을 처리 X를 위해 작업공간의 0위치에 셋트시킨다. 라인 3과 4는 준비 P가 있는지를 알기 위해 상태 위치(67)의 내용을 검색한다. 그렇지 않을때는 라인 8에서 11까지의 순차가 실행된다. 바꾸어 말하자면 수치대기 P는 처리 X를 위해 상태 위치내에 수록된다. 처리 X에 대한 IPTR은 IPTR 위치(65)에 기억되며, 처리 X는 SNP 플래그를 1에 셋팅하는 결과에 따라 디스케쥴된다. 이러한 것을 제17c도에 도시되어 있다. 상기 이후 처리 Y는 출력 멧세지 영향을 끼쳐 출력연산을 시작한다. 상술된 바와같은 통상적인 방법에서, 상기는 처리 Y가 디스케쥴되게 하고 그리고 출력링크는 제1데이타 바이트를 보낼 것이다. 상기 바이트의 도달은 처리 X를 위한 입력링크가 처리 X를 위한 처리기에 준비요청을 하게 한다. 상기는 제17d도에 도시된 위치이다. 다음, 처리X는 재스케쥴된다. 그리고 하나의 채널을 선택하는 "비구동채널"의 연산을 실행하고 리셋을 비구동시킨다. 비구동채널의 라인 1정의에서 올 수 있는 바와같이, A 레지스터는 ALTEND 연산후, 입력처리에 의해 실행필 다음 명령의 어드레스를 찾는데 필요한 옵셋 명령이 부하된다. B 레지스터는 감시값을 가지며, C 레지스터는 채널 어드레스가 부하된다. 상기 명령은 가능한 교호입력채널의 각각을 위해 반복된다. 라인 9와 10은 감시값을 검색한다. 상기 테스트가 만족하게 진행되었다면, 프로세서는 라인 13과 14에 따라 채널 어드레스가 소프트 채널의 어드레스인가를 테스트한다. 그러나 상기의 경우, 라인 26은 채널의 어드레스가 하드채널의 어드레스가 되도록 한다. 라인 29는 채널의 포트수를 계산하며, 라인 32은 프로세서에 의해 링크에서 상태조사가 행하여지게 한다.
만약 채널이 라인 34에 따라 준비되어 있다면, 상기에서 정의된 "선택된 처리인가?"란 처리절차가 실행된다. 라인 4의 상기 정의에 따라서, 상기는 0레지스터에 처리 X의 작업공간 0위치의 내용을 부하시킨다. 라인 5와 6에 따라서, 상기는 -1인가를 알기 위해 테스트된다. 그리고 만약 그렇다면, A 레지스터의 내용은 WPTR 레지스터로 표시된 메모리 위치에 수록되며, A 레지스터는 상기가 선택된 처리라는 것을 표시하는 기계적 참값을 갖는다. 라인 10에 있어서, 만약 0레지스터가 -1값을 포함하지 않았다면, 상기는 선택된 처리가 아닐 것이다. 제17e도는 채널 비구동을 실행하기전에 즉시 2가지 처리의 상태를 도시한다. 제17f도는 채널 비구동 실행후 위치를 도시한다. 제17f도 이후, 처리 X는 WPTR 레지스터에서 포인터에 의해 표시된 메모리 어드레스의 내용이 라인 1의 정의로부터 0레지스터에 부하되는 ALTEND 연산을 실행한다. 다음 레지스터 0에 포함된 옵셋과 함께 IPTR 레지스터의 이전값을 가지고 있는 IPTR 레지스터에 포인터를 주입시킨다. 상기는 명령의 순차를 소정의 위치에서 계속할 수 있도록 처리를 구동시킨다. ALTEND 실행후, 처리 X는 멧세지 전송을 위해 적당한 값을 부하하고, 제16c도에서 전방으로 제16도에서 도시된 순차를 수행할 입력 멧세지를 실행한다.
상기 실시예는 교호 하드채널의 사용에 연관된 것이지만, 순차는 많은 교호 소프트 채널중 하나를 통해 교호입력을 처리가 수행하는 것과 일반적으로 비슷하다. 처음에 "교호개시"의 실행은 처리가 교호입력을 수행하고 있다는 것을 표시하기 위해 처리의 상태 위치에 특정값 "구동 P"를 부하한다. "구동채널" 연산은채널의 상태를 시험하기 위해 각 채널상에서 수행된다. "채널구동"의 라인 12, 14 및 16의 정의는 채널의 내용을 검색한다. 라인 12에 있어서, 만약 작업공간 포인터가 채널에서 없다면, 입력 처리의 처리 설명기가 채널에 수록된다. 라인 17에 있어서, 만약 출력 처리의 작업공간 포인터가 채널에서 없다면, "준비 P"값이 입력 처리의 상태 위치에 수록된다. 상기는 출력 처리에 의해 시행된 명령 때문에 어떤 것이 "준비" 되어 있는가를 검색하기 위해 각 채널에 대해 행하여지며, 준비가 되어있지 않은 채널에 대해서는 입력 처리의 작업공간 포인터는 채널내에 남아 있게 된다. 다음 입력 처리는 채널보다 입력 처리에 영향을 미치는 "교호대기"를 실행한다. 라인 2의 정의에 있어서, 입력 처리의 상태위치 내용에서 "교호대기"의 정의중 라인 5와 7및 입력처리를 위해 작업공간의 0위치에 값 -1을 부하시킨다. "준비 P"가 발전되면, 입력처리는 디스케쥴되지 않고 만약 "준비 P"가 발전되지 않는다면, 정의중의 라인 9에 따라서, "대기 P"를 처리의 상태위치에 수록한다. 그리고 정의중 라인 10과 11은 입력처리가 디스케쥴되게 한다. 만약 입력처리가 디스케쥴되어 있다면 "채널 비구동"인 다음 명령을 진행할 것이다. 다른 한편으로 만약, 디스케쥴 되어 있다면 출력처리가 교호채널중 하나를 사용하려고 하기 때문에 예정대로 재스케쥴 될 것이다. 그리고 입력처리가 재스케쥴 되었을때 다음 명령은 "채널 비구동"이라는 것을 가정할 수 있다.
교호채널의 각각에 대해 상기 연산을 진행할 것이머, 각 연산전에 A 레지스터에는 상기 처리가 입력을위해 선택되어야 하는 것 위해 프로그램 순차에서 다음 명령을 찾는데 필요한 입력 옵셋을 나타내기 위해 옵셋의 수가 부가된다. 라인 18, 20, 24는 입력 처리에 대한 포인터 또는 출력처리에 대한 포인터상에서 채널이"Not 처리 P"값을 포함하는가에 대한 각각의 테스트를 표시한다. 만약 라인 24에 따라서 채널이 출력처리 라인 25에 대한 포인터를 포함한다면 "상기가 선택된 처리인가?"란 처리절차를 요구한다. 상기 처리절차의 정의에 따라서, 처리의 작업공간 0위치는 -1값을 가지고 있는가를 알기 위해 검색이 되고, 만약 그렇게 되어 있다면 상기는 입력을 위한 선택된 채널이 되며, 처리절차는 값 -1를 없애고 작업공간의 0위치에 필요한 명령옵셋을 수록한다. 또한 "채널 비수동"연산이 나머지 채널상에서 실행되었을때 그중 몇몇은 출력처리에 포인터를 유지시켜 "준비"상태가 발견될 수 있을 것이다. 그러나 "상기는 선택된 처리인가?"란 처리절차가 실행될때, 입력처리의 작업공간 0위치에서 -1값을 찾을 필요가 없으며, 따라서 채널이 이미 선택되었다는 것을 알 수 있고, 더 이상의 채널이 선택되지 않을 것이다. 입력 처리에 대한 포인터를 아직 포함하고 있는 채널은 "채널 비구동"의 라인 20조건과 맞을 것이며, 상기는 라인 22 다음의 순차를 따르게 되어 채널은 다시 "Not 처리 P"로 돌아간다. "채널 비구동"연산이 모든 교호채널상에서 실행된 후, 입력처리는 입력 처리의 작업공간 0위치에서 나온 명령 옵셋을 전달하는 "교호 끝"의 연산을 실행하고 옵셋이 처리를 위한 명령 포인터에 첨가되게 하여서 상기 처리를 위한 연속적인 프로그램은 명령 순차에서 정확한 지점이 선택된다.
실시예 4
제18도에 도시된 본 실시예는 많은 채널상에서 교호 입력 연산을 수행하는 다른 마이크로컴퓨터상의 처리X와 통신하기 위해 하나의 마이크로컴퓨터상에서 출력 연산을 수행하는 처리 Y를 갖는다. 상기 채널중에서 처리 Y에 의해 이용되는 하나는 준비가 된 단 하나의 입력채널이다. 처음에 처리 Y는 제16a도와 제16b도를 위해 기술된 순차에 따라 출력 멧세지를 실행한다. 상기는 제18a도에서 도착된 위치이다. 다음 처리X는 교호 개시 연산을 실행하며, 비구동채널을 실행시키려 하며 위치는 제18b도에 도시되어 있다. 비구동채널을 실행한 후, 상기 위치는 제18c도에 도시된 위치로 이동한다. 다음 처리. X는 교호대기를 실행한다. 그러나 계속적으로 실행하며, 디스케쥴 되지 않는다. 처리 X와 같은 위치는 비구동채널을 실행하려고 하며, 제18d도에 도시되어 있다. 실행된 비구동채널을 가지기 때문에 처리는 비구동채널 실행후 제17도 참고로 이미 기술된 바와같이 계속한다.
실시예 5
제19도는 출력처리 Y가 출력연산을 시작하기전에 처리 X가 교호 입력 연산을 실행하는 상황에서 같은 마이크로컴퓨터상의 동일한 우선권중 같은 우선권의 2처리 X와 Y를 도시한다. 상기 순차는 만약 Y가 X보다 높은 우선권이라면 같을 것이다. 처음에 처리 X는 교호개시를 실행하며, 상기는 제19a도에 도시된 위치이다. 상기는 단지 처리 X를 위해 "구동 P"를 상태위치에 수록하는 것이다. 다음 처리 X는 구동채널을 실행하고, 상기는 제19b도에 도시된 위치로 이동하고, 처리 X의 처리 설명기는 채널에 위치한다. 제19c도로 이동하기 위해서, 처리 X는 교호대기 연산을 실행하며 처리 X의 상태위치가 구동 P를 포함할때, 위치는 대기 P로 갱싱되고 처리 X는 디스케쥴된다. 처리 Y가 출력을 하려고 할때는 상기의 레지스터에 부하하여 제19d도에 도시된 바와같이 시작하여 출력 멧세지를 실행한다. 채널은 대기처리 X의 처리 설명기를 포함하고 있고, 처리 Y가 처리 X를 위한 작업공간의 상태위치(67)를 판독한다는 것을 알 수 있다. 그리고 대기P값을 포함하고 있다는 것을 알 수 있다. 상기는 처리 X가 교호 입력 연산에 포함되어 있다는 것을 나타낸다. 이러한 것은 X의 상태 위치가 준비 P에 셋되게 하며, 채널은 처리 Y의 처리 설명기가 부하된다. 처리Y의 작업공간은 Y와 소스 어드레스를 위해 IPTR 값을 저장하기 위해 사용된다. 처리 Y는 SNP 플래그를 1에 셋시키고 처리 X를 스케쥴한다. 상기는 제19e도에 도시된 위치이다. SNP 플래그가 1에 셋되었을때, 처리 Y는 디스케쥴된다. 스케쥴된 처리 X는 제19f도에 도시된 바와같이 비구동채널 연산을 실행하려고 한다. 비구동 연산을 실행한 후 위치는 제19g도에 표시된 바와같이 된다. 그후, 처리 X는 상술된 바와같이 명령 및 입력 멧세지 부하다음에 연결되는 연산 교호종료를 실행한다.
실시예 6
제20a, 20b, 20c도에 도시된 실시예는 같은 마이크로컴퓨터에 의해 우선권이 낮은 처리 X와 같이 실행되는 우선권의 높은 처리 Y가 처리 X의 차단을 어떻게 하는가를 도시한다. 처리 X는 처리 Y의 실행동안 만들어진 낮은 우선권 1이다. 처리 Y는 높은 우선권 처리 X인 우선권 0가지며 우선권 1인 WPTR 레지스터(51)에서 WPTR을 남기며 차단된다. 제20a도에 도시된 위치에서, 처리 Y는 우선권 0처리를 표시하기 위해 우선권 플래그(47) 셋트로 처리하는 것이머, 도시된 실시예에서, 우선권 1 또는 우선권 0을 위해 리스트상에서 대기하고 있는 처리과정은 없다. 처리 Y의 실행동안, 링크를 사용하여 출력 멧세지를 수행하려고할 것이다. 상기는 SNP 플래그를 제20b도에 도시된 바와같이 1에 셋팅시키려고 할 것이며, 개시 다음 처리절차는 SNP 플래그(58)를 프로세서는 우선권 0 리스트상에 다른 처리가 있는지를 알기 위해 FPTR(0)을 테스트할 것이다. 만약 없다면(왜냐하면 FPTR(0)가 Not 처리 P값을 포함하고 있기 때문에), 프로세서는 PRI 플래그(47)를 1에 셋시킬 것이며, WPTR REG(1)가 처리 X를 위한 유효한 작업공간 포인터를 포합하고 있을때는 절차 개시 다음 처리는 아무런 작용을 나타내지 않는다. 다음 작용에서와 같이 프로세서가 링크로부터 아무런 요청이 없다는 것을 검색하고는 SNP 플래그(1)는 셋되지 않고 따라서 처리 X의 실행을 재개시한다. 상기는 제20c도에 나타나 있다. 다음 몇 단계에서, 처리 Y가 멧세지를 출력하였던 링크에는 멧세지에 포함된 연속적인 바이트의 끝에 최종 확인신호가 수신되도록 되어 있다. 그때, 처리 Y에 의해 사용된 링크는 프로세서의 진행 요구를 할 것이다.
현재의 실행을 끝낸 다음 프로세서는 다음 실행할 작용이 무엇인가를 결정할 것이다. SNP 플래그(1)는 셋되지 않고 현재 처리중에 있는 우선권 X의 채널 우선권보다 높은 채널 우선권을 위해 실행요청을 한다. 그래서 프로세서는 대기처리 Y의 처리 설명기를 PROCDESC 레지스터에 복제시켜 넣은 "조작 진행 요청"의 처리절차 실행하여 진행절차를 실행한다. 진행 절차는 처리 Y의 처리 작업공간 포인터를 PROCPTR 레지스터내에 부하시키며 Y의 우선권을 PROCPRI 플래그에 부하시킨다. Y의 우선권이 현재 처리 X의 PRI 플래그에 표시된 우선권보다 높을때, 차단이 발생된다. PRI 플래그는 0에 셋되고, WPTR 레지스터(0)는 Y의 처리 작업공간에 셋되며, IPTR 레지스터(0)는 부하된다. 위치는 다시 제20a도에 도시된 위치로 돌아온다. 프로세서의 다음 작용은 출력 멧세지 명령 다음 명령인 다음 명령 처리 Y를 실행할 것이다.
실시예 7
제21a, 21b, 21c도는 출력처리 Y와 교호입력을 수행하는 높은 우선권 처리 X 사이에서 멧세지 전달동안 레지스터와 플래그 변화를 도시한다. 상기 실시예에서, 처리 X는 이미 교호입력이 시작되고, 교호대기가 실행되어 처리 X가 채널에 있는 처리 설명기로 디스케쥴된다. 처리 Y가 출력 멧세지를 실행할때, 채널에서 X의 처리 설명기를 찾을 수 있고, 그래서 수치대기 P가 나오는 처리 X의 작업공간의 상태위치를 판독하여 처리 X가 교호입력을 수행하고 있다는 것을 표시한다. 그래서 처리 Y는 처리 설명기가 채널에 위치하도륵 하며, Y의 IPTR이 Y의 작업공간의 IPTR 위치에 수록되고, 멧세지의 제1바이트중 소스는 Y의 작업공간의 상태위치에 수록된다. 다음 SNP 플래그(1)는 제21a드에 도시된 바와같이 1에 셋된다. 이러한것을 다음에 처리 Y가 디스케쥴되게 한다. X의 처리 설명기는 처리 X를 위한 진행절차를 실행할 것이다. 그러나 프로세서가 우선권 0인 처리 X를 스케쥴링할때, 프로세서는 우선권 1에 있게 되며, 우선 1차단을 일으키고 "다음 처리 개시"의 절차를 실행하기 전에 처러 X를 실행하게 한다. 진행절차를 마친 후의 상태는 제21b도에 도시되어 있다. 다음 처리 X는 비구동채널 연산을 수행하며 처리 Y에 의해 사용되는 채널을 선택한다. 다음 처리 X는 채널을 "Not 처리 P"값에 리셋시키고, T 레지스터에 처리 Y의 설명기를 부하하며 복사 플래그를 1에 셋하는 입력 멧세지 명령을 계속 실행한다. 다음 프로세서는 멧세지가 복사되게 하고 마침내 처리 Y가 스케쥴되게 한다. 진행절차는 처리 Y가 우선권 1큐상에 배치되게 한다. 실제로 처리 X는 SNP 플래그(0)를 셋팅하여 디스케쥴될 것이다. 다음 프로세서는 다음 실행을 위한 어떤 작용을 할 것인지를 결정한다.
그리고 SNP 플래그(9)가 셋되어 있기 때문에 다음 처리 개시를 실행할 것이다. 그리고 상기는 기계가 다시 우선권 1로 돌아가게 할 것이며 제21c도에 도시된 상태가 될 것이다. SNP 플래그(1)가 아직 셋되어있기 때문에 프로세서는 처리 Y를 디스케쥴할 다음 처리 개시 절차를 실행할 것이다. 그러나 처리 Y는 우선권 1 리스트산에 아직 있고, 실제로 스케쥴될 것이다.
프로그램 실시예를 위한 명령 순차
유럽특허 명세서 0110642호에는 2개의 처리 실시예가 기술되어 있으며 하나는 "회전" 변수를 다루고 있고 다른 하나는 "마일즈" 변수를 취급하며 상기 절차를 위해 2개의 실시예 프로그램을 실행하는 명령 순차가 주어져 있다. 동일한 2개의 실시예가 다음에서 설명되어 있다. 2개의 프로그램은 유럽특허 명세서 0110642호에 설명된 것과 같은 것이며 OCCAM 언어를 사용하여 다시 수록되어 있다. 다음의 각 실시예 프로그램은 OCCAM 명령문을 기계명령어로 바꾸기 위해 컴파일러를 사용하여 형성된 명령순차이다. 이경우 기계명령어는 상기 정의된 기능과 연산을 따른다.
라인번호가 프로그램에 붙여져 있으며 각 실시예를 위한 명령순차와 라인번호는 오직 참고용일 뿐이다.
실시예 1
1. VAR 회전 :
2. 참일때
3. 순차
4. 회전 : =0
5. 회전하는 동안 < 1000
6. 순차
7. 회전? 어느 정도
8. 회전 : =회전+1
9. 마일 : 어느 정도
실시예 2
1. VAR마일 :
2. 순차
3. 마일 : =0
4. 참일때
5. ALT
6. 마일? 어느 정도
7. 마일 : =마일+1
8. 연료? 어느 정도
9. 순차
10. 소모 : 마일
11. 마일 : =0
상기 2개의 프로그램은 상술된 기능과 명령을 수행할때 유럽특허 명세서 제 0110642호에 제공된 것과 다른 명령 순차를 만들어낸다.
실시예 1
프로그램의 라인 7은 "회전" 채널로부터 입력을 필요로 하며, 이것은 대응명령순차의 라인 12가 입력될 데이타를 위한 목적지 어드레스를 부하시키게 한다. 라인 13은 포인터를 사용될 채널에 부하시킨다. 라인14는 입력될 워드수의 계수를 부하시킨다. 라인 15는 워드에서 나온 상기 계수를 바이트로 변환하며, 라인16과 라인 17은 pfix 기능의 사용으로 "입력멧세지" 연산을 부하시킨다. 비슷하게 프로그램의 라인 9는 채널을 통해 출력을 요구하며, 대응명령 순차에서 라인 24는 포인터를 출력될 데이타의 소스에 부하시킨다. 라인 26은 워드로 된 출력 멧세지의 계수를 부하시키고, 라인 27은 상기 계수를 바이트로 변환시킨다. 다시 라인 28, 29는 "멧세지 출력"명령을 실행하기 위해 pfix 명령을 사용한다.
실시예 2
상기 실시예는 프로그램의 라인 5에서 시작하는 교호입력 작동을 포함한다. 상기는 프로그램의 라인 6에따라 "마일" 채널로부터 또는 프로그램의 라인 8에 따라 "연료" 채널로부터 교호입력을 필요로 한다. 대응하는 명령순차에서, 교호입력작동은 라인 5에서 시작한다. 라인 5는 "교호개시" 작동을 필요로 한다. 라인6은 "마일"채널에 포인터를 부하시킨다. 라인 8과 9는 "마일" 채널을 위해 "채널구동"을 작동시키기 위해 pfix 기능같은 것을 사용한다. 라인 10은 "연료" 채널에 포인터를 부하시키고 라인 11은 "참" 방지값을 부하시킨다. 라인 12와 13은 "연료" 채널을 위해 "채널구동" 작동을 실행하기 위해 pfix 기능을 사용한다. 라인 14와 15는 상기 처리를 위해 "교호대기"를 작동하기 위해 pfix 기능을 사용한다. 라인 16은 포인터를 "마일" 채널에 부하시키며, 라인 17은 "참" 방지값을 부하시킨다. 라인 18은 만약 처리가 "마일"채널을 통해 입력이 되면 필요한 명령옵셋을 부하시킨다. 상기의 경우 필요한 옵셋은 0이다. 라인 19와 20은 "마일" 채널상에서 "채널비구동" 작동을 위해 pfix 기능을 사용한다. 라인 21은 "연료" 채널에 포인터를 부하시키며, 라인 22는 "참" 방지값을 부하시킨다. 라인 23은 상기 처리가 "연료" 채널을 통해 입력을 받으면 필요한 명령 옵셋을 부하시킨다. 라인 24와 25는"연료" 채널상에서 "비구동채널"을 작동시키기 위해 pfix 기능을 사용한다. 라인 26과 27은 "교호종료"를 작동시키기 위해 pfix 기능을 사용한다.
상기 교호종료는 입력이 실행되는 채널에 따라 적당한 명령어 옵셋을 부하시키고, 만약 채널 "마일"이 입력을 위해 사용되면 상기 처리는 참고번호 L2 내지 L3 사이의 명령순차를 실행하기 위해 진행하는 것을 볼 수 있다. 또한 명령옵셋은 만약 "연료" 채널이 선택되었다면 처리가 참고번호 L2 내지 L3 사이의 명령순차를 실행하게 한다.
워드길이 가변회로
상술된 바와같이, 같은 마이크로컴퓨터 또는 다른 마이크로컴퓨터상의 처리 사이의 멧세지 전달은 어떤 숫자의 표준길이 데이타 묶음에서 일어난다. 각 패킷이 데이타의 바이트를 포함하고 있을때 워드길이가 다른 마이크로컴퓨터 사이에서 통신이 생긴다. 그것은 단지 멧세지 전달이 관계된 마이크로컴퓨터를 위한 완전한 숫자의 워드를 만들기 위해 각 멧세지에서 적당한 숫자의 바이트를 공급하기 위해 필요한 것이다. 상기와 같은 회로는 제22도에 도시되어 있으며, 16비트, 24비트, 32비트의 워드길이를 가진 마이크로컴퓨터가 도시되어 있다. 각 마이크로컴퓨터는 일반적으로 상술된 것과 같다.
마이크로컴퓨터(260)은 16비트의 워드길이의 레지스터를 가지고 있으며, 마이크로컴퓨터(261, 262)는 24비트 워드길이의 레지스터를 갖고 있다. 마이크로컴퓨터(263)은 32비트 워드길이를 레지스터를 갖고 있다. 상술된 멧세지 전달 명령어는 회로에 포함된 마이크로컴퓨터의 워드길이에 관계없이 같은 방법으로 작동될 것이다.
본 발명은 상술된 실시예에만 국한되는 것은 아니다.