KR940002340B1 - 다중 운영 체제 컴퓨터 장치 - Google Patents

다중 운영 체제 컴퓨터 장치 Download PDF

Info

Publication number
KR940002340B1
KR940002340B1 KR1019900006907A KR900006907A KR940002340B1 KR 940002340 B1 KR940002340 B1 KR 940002340B1 KR 1019900006907 A KR1019900006907 A KR 1019900006907A KR 900006907 A KR900006907 A KR 900006907A KR 940002340 B1 KR940002340 B1 KR 940002340B1
Authority
KR
South Korea
Prior art keywords
processor
bus
operating system
data
address
Prior art date
Application number
KR1019900006907A
Other languages
English (en)
Other versions
KR900018832A (ko
Inventor
몬로 딘위디 2세 죤
에드워드 그리스 로니
모리스 조이스 제임스
마리오 로프레도 죤
러쎌 샌더슨 케니드
다이사트 베이커 어니스트
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 KR900018832A publication Critical patent/KR900018832A/ko
Application granted granted Critical
Publication of KR940002340B1 publication Critical patent/KR940002340B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs

Abstract

내용 없음.

Description

다중 운영 체제 컴퓨터 장치
제1도는 하나의 통신 라인(a communication line)을 이용하는 표준 상호접속 컴퓨터 시스템(standard interconnection computer systems)을 개략적으로 도시한 도면.
제2도는 고장 허용 한계 상황(fault tolerant environment)에서 S/88 처리기의 상호접속을 개략적으로 도시한 도면.
제3도는 양호한 실시예에 있어서 S/88 처기기와 S/370 처리기의 상호접속을 개략적으로 도시한 도면.
제4도는 양호한 실시예의 방법에 따라 S/88 시스템에 결합된 S/370 시스템을 개략적으로 도시한 도면.
제5도는 양호한 실시예에 있어서 S/370 S/88 처리기 간의 데이타 교환을 제공할 수 있도록 S/88 처리기의 분리를 개략적으로 도시한 도면.
제6a, b 및 c도는 종래 기술의 IBM 시스템/88 모듈(prior art IBM System/88 module), 고속 데이타 상호접속(high speed data interconnections, HSDIs)에 의하여 상호접속된 복수 모듈, 고장 허용 한계 상황에서 네트워크를 통하여 단일 시스템 영상(single system image)과 상호 연결된 복수 모듈을 개략적으로 도시한 도면.
제7도는 처리기가 접속되고 S/88 처리기, I/O 및 주 기억장치(main storage)에 접속되는 방법에 의하여 고장 허용 한계가 되게 하는 S/370 운영체제(S/370 operating system)의 제어하게 S/370 응용 프로그램을1 수행하는 S/370 처리기를 제공하는 본 발명의 개선된 모듈의 한 형태를 개략적으로 도시한 도면.
제8도는 쌍으로 되어 있는 S/370 유닛과 S/88 유닛의 서로 상호접속되어 하나의 처리기 유닛을 형성하고, 고장 허용 한계 동작을 할 수 있도록 동일한 파트너 처리기에 대한 이들 유닛의 접속을 더 상세히 도시한 도면
제9a 및 b도는 처리 시스템 격납장치(processing system enclosure) 뒷판에 삽입하는 2개의 기판상에 짝으로된 S/370 및 S/88 유닛의 물리적 패키징의 한 형태를 도시한 도면.
제10도는 S/88 주기억 장치와 이 기억장치중 S/88은 운영체제에 인식되지 않고 S/370 처리기 유닛이 전용하는 상기 기억 장치의 섹션을 개념적으로 도시한 도면.
제11도는 S/370 처리기의 양호한 형태의 일부 소자와 이를 S/88 처리기 및 기억장치에 연결시키는 수단을 개략적으로 도시한 도면.
제12도는 보다 상세한 제11도의 소자와 S/88 처리기의 양호한 형태의 다양한 소자를 도시한 도면.
제13도는 S/370 버스 어댑터를 개략적으로 도시한 도면.
제14a는, b 및 제15a 내지 c도는 S/370버스 어댑터의 출력 채널을 가로지르는 데이타의 타이밍 및 이동을 개념적으로 도시한 도면.
제16도는 S/370과 S/88처기기 간의 직접적 상호접속을 보다 상세히 도시한 도면.
제17도는 제16도의 상호접속중 S/370 버스 어댑터와 DMA 제어기 간의 데이타 흐름을 개략적으로 도시한 도면.
제18도는 4개의 채널중 한 채널에 대한 DMAC 레지스터를 도시한 도면.
제19a, b도 및 c도(제19도의 배치에 의함)는 S/370 처리기를 S/88 처리기 및 주 기억 장치와 상호접속시킨 버스 제어 유닛의 양호한 형태를 제16도보다 더 상세히 개략적/도식적으로 도시한 도면.
제20도는 S/88처리기를 상기 처리기와 관련된 시스템 하드웨어로부터 분리시키는 논리와 다른 S/370 처리기로부터 S/88 처리로의 인터럽트 요구를 처리하는 논리의 양호한 형태의 개략도.
제21도는 본 출원서의 교시에 따른 다수의 상호접속된 S/370-S/88 처리기를 가진 모듈용의 기존 S/88인 터럽트 구조의 변경을 개념적으로 도시한 도면.
제22도, 제23도 및 제24도는 양호한 형태의 S/88 처리기의 판독, 기록 및 인터럽트 긍정응답 사이클에 대한 타이밍 다이어그램을 도시한 도면.
제25도 및 제26도는 우편함이 명령을 판독하고 Q가 명령을 선택하고 BSM이 명령을 판독하고 BSM이 명령을 기록하는 동안 어댑터 버스 채널(0,1)에 대한 핸드쉐이크 타이밍 다이어그램을 도시한 도면.
제27도 S/370 중앙 처리 요소의 양호한 형태의 블럭 다이어그램을 도시한 도면.
제28도 및 제29도는 S/370 주기억장치 및 제어기억장치의 특정구역을 도시한 도면.
제30도는 S/370 중앙 처리요소, I/O 어댑터, 캐쉬 제어기, 기억장치 제어 인터페이스 및 S/88 시스템 버스와 처리기 간의 인터페이스 버스의 양호한 형태를 도시한 도면.
제31도는 S/370 캐쉬 제어기의 양호한 형태의 블럭 다이어그램을 도시한 도면.
제32a도 및 제32b도(제32도 배치에 의함)는 기억장치 제어 인터페이스의 양호한 형태를 보다 상세히 도시한 도면.
제33도는 버스에 의한 유닛 간의 데이타 이송을 위한 S/88 시스템 버스 위상을 설명한 타이밍 다이어그램을 도시한 도면.
제34도는 쌍으로 되어 있는 기억장치 제어 인터페이스의 "데이타-인"레지스터(data in register)를 도시한 단편적인 개략도.
제35도는 제32b도의 FIFO에 기억된 명령 및 스토어 데이타 단어(command and store data words)의 포맷을 도시한 도면.
제36a 내지 d도는 기억징치 제어 인터페이스에서 수행되는 S/370 처리기 및 어댑터로부터의 스토어 및 인출 명령(store and fetch commands)을 도시한 도면.
제37도는 프로그래머의 견지에서 본 출원서의 전체 시스템의 양호한 실시예를 개념적으로 도시한 도면.
제38도, 제39도 및 제40도는 S/370 및 S/88 인터페이스, S/370 I/O명령 수행 및 EXEC 370 소프트웨어와 S/370 I/O드라이버(즉 ETIO+BCU+S/370 마이크로코드)간의 인터페이스의 분할을 위한 마이크로코드 설계의 양호한 형태를 개략적으로 도시한 도면.
제41a 내지 b도는 EXEC 370 소프트웨어와 S/370 마이크로코드 간과 ETIO 마이크로코드와 EXEC 370 소프트웨어 간의 인터페이스 미ㅍ 프로토콜을 개념적으로 도시한 도면.
제41c 내지 h도는 데이타 버퍼, 작업 대기행렬 버퍼(work queue buffers), 대기행렬 통신구역(queue communication areas) 및 링크 리스트(link list)를 포함하는 하드웨어 통신구역(hardware communication areas) 등을 포함하는 BUC 지역 기억장치(BUC local store)의 내용과, 요소가 S/370 마이크로코드와 EXEC 370 소프트웨어가 서로 통신하는 프로토콜을 포함하는 대개행렬을 통한 작업 대개행렬 버퍼의 이동을 도시한 도면.
제42도는 EXEC 370, EITO, S/370 마이크로코드 및, S/370-S/88 결합 하드웨어 간의 프로토콜과 협력하여 링크 리스트 및 대기행렬을 통한 작업 대기행렬 버퍼의 이동을 도시한 도면.
제43도는 전형적인 S/370 시작 I/O명령어의 수행을 개념적으로 도시한 도면.
제44a 내지 44l도는 S/370 마이크로코드와 EXEC 370이 각 형태의 S/370 I/O 명령어를 수행하기 위하여 서로 통신할 때 그 제어/테이타 흐름을 개략적으로 도시한 도면.
제45a 내지 45z도는 BUG내에서의 데이타 이송 연산 동안 BUG내의 지역 주소 및 데이타 버스상의 데이타, 명령 및 상태 정보를 도시한 도면.
제44a 내지 46k도는 (BUC, ETIO 및 EXEC 370을 통해) S/88이 S/370 I/O명령어에 응답하여 S/370 포맷으로 S/88 디스크상에 정보를 기억시키고 상기 디스크상의 정보를 인출하는 디스크 에뮬레이션 프로세스 과정(disk emulation process)의 양호한 형태를 개념적으로 도시한 도면.
제47도는 특규정 S/88 기억장치 맵 엔트리가 한 S/370 기억영역을 수용하도록 이동되는 S/88 저장 맵 엔트리의 고찰과 함께 제10도의 메모리 맵핑을 개념적으로 도시한 도면.
제48a 내지 k도는 S/88 물리적 기억장치(S/88 physical storage)내에 S/370 기억영역을 형성하기 위한 시스템 개시 및 재구성 루틴 동안에 신규 제공된 서브루틴과 상호 작용할 수 있는 S/88에 대한 가상/물리적 기억장치 관리의 양호한 형태를 도시한 도면.
제49 및 50도는 S/370-S/88 처리기 쌍 및 파트너 유닛을 동기하는 데에 이용된 특정한 논리를 설명하는 단편적인 다이어그램을 도시한 도면.
제51 및 52도는 본 개선의 대안의 실시예를 도시한 도면.
* 도면의 주요부분의 대한 부호의 설명.
12e : 송 수신기 61,63 : 멀티플렉서
[발명의 배경]
[발명의 분야]
본 발명은 다층 통신 프로토콜(muti-layer communication protocol)에 대한 조건이 없이 처리기에 대응하는 운영체체를 통하여 구현되는 프로세서간 통신(interprocessor communications)에 관한 것이다. 특히, 본 발명은 한쪽 또는 양쪽의 운영체제의 서비스를 이용하지 않고도 서로 다른 처리기상에서 실행되는 응용 프로그램 간의 직접적인 정보 전송에 관한 것이다.
응용 프로그램 간의 정보 전송은 공지되어 왔고, 통상적으로, 복잡한 회로 상호접속과 네트워크 프로토콜(network protocol)을 필요로 한다. 서로 다른 처리기와 이에 대응하는 운영체제를 결합시키는 한 방법은 각 시스템에 통신 제어기를 부가하는 것이다. 통상적으로 장치 구동기(device drivers)가 운영체제에 의해 억세스되어지도록 부7가되고, 데이타를 전송하기 위하여 공통 통신 코드 또는 프로토콜(commom communication code or protocol)이 이용된다. 예를들면, 네크워크내의 엔드-노드 컴퓨터(end-node-computer)간의 데이타 통신을 달성하기 위해선, 상기 엔드 노드가 일관성 서비스 세트(consistent set of services)를 각각 이해하고, 이를 교환되어질 데이타에 적용할 필요가 있다.
설계의 복잡성을 줄이고, 상호 교환 가능성을 구현할 수 있도록, 대부분의 통신 네트워크는 일련의 층 또는 레벨로 조직되어 있는데, 각 층은 상기 각 층의 전층(predecessor)상에 형성된다. 층의 수와, 각층의 명칭 및 기능은 네트워크마다 다르다. 그러나 모든 네트워크에 있어서, 상기 각 층의 목적은 상위층(higher layer)에 서비스를 제공하는 것이며, 동시에 서비스가 실제로 어떻게 구현되는가에 대한 세부사항을 상기층이 알지 못하게 하는 것이다. 예를들면, 전화 회선은 적당한 층에서 무선 주파수 채널에 의하여 쉽게 대치될 수 있다.
네트워크 노드상의 대응층은 서로 교신한다고 말하지만, 실제로는 아무런 데이타도 한 기계상의 대응층으로부터 또다른 층(물론, 최하층 또는 물리적 층을 제외함)으로 직접 전송되지 아니한다. 즉, 서로 구별되거나 성질이 다른 시스템 상에 작동하는 응용 프로그램의 직접 결합은 있을 수 없다. 그대신 각 층은, 최하위층에 도달할 때까지, 데이타와 제어정보를 상기 각 층에 인접한 층으로 통과시킨다. 최하위층에서는 응용층을 포함한 모든 상위층들에 의하여 이동되는 가상 통신과는 반대로, 다른 기계와의 물리적 통신이 존재한다.
그러므로, 본 발명의 기본 목적은 하나 또는 2개의 대응 운영체제의 서비스를 이용하지 않고도, 서로 다른 처리기에서 실행되는 응용 프로그램 간에 정보를 직접 전송하는 방법 및 수단을 제공하는 것이다.
[발명의 개요]
다수 운영체제 컴퓨터 장치는, 제1운영체제에 의하여 작동되는 제1응용 프로그램의 제어하에 있는, 제1처리기와 제2운영체제를 통하여 작동하는 제2응용 프로그램의 제어하에 있는 제2처리기와, 컴퓨터 장치용 자원 장치 서비스를 제공하는 제2운영체제 및, 제2운영체제의 서비스를 이용하지 않고도, 제1 및 제2응용 프로그램 간에 정보를 직접 전송할 수 있게 처리기들 간에 결합되어 있는 정보 전송 장치를 포함한다.
제1 및 제2운영체제를 통하여 작동하는 제1 및 제2처리기를 각기 제어하는 제1 및 제2응용 프로그램과 ; 자원할당, 스케줄링, 입/출력 제어 및 컴퓨터 시스템용 데이타 관리와 같은 서비스를 제공하는 제2운영체제를 포함하는 컴퓨터 시스템에 있어서, 본 발명은 어느 운영 시스템의 서비스도 이용하지 않고도 제1응용 프로그램과, 제2응용 프로그램간의 직접적인 정보 전송을 제공하는 논리 수단을 포함한다.
[양호한 실시예의 설명]
[서문]
본 발명을 실행하는 양호한 실시예는 고장 허용 한계 시스템(fanlt tolerant system)을 포함한다. 고장 허용 한계 시스템은 통상 고장 허용 한계 시스템에 대한 보텀염(bottom up)으로부터 설계되어 왔다. 처리기, 기억장치, I/O장치 및 운영체제는 특히 고장 허용 한계 환경을 제공하도록 만들어져 왔다. 그러나, 이에 대해 알고있는 고객의 기본 견해의 폭과 상기 운영체제의 완성 및, 유용한 유저 프로그램의 수 및 범위는 인터내셔널 비지네스 머신즈 코포레이션에 의해 시판된 System/370(S/370) 시스템과 같이 다수의 제조 업자와 명백히 노회한 메인프레임 시스템 만큼 크지는 않다.
오늘날의 고장 허용 한계 데이타 처리 시스템은 통상적으로 노회한 비-고장 허용 한계 메인프레임 시스템에는 유용하지 않거나 또는 상기 메인프레임 운영체제에 의해 지지되지 않는 많은 개선된 특징을 제공한다. 이러한 특징의 일부에는 분산된 계산 네트워크(distributed computing network)를 거쳐 나타내는 단일 시스템 영상(single system image) ; 핫 플러그 처리기(hot plug processors) 및 I/O제어기에 대한 능력(파워 온 상태도 카드 제어 및 설치) ; 순차적인 에러 검출 ; 컴퓨터 유저에 대한 인터럽션(interruption) 조치없이도 누전 절연 및 고장난 소자의 서비스로부터의 전기 제거 ; 원격 서비스 지지에 의하여 확인된 유닛의 가입자에 의한 교체 가능 및 ; 시스템이 연속적으로 운영되는 동안 소자 고장 또는 상기 시스템에 대한 부가적 장치 추가로 인해 초래된 동적 재구성등이 포함된다. 이러한 고정 허용 시스템의 일예가 인터내셔널 비즈니스 머신스 코포레이션에 의해 시판되는 System/88(S/88) 시스템이다.
상기 특징을 S/370 환경과 아키텍쳐에 통합시키기 위한 제안은 전형적으로 운영체제의 주요 재기록(major rewrite) 및 유저 응용 프로그램 또는 스크래치(scratch)에서 발생된 새로운 하드웨어로 구성될 수도 있다. 그러나, 대부분의 사람은 VM, VSE, IX 370등과 같은 운영체제의 주요 재기록은 대다수의 프로그래머와 상당한 시간이 소요되는 엄청난 타스크일거라고 여겨왔다. IBM S/370 VM 또는 MVS와 같은 복잡한 운영체제를 완성하려면 대개 5년이상 걸린다. 이제까지, 대부분의 시스템 붕괴는 운영체제 에러의 결과이다. 또한, 유저가 운영체제의 이용에 숙련되려면 여러해가 걸린다. 불행하게도, 일단 운영체제가 완성되고 대형 유저 베이스가 개발되었다면, 고장 허용 한계, 동적 재구성, 단일 시스템 영상 등과 같은 새로운 기능을 도입하기 위하여 코드를 변경한다는 것은 간단한 일이 아니다.
성숙한 운영체제를 새로운 기계 아키텍쳐내로 이주시키는 것은 복잡하고 비용이 많이 소요되기 때문에 설계자는 대개 사용 집단에 의해 쉽게 받아들여질 수도 없는 새로운 운영체제를 개발하기로 결정할 것이다. 새롭게 개발된 운영체제에 의하여 예증된 새로온 특징을 통합시키기 위하여 성숙한 운영체제를 변경한다는 것이 비실용적임이 들어날 수도 있다. 그러나, 새로운 운영체제는 실질적인 유저 베이스를 결코 개발할 수도 없고, 여러해 동안의 필드 사용 후에야 비로서 대부분의 문제가 해결될 것이다.
따라서, 본 발명은 운영체제의 주요 재기록없이도 통상적으로 비-고장-허용 한계 처리환경 및 운영체제용 고장 허용 한계 및 아키텍쳐를 제공하기 위한 것이다. 양호한 실시에에 있어서, IBM 시스템/88의 모델이 IBM S/370의 모델에 연결되어 있다.
서로 다른 처리기와 운영체제를 연결시키는 한 현행 방법은 각 시스템에 부가된 일종의 통신 제어기를 통해, 장치 구동기를 운영체제에 추가하고, 데이타를 운송하기 위하여 시스템 네트워크 이키텍쳐(SNA) 또는 OSI와 같은 일종의 통신코드를 사용하는 것이다. 통상적으로, 하나의 네트워크내에 있는 엔드-노드를 이해하고 일관된 서비스 세트를 교환되어질 데이타에 적용하여야 한다.
설계상의 복잡성을 줄이기 위하여 대다수의 네트워크는 하나의 층 또는 레벨이 그 각각의 전층상에 형성되는 일련의 층 또는 레벨로서 조직된다. 층의 수, 각 층의 명칭 및 각 층의 기능은 네트워크마다 서로 다르다. 그런, 모든 네트워크에 있어서, 각 층의 목적은 제공된 서비스가 실제로 어떻게 이행되는가에 대한 세부사항을 상위층이 모르게 하면서, 상위층에 특정 서비스를 제공하는 것이다. 한 기계상의 층(n)은 다른 기계사상의 층(n)과 대화를 한다. 상기 대화에 사용된 룰 및 관례가 공동으로 층(n) 프로토콜로서 공지되었다. 서로 다른 기계에 대응하는 층을 포함하는 개체를 피어 프로세서(peer processes)라 하는데, 프로토콜을 이용하여 통산하는 것을 피어 프로세스라 한다.
실제로는, 아무런 데이타도 한 기계상의 층(n)에서 다른 기계상의 층(n)으로 직접 전송되지 아니한다(최 하위층 또는 물리적 층에서는 제외됨). 즉, 서로 다르거나 또는 성질이 다른 시스템상에 운영되는 응용 프로그램은 결코 직접 연결될 수 없다. 그 대신에 각 층은 최하위 층에 이를 때까지 데이타 및 제어 정보를 상기 각층 바로 아래에 있는 층으로 통과시킨다. 최하위층에서는, 상부위층들에 의해 가상통신과는 반대로, 다른 기계와의 물리적 통신이 존재한다.
이들 서스비 셋트에 관한 규정가 전술된 바와 같은 다수의 상이한 네트워크내에 존재하고, 최근에는, 서로 다른 공급자가 공급하는 시스템을 쉽게 상호연결시킬 수 있는 프로토콜을 제공하는데 관심이 집중되고 있다. 이러한 프로토콜의 확장용 구조는 국제표준기구(International Standards Organization ; ISO)에 의해 규정된 7층 OSI(Open systems Interconnect ; 개방형 시스템간 상호 접속) 모델인 프레임워크(framework)이다. 상기 모델에서 각 층은 상위층에 대하여는 네트워크 서비스를 제공하는 한편, 그 하위층으로부터 서비스를 요구할 책임이 있다. 각 층에서 제공되는 서비스가 잘 규정되어, 이들 서비스가상기 네트워크의 각 스테이션에 의해 일관성있게 응용될 수 있다. 이에 의하여 서로다른 공급자의 설비의 상호접속이 허용된다. 한 노드내에서의 층 대 층 서비스의 구현은 특정 구현(implementation-specific)이고 스테이션내에 제공되는 서비스에 근거하여 공급자 분화(vender differentiation)을 허용한다.
이러한 프로토콜의 구조화 세트를 구현하는 전체목적이 데이타의 엔드투엔드 전송(end-to-end transter)을 수행하는 것임을 유의하는 것이 중요하다. 유저노드가 원시 응용 프로그램(source application program)으로부터 수령 응용프로그램(recipient application program)으로의 데이타 이송에 관한 것임을 이해하면 OSI 모델내의 주요부가 더 잘 이해될 수 있다. 상기 데이타를 이송하기 위하여, OSI 프로토콜이 각 레벨에 있는 데이타에 작용하여 네트워크에 프로그램을 공급한다. 프레임은 각 OSI 레벨에서 응용되는 대응 헤더와 결합된 데이타로서 형성된다. 그후에 이러한 프레임은 매체를 통하여 전송되는 비트의 셋트로서 물리적 매체에 제공된다. 그후에, 이들 프레임은 데이타를 수신 스테이션에 있는 응용 프로그램에 제공할 수 있도록 역 셋트의 절차를 겪는다.
전술한 바와 같이, 서로 다른 처리기와 운영체제 결합시키는 한 현행 방법은 각 시스템에 부가된 일종의 통신 제어기를 통하여, 장치 구동기를 운영체제에 추가하고, 데이타를 운송하기 위하여, 시스템 네트워크 아키텍쳐(SNA) 또는 OSI와 같은 일종의 통신 코드를 이용하는 것이다. 제1도는 구내 통신망(Local Area Network ; LAN)에 의해 2개의 컴퓨터 시스템의 표준 상호접속을 도시한다. 특히, IBM S/370 아키텍쳐 시스템은 IBM 시스템/88 아키텍쳐에 연결되어 있는 것으로 도시되어 있다. 각 아키텍쳐에서는, 응용 프로그램이 운영체제와 인터페이스를 통하여 처리기를 제어하고, I/O채널 또는 버스에 억세스하는 것이 관찰될 것이다. 각 아키텍쳐장치는 데이타를 교환하기 위한 통신 제어기를 구비한다. 통신을 하려면, 대응 응용 프로그램 간에 데이타를 교환할 수 있게 다층 프로토콜이 이용돼야 한다.
데이타를 교환하기 위한 대안의 방법이 코프로세서(coprocessor) 방법인데, 여기서 코프로세서는 시스템 버스상에 상주하고, 시스템 버스를 조정하고, 호스트 프로세서(host processor)와 동일한 I/O를 이용한다. 상기 코프로세서 방법의 단점은 비-고유(다른) 호스트 I/O(non-native(alien) host I/O를 지원하는데 필요한 코드 재기록의 양이다. 또 다른 단점은 유저가 코프로세서로부터 호스트 운영체제까지 왕복전환할 수 있는 2개의 시스템 아키텍쳐 즉 불리한 유전 환경에 정통해야 한다는 것이다.
종래 기술의 고장 허용 한계 컴퓨터 시스템은 처리 유닛, 임의 접금 메모리 유닛, 주변 제어 유닛 및, 다수의 모듈 유닛간에 모든 정보 전송을 제공하는 단일 버스 구조를 포함하는 처리기 모듈을 구비한다. 각 처리기 모듈내에 있는 시스템 버스 구조가 복사 파트너 버스를 포함하고, 하나의 처리 모듈내의 각 기능 유닛도 하나의 복사 파트너 유닛을 갖고 있다. 버스 구조는 메인클럭으로부터의 모듈 및 시스템 타이밍 신호의 유닛에 작동 전력을 제공한다.
제2도는 처리기 모듈의 처리기 유닛부분의 구조를 기능도의 형태로 도시한다, 공통 대체 카드상에 장착된 동일한 쌍으로된 처리기를 사용하고 동일한 연산을 동기화로 수행함으로써, 처리 에러를 검출하기 위한 비교가 행해질수 있다. 각 카드는 통상 동일 구조의 여분의 파트너 유닛(redundant partnered unit)을 갖고 있다.
컴퓨터 시스템은 전체 처리기 모듈내에 있는 각 기능 유닛의 레벨에서의 고장 검출을 제공한다. 에러 검출기가 각 유닛내의 하드웨어의 작동을 모니터하고 장치간의 정보 전송을 검사한다. 에러가 검출되면, 처리기 모듈이 에러를 야기시킨 유닛을 격리시키고 상기 유닛에서 다른 유닛으로 정보를 전송하지 못하게 하고, 상기 모듈은 고장난 유닛의 파트너를 이용하여 작동을 계속한다.
어느 유닛에서 고장이 검출되면, 상기 유닛은 격리되고 오프-라인(off-line)되기에, 상기 유닛은 부정확한 정보를 다른 유닛으로 전송하지 못한다. 이제 오프-라인 유닛의 파트너가 계속하여 작동하기에, 전체 모듈이 계속 작동할 수 있다. 오프-라인 유닛을 서비스하라는 지속 요구의 디스플레이 또는 다른 표시를 제외하곤, 유저는 이러한 고장 검출 및 오프-라인 유닛을 서비스하라는 지속 요구의 디스플레이 또는 다른 표시를 제외하곤, 유저는 이러한 고장 검출 및 오프-라인 상태에로의 전이를 거의 알지 못한다. 카드 배열은 제거 및 교체가 쉽게 되어 있다.
메모리 유닛은 또한 시스템 버스를 검사하는 타스크도 지정한다. 이러한 목적을 위하여, 상기 유닛은 주소 신호를 검사하고 버스 구조상의 데이타 신호를 검사하는 패리티 검사기를 구비한다. 어느 한 버스가 불완전하다고 결정되면, 메모리 유닛은 모듈의 다른 유닛에게 고장나지 아니한 버스에만 복종하라는 신호를 보낸다. 처리기 모듈용 전원 공급 유닛은 각 전원이 각 쌍의 파트너 유닛중 한 유닛에만 작동 전력을 제공하는 2개의 전원을 사용한다. 공급전압에 고장이 있음을 검출할 때에는 고장난 유닛으로부터 버스 구조로의 모든 출력 라인이 그라운드 전위로 클램프되어 전력 부족으로 인하여 불안전한 정보가 버스 구조에 전송되는 것을 방지한다.
제3도는 데이타의 직접 교환이 용이하게 고장 허용 한계 구조의 방법으로 쌍으로 된 S/370 처리기와 쌍으로 된 S/88 처리기의 상호접속을 기능도의 형태로 도시한다. 종래의 S/88구조(제2도)와의 유사성은 의도적이나, 양환 실시예의 작동을 설정하는 하드웨어와 소프트웨어 양자에 의한 유일한 상호 접속이다. 여기에서 S/370처리기가 S/88형 비교 논리 이외에 기억 장치 제어 논리와 버스 인터페이스 논리에 결합되어 있음이 관찰될 것이다. 설명될 바와 같이, 비교 논리는 S/88 처리기용 비교 논리와 동일한 방식으로 기능을 할 것이다. 게다가, S/370 처리기는 대응 S/88 처리기에 직접 결합되고 시스템 버스를 통하여서도 상기 S/88 처리기에 결합되어 있다. S/88 처리기와 같인, S/370 처리기도 쌍으로 결합되어 있는데 그 쌍은 교체할 수 있고 쉽게 끼워넣을 수 있는 필드 회로 카드상에 장착되게 되어 있다. 다수 구동기의 상세한 상호 접속은 이후에 보다 상세히 설명될 것이다. 양호한 실시예는 S/370 운영체제의 제어하에 동일한 S/370 명령어를 동시에 수행하기 위하여 다수의 S/370 처리기를 상호접속한다. 이러한 처리기는 대응하는 다수의 S/88 처리기, I/O장치 및 주 기억장치에 결합되어, S/88 운영체제의 제어하에 동일한 S/88 명령어를 모두 동시에 수행한다. 후술된 바와 같이, S/88 처리기를 상기 처리기의 I/O장치 및 기억장치로부터 비동기적으로 분리시키고 ; 후자와 분리되어 있는 동안, S/370 I/O명령 및 데이타를 S/370 처리기로부터 S/88처리기로 통과시키고 ; S/88처리기가 상기 처리기의 I/O방치와 기억장치에 재결합될 때, S/88처리기에 의한 후속 처리동안 상기 S/370 I/O명령 및 데이타를 S/88에 대해 유용한 형태로 변환시키는 수단이 포함된다.
1. 고장 허용 한계 환경에서의 통상의 비-고장 허용 한계 처리기 작동
위에서 제기된 고장 허용 한계 특징은 양호한 실시예에서 S/370 처리기와 같은 통상의 비-고장-허용 한계 처리기를 S/370 운영체제중 한 체제의 제어하에 동일한 S/370 명령어를 동시에 수행하는 1차쌍으로 결합시킴으로 이루어진다. 한 처리기내에 있는 여러가지 신호의 상태를 다른 처리기내의 여러가지 신호 상태와 비교하여 하나의 또 2개의 처리기내의 에러를 즉시 검출하기 위한 수단이 제공된다.
비교 수단을 갖춘 S/370처리기의 제2파트너쌍은 동일한 S/370 명령어를 제1쌍과 동시에 수행하고 제2쌍내의 에러를 검출하기 위해 제공된다. 각 S/370처리기는 처리기의 제1 및 제2파트너쌍, S/88 I/O장치 및 S/88 주 기억 장치를 가진 S/88 데이타 처리 시스템과 같은 고장 허용 한계 시스템의 각각의 S/88 처리기에 결합된다. 게다가 각 S/88 처리기는 하드웨어와 연관되어 있는데, 상기 처리기가 상기 하드웨어를 I/O장치 및 주 기억 장치에 결합시킨다.
각각의 S/370 및 S/88 처리기는 버스 제어 유닛을 포함하는 수단에 의해 서로 결합된 프로세서를 각각 갖는다. 각각의 S/88 처리기를 그 연관 하드웨어로부터 비동기적으로 분리시키고, (1) S/370 처리기로부터 S/88처리기로 S/370명령 및 데이타의 전송과 (2) 상기 S/370 명령 및 데이타를 S/88 처리기에 의하여 수행할 수 있는 명령과 S/88 처리기에 의해 사용할 수 있는 데이타로의 변환을 위해 S/88 처리기를 버스 제어 유닛에 결합 시켜서, 각 버스 제어 유닛은 각각의 S/88 처리기상에서 가동되는 응용 프로그램과 상호작용하는 수단을 포함한다.
그후에, S/88 데이타 처리 시스템은 S/88 운영체제의 제어항 상기 명령 및 데이타를 처리한다. S/88 데이타 처리 시스템은 S/370 처리기 쌍 중 한쌍이나 또는 각기 결합된 S/88 처리기 쌍내의 에러 신호에도 응답하여, 결합된 쌍을 서비스로부터 제거하고 다른 결합된 S/370, S/88쌍으로 고장 허용 한계 작동을 속행할 수 있게 한다. 이러한 배열에 의하여 S/370 프로그램은 S/370 및 S/88 운영체제에 어떤 중대한 변화를 주지 않고도, S/88 의 유리한 특징을 가진 고장 허용 한계(FT) 환경내에서 S/370 처리기(I/O작동용 S/88 시스템의 지원을 받아서)에 의하여 수행된다.
그외에도, S/88의 기억장치 관리 유닛은 S/88 주 기억 장치내의 지정된 영역을 S/88 운영체제에 의한 의식없이도 각각의 예비 S/370처리기 쌍과 그 운영체제에 할당할 수 있도록 제어된다. 상기 예비 S/370 처리기쌍의 처리기는 각각의 지정된 기억 영역으로부터 S/370 명령어 및 데이타를 인출하고 기억시키기 위해 기억장치 관리기 장치와 S/88 버스 인터페이스를 통하여 S/88의 공통 버스 구조에 개별적으로 결합된다.
양호한 실시예는 S/370 운영체제 또는 S/370 응용을 재기록하지 않고도 S/370 하드웨어내에서의 고장 허용 한계를 수행하는 방법 및 수단을 제공한다. 전 S/370 CPU 하드웨어 중복성 및 동기화(full S/370 CPU hardware redundancy and synchronization)는 고장 허용 한계를 지지하기 위해 처리기를 주문 설계하지 않고도 제공된다. S/370 운영체제와 고장 허용 한계 운영체제(2개의 가상 기억 장치)는 어느 한 운영체제의 주요 재기록 없이도 동시에 가동된다. 하드웨어/마이크로코드 인터페이스가 양호한 실시에에서는 서로 다른 운영체제를 각각 수행하는 피어 처리기쌍 간에 제공된다. 한 처리기는 IBM 운영체제(예를들면 VM, VSE, IX 370 등)을 수행하는 마이크로코드 제어 IBM S/370엔진(microcode controlled IBM S/370 engine)이다. 양호한 실시예의 제2처리기는 S/88 VOS(가상 운영체제)을 수행하는 하드웨어 고장 허용 한계 환경(예를들면, IBM, 시스템/88)을 제어할 수 있는 운영체제를 수행하는 하드웨어 고장 허용 한계 엔진이다.
처리기쌍 간의 하드웨어/마이크로코드는 2개의 운영체제가 단일 시스템 환경처럼 유저에 의해 제공된 환경내에서 공존할 수 있게 한다. 하드웨어/마이크로코드 자원(메모리, 시스템, 버스, 디스크 I/O, 테이프, 통신 I/O 터미널, 전력 및 격납장치)은 서로 독립적으로 행동하고 각 운영체제가 시스템 기능중 그 일부를 다룬다. 단어 메모리, 기억장치 및 운영체제는 에러 검출/격리, 복구, 동적 재구성 및, I/O 작동을 관리한다. NFT 처리기는 FT 처리기의 아무런 인식없이도 원시 명령어를 수행한다. FT 처리기는 NFT 처리기에 다수 I/O채널로서 나타난다.
하드웨어/마이크로코드 인터페이스는 2개의 가상 메모리 처리기가 공동 고장 허용 한계 메모리를 공유할 수 있게 한다. FT 처리기의 메모리 할당표로부터의 연속한 기억장치 블럭이 각 NFT 처리기에 할당된다. NFT 처리기의 동적 주소 변환 특징은 FT 처리기에 의하여 NE 처리기에 할당된 상기 기억장치 블럭을 제어한다. NFT 처리는 상기 처리기의 메모리가 오프셋 레지스터를 사용하여 주소 제로에서 시작되는 것을 알아챈다. NFTT 처리기를 상기 처리기의 자체 기억장치 경계내에 유지하기 위하여, 한계 검사가 수행된다. FT 처리기는 NFT 주소 공간 내외에 있는 NFT 기억장치 및 DMA I/O 데이타 블럭에 접근할 수 있는데, 반해, NFT 처리기는 그 지정된 주소 공간위에 있는 기억장치에 접근하는 것이 방지된다. NFT기억 장치 사이즈는 구성 테이블을 변화시킴으로써 변경될 수 있다.
2. 처리기를 이에 연관된 하드웨어로부터 분리시켜서 또다른 처리기로부터의 명령 및 데이트를 그 자체에 제공
새로운 장치를 기존 처리기 및 운영체제에 부가시키려면, 일반적으로 버스 또는 채널을 통한 하드웨어 부착과 운영체제용의 새로운 장치 구동기 소프트웨어의 재기록을 필요로 한다. 개선된 "분리"특성은 2개의 서로 다른 처리기중 한-처리기를 버스 또는 채널에 부착시키지 않고도, 버스 마스터쉽(bus mastership)에 대해 조정되지 않고도, 2개의 서로다른 처리기가 통신할 수 있게 한다. 상기 처리기는 대폭적인 운영체제의 변경 또는 전총적인 장치 구동기의 조건없이도 통신한다. 각 처리기가 그 자체의 원시 운영체제를 수행하고 있다하더라고 2개의 서로 다른 처리들이 합병되었으면, 유저에게 단일 시스템의 영상을 줄 수 있다.
이러한 특징은 보다 최근에 개발된 운영체제에 의해 나타내어진 특징을 성숙한 운영체제에 대한 유저의 견해 및 신뢰성과 결합시키는 방법 및 수단을 제공한다. 그것은 2개의 시스템(하드웨어 및 소프트웨어)을 함께 결합시켜서 새로운 제3시스템을 형성하는 것이다. 양호한 실시예 S/88에 결합된 S/370 시스템을 도시한다하더라도, 임의의 2개의 서로 다른 시스템이 결합될 수 있다는 것이 이 분야의 기술에 숙련된 자에게는 명백할 것이다. 이러한 개념의 설계 기준은 성숙한 운영체제에는 거의 또는 전혀 변동을 주지 아니함으로써 그 신뢰성을 유지하고, 코드의 개발시간으로 인하여 보다 최근에 개발된 운영체제에 최소한의 영향을 준다는 것이다.
이러한 특징은 각기 자체 특성을 가진 서로 다른 2개의 시스템을 양자의 특성을 구비한 제3시스템내에 결합시키는 방법을 포함한다. 이러한 방법의 양호한 형태는 주로 직접 기억 접근 제어기(DMAC)로서 기능하는 시스템 간에 결합 논리를 필요로 한다. 이 특징의 주목적은 고장 허용 한계 처리기(예를들어 : 양호한 실시예서의 S/88)에서 가동되고 고장 허용 한계 운영체제상에 배치되어 있는 응용 프로그램에 성질이 다른 처리기(예를들어 : 양호한 실시예에서의 S/370) 및 그 운영체제로부터의 데이타 및 명령을 얻는 방법을 제공하는 것이다. 하드웨어 및 소프트웨어 방어 메카니즘 양자가 어떤 처리기에도 존재하여, 칩입(즉, 감시-유저 상태, 메모리 맵 검사등)을 방지한다. 전형적으로, 운영체제는 인터럽트 DMA 채널 및 I/O장치와 제어기 같은 모든 시스템 자원을 제어하는 경향이 있다. 그러므로, 2개의 서로 다른 아키텍쳐를 결합시키고 철저하게 이러한 기능이 설계되지 않고 이들 기계간에 명령 및 데이타를 전송한다는 것은 매우 방대한 작업이거나 실행 불가능하다고 여겨진다.
제4도는 양호한 실시예의 환경내에서 S/88 처리기에 결합되어 있는 S/370 처리기를 개략적으로 도시한다. 제1도에 도시된 S/370 처리기와의 대조에 의해서, 메모리가 S/88 버스 인터페이스 논리로 대치되었고 S/370 채널 처리기는 버스 어댑터 및 버스 제어 장치로 대치되었다. 이중 절선으로 도시되어진 S/370 버스 제어 유닛과 S/88 처리기 사이의 상호 접속에 특히 유의하여야 한다.
이러한 특징에는 처리기 결합 논리를 대다수의 장치가 부착되는 것처럼 시스템 버스 또는 채널에 부착되는 것이 아니라, S/88 고장 허용 한계 처리기의 가상 주소 버스, 데이타 버스, 제어 버스 및 인터럽트 버스 구조에 부착시키는 것이 포함된다. 유효 주소가 고장 허용 한계 처리기의 가상 주소 버스상에 있음을 나타내는 스트로브 라인(strobe line)은 주소 신호가 활성화된 후 수초 동안 활성화 된다. 버스 어댑터와 버스 제어 유닛을 포함하는 결합 논리는, 스트로브 신호가 나타나기 전에, 선정된 주소 범위가 S/88 응용 프로그램에 의하여 제시되는가의 여부를 결정한다. 상기 주소 범위가 검출되면 주소 스트로브 신호가 S/88 고장 허용 한계 처리기 하드웨어로 가지 못하게 차단된다. 이러한 미싱 신호는 고장 허용 한계 하드웨어 및 운영체제가 발생된 기계주기를 알아내는 것을 방지할 것이다. 하드웨어의 고장 허용 한계 검사 논리는 이 주기동안 격리되고 이 시간동안 일어난 어떠한 작동도 완전히 미스시킬 것이다. 처리기 버스상의 모든 캐쉬, 가상 주소 매핑 논리 및 부동 소수점 처리기는 기계 주기가 발생하였음을 인식하지 못할 것이다. 즉, 모든 S/88 CPU 기능은 S/88 처리기에 위한 주소 스트로브 신호의 가정(assertion)을 기다리면서 '동결'된다.
고장 허용 한계 처리기 논리기로부터 차단된 주소 스트로브 신호는 결합 논리로 보내진다. 상기는 S/88 고장 허용 한계 처리기에 고장 허용 한계 특별 응용 프로그램과 부착된 S/370 처리기 간의 인터페이스인 결합 논리에 대한 완전한 제어를 제공한다. 상기 주소 스트로브 신호와 가상 주소는 결합 논리의 소자인 지역 기억 장치, 레지스터 및 DMAC를 선택하는데 이용된다. 제5도는 적당한 레벨에 있게 하고 적당한 주소에 대응하게 결정되는 S/370 버스 제어 논리부로부터의 인터럽트의 검출 결과를 개략적으로 도시한다. 그러므로, 광의로는, 분리 매카니즘은 처리기를 그 연관 하드웨어로부터 분리시키고 성질이 다른 엔리티(alien entity)를 가진 효율적인 데이타 전송을 위해 처리기를 상기 다른 엔티티에 연결시킨다.
결합 논리는 인입한 S/370 명령을 대기행렬에 넣고 S/370에 드나드는 데이타를 기억시키는데 사용되는 지역 기억 장치를 갖는다. 상기 데아타와 명령은 결합 논리내의 다수의 DMA 채널에 의하여 지역 기억장치내로 이동된다. 고장 허용 한계 응용 프로그램은 DMAC를 개시하고 DMAC로부터의 인터럽트를 서비스하여, 명령이 도달되었거나 또는 한 블럭의 데이타가 수신 또는 발신되었을 때, 응용 프로그램을 통지하는데 이용된다. 작동을 완성시키려면, 고장 허용 한계 처리기의 양 측면이 싱크내에 머물게, 상기 처리기의 클럭킹 에지에 앞서, 결합 논리가 데이타 스트로브 인식 라인으로 리턴돼야 한다.
응용 프로그램은 스타트 I/O, 테스트 I/O등과 같은 S/370 채널형 명령을 수신한다. 그다음에, 응용 프로그램은 각S/370 I/O명령을 고장 허용 한계 I/O명령으로 변환시키고 정상 고장 허용 한계 I/O명령 시퀸스를 개시한다.
상기는 운영체제 주위에서 한 블럭의 데이타를 얻는 새로운 방법 및 응용 일 것이라고 여겨진다. 상기도 또한 운영체제에 의해 통상 행해진 기능인 인터럽트를 다루기 위한 응용을 허용하는 방법이다. 응용 프로그램은 고장 허용 한계 처리기를 그 정상적인 처리기 기능에서 I/O 제어기 기능으로 자유자재로 전환할 수 있고, 사이클 기저마다 단지 가상 주소에 의해 그 기능을 선택한다.
따라서, 서로 다른 명령어와 메모리 주소지정 아키텍쳐를 가진 2개의 데이타 처리 시스템은 다른 시스템이 한 시스템의 존재를 알아채지 못하게 하면서 한 시스템이 다른 시스템의 가상 메모리 공간의 어떤 일부분이라도 효과적으로 접근할 수 있도록 견고히 결합되어 있다. 상기 다른 시스템내의 특정 응용 코드는 버스상에 특정 주소를 배치함으로써 하드웨어를 거쳐 상기 한 시스템과 통신한다. 하드웨어는 이 주소가 특정 주소인가의 여부를 결정한다. 특정 주소 임이 결정되면, 스트로브가 상기 다른 시스템의 회로에 의해 감지되어지는 것이 차단되고 전송(轉送 : redirect)되어 상기 다른 시스템의 CPU가 양 시스템에 접근할 수 있게 특정 하드웨어 및 메모리 공간을 제어할 수 있게 한다.
상기 다른 시스템은 초기화 작업 및 구성 작업에 관해서는 필요하다면, 상기 한 시스템을 완전히 제어할 수 있다. 상기 한 시스템은 어떤한 방법으로도 상기 다른 시스템을 제어할 수 없으나, 다음과 같은 방법으로 상기 다른 시스템에 대해 서비스를 요구할 수도 있다.
상기한 한 시스템은 I/O명령 및/또는 데이타를 공동으로 접근할 수 있는 메모리 공간에 상기 한 시스템 포맷으로 스테이지 하고, 특정 하드웨어를 사용하여 상기 다른 시스템에 인터랍트를 제공하여, 특정 레벨에서 특정 응용 프로그램을 실행시킨다.
후자는 상기 스테이지된 정보를 포함하는 메로리 공간으로 행하게 되고 상기 정보 포맷을 상기 다른 시스템의 원시 형태로 변환시킨다. 그다음에, 응용 프로그램은 상기 다른 시스템의 원시 운영체제로 향해 상기 변환된 명령 및 데이타에 근거하여 원시 I/O작동을 수행한다. 따라서, 모든 전술한 것이 완전히 명백하고 양 시스템의 원시 운영체제에 아무런 중대한 변화를 주지 않고도 일어난다.
3. 운영체제에 투명한 시스템에 대한 인터럽트의 제시
대다수의 현행 프로그램은 2가지(또는 그 이상)의 상태 중 하나, 즉 감시 상태 또는 유저 상태에서 수행된다. 응용 프로그램은 유저 상태에서 수행되고 운영체제와 같은 기능은 감시 상태에서 수행된다.
응용은 I/O포트를 부착시킨 다음에 포트를 개방하고, I/O요구를 판독, 기록 또는, 제어의 형태로 발한다. 그때에, 처리기는 디스크 스위치를 선택한다. 운영체제가 I/O성숙을 나타내는 인터럽트를 수신하면, 그후에 운영체제는 이 정보를 준비상태 대기행렬(ready queue)에 들것이고 시스템 자원에 대해 우선적으로 분류한다.
운영체제는 모든 인터럽트 벡터를 자체 사용용으로 확보해두는데 다른 기계로부터의 I/O 요구를 나타내는 외부 인터럽트와 같은 새로운 특징에 대하여는 전혀 이용하지 못한다.
양호한 실시예의 S/88에는, 유용한 인터럽트 벡터의 대다수가 실제로는 사용되지 못하고, 이러한 벡터는 운영체제에서는 공통 관행인 것처럼, "초기화되지 아니한" 또는 "가짜의"인터럽트용의 자료 공유 에러 조정기(common error handler)에 대하여 벡터링을 야기시키게 한다. 본 발명의 양호한 실시예는 이들 벡터중 다른 비사용된 벡터의 서브셋을 S/370 결합 논리 인터럽트용 특정 인터럽트 조정기에 대한 적당한 벡터로 대치한다. 그후에 변경된 S/88 운영체제는 적당한 새롭게 통합된 벡터에 대해 사용키 위해 리바운드된다.
양호한 실시예의 시스템/88은 8개의 인터럽트 레벨을 가지며 레벨 4를 제외한 모든 레벨에 오토벡터를 사용한다. 본 발명은 이들 오토벡터 레벨중 한 레벨, 즉, 최우선순위에 다음가는 레벨 6을 사용한다. 이 레벨 6은 통상적으로 A/C 전력 방해 인터럽트용으로 시스템/88에 의하여 사용된다.
시스템/370을 시스템/88에 결합시키는 논리는 그 인터럽트 요구를 A/C 전원 방해의 인터럽트와 논리합(OR)시킴으로써 레벨 6에 인터럽트를 제공한다. 스스템 초기화 동안, 결합 논리 인터럽트용 특정 인터럽트 조정기에 대한 적당한 벡터수가 응용 프로그림에 의하여 S/88 운영체제에 투명한 결합 논리내에 적재된다.(예를들면, 일부는 DMAC 레지스터내에 적재된다).
어떤 인터럽트가 시스템/88에 의해 수신되면, 인터럽트를 처리하고 제1인터럽트 조정기 명령어를 인출하기 위해 하드웨어 및 S/88 처리기의 내부 작동만을 이용하는 인터럽트 긍정 응답(IACK) 싸이클이 개시된다. 아무런 프로그램 명령어 수행도 요구되지 않는다. 그러나, 벡터수도 투명한 방식으로 얻어져 개시되어야 한다. 상기는 양호한 실시예에서는, S/88처리기를 그 연관하드웨어(A/C 전력 방해용 인터럽트 제공 매카니즘을 포함)로부터 분리시키고 레벨 6 인터럽트가 결합 논리에 의하여 제공될때, S/88 처리기를 S/370-S/88 결합 논리에 결합시킴으로써 이루어진다. 특히 S/88 처리기는 기능 코드와 인터럽트 레벨을 그 출력에 설정하고 주소 스트로브(AS)와 데이타 스트로브(DS)를 상기 IACK 싸이클의 시작에 가정한다. 주소 스트로브는, 결합 논리 인터럽트 제공 신호가 활동중이면, A/C 전력 방해 인터럽트 매카니즘을 포함하는 S/88 하드웨어로부터 차단되고 ; AS 데이타 스트로브에 의해 S/88 처리기내에 게이트된 적당한 벡터수를 판독하기 위해 결합 논리로 보내진다. 데이타 스트로브가 S/88가 하드웨어로부터 차단되기 때문에, 기계 주기(IACK)는 결합 논리 인터럽트 벡터수를 얻는 것에 관련하여 S/88 운영 시스템에 대하여 투명하다.
IACK 싸이클의 시작에 결합 논리 인터럽트 신호가 활동되지 않했다면, 정사 S/88 레벨 6인터럽트가 취하여졌을 것이다.
4. 서로 다른 가상 기억장치 운영체제를 수행하는 24개 또는 그 이상의 처리기간의 실 기억장치 공유
이 특징은 고장 허용 한계 시스템을 고장 허용 한계 기억장치를 지지하기 위한 코드, 즉 핫 플러깅(hot plugging), 부정확한 데이타의 순간적인 검출 및, 적당하다면, 그 복구 등을 거쳐 기억장치 기판의 제거 및 삽입을 지지하기 위한 코드를 가지지 아니한 성질이 다른 처리기 및 운영체제에 결합시킨다.
상기 특징은 서로 다른 가상 운영체제를 각각 수행하는 2개 또는 1 이상의 처리기가 양 운영체제에 투명한 방법으로 단일 실 기억장치를 공유할 수 있게 하는 방법 및 수단을 제공하는데, 여기에서 한 처리기가 다른 처리기 기억 공간에 접근할 수 있기에, 이러한 다수의 처리기간의 데이타 전송이 발생할 수 있다.
이 특징은 단일 운영체체의 유저에게 외관(appearance)을 제공할 수 있도록 2개의 유저에게 명백한 운영체제 환경을 결합시킨다. 가 운영체제는 통상적으로 자체의 완전한 실 기억 공간을 제어하는 가상 운영체제이다. 본 발명은 공동 시스템 버스를 통하여 양 처리기에 의하여 공유되는 하나의 실 기억공간만을 가진다. 상기 운영체제중 어느 하나라도 실제로 재기록되지 아니하고 상기 운영체제중 어는 운영체제도 다른 운영체제가 존재하거나 실 기억장치가 공유되어 있는지를 알지 못한다. 상기 특징은 제1처리기상에서 수행하는 응용 프로그램을 사용하여 제1운영체제의 기어장치 할당 대기행렬을 탐색한다. 제2운영 체제의 조건을 충족시킨 만큼 대형의 인접한 기억 공간이 발견되면, 그후에 상기 기억 공간은 포인터를 조작함으로써 제1운영체제의 기억 할당 테이블로부터 제거된다. 상기 제1운영체제는, 응용이 기억장치를 제1운영체제로 역리턴하지 아니하는 한, 상기 제거된 기억장치를 더이상 사용(예 : 재할당 능력)하지 못한다.
제1운영체제는 I/O 상관관계(I/perspective)로 부터 제2운영체제에 종속되고 I/O 제어기로서 제2운영체제에 응답한다. 제1운영체제는 모든 시스템 자원의 마스터이고 양호한 실시예에서는 하드웨어 고정 허용한계 운영체제이다. 제1운영체제는 초기에 기억장치(제2운영체제 용으로 "도용한" 기억장치는 제외함)를 할당 및 할당해제하고 모든 연관 하드웨어 고장 및 복구를 조정한다. 이 목적은 운영체제 코드를 대폭적으로 변경함이 없이 2개의 운영체제를 결합시키는 것이다. 각 운영체제가 두 처리기에 의해 사용되어진 단일 자원이기 때문에, 상기 각 운영체제가 모든 시스템 기억장치를 제어한다고 믿어야 한다.
시스템에 동력이 공급되면, 제1운용체제 및 그 처리기는 시스템의 제어를 담당하고 하드웨어는 제2처리기를 리셋 상태로 유지한다. 제1운영체제는 상기 시스템을 돕고 얼마나 많은 실 기억장치가 존재하는가를 결정한다. 운영체제는 결국 모든 기억장치를 4KB(4096바이트) 블럭으로 조직하고 각 유용블럭을 기억장치 할당 대기행렬내에 리스트한다. 대기행렬내에 리스트된 각 4KB 블럭은 그 다음의 유용 4KB블럭을 지적한다. 제1시스템에 의해 사용된 임의의 기억 장치는 4KB 블럭에서 대기행렬의 상단으로부터 제거 또는 부가되고 블럭 포인터가 적당히 조정된다. 유저가 대기행렬로 부터 메모리 공간을 요구할시에, 상기 요구는 대기행렬로부터 실 기억장치중 요구된 수의 4KB 블럭을 지정함으로써 충족된다. 기억장치가 더 이상 필요하지 아니한 때에는, 상기 블럭은 대기행렬로 되돌아갈 것이다.`
그 다음에는 제1운영체제가 시스템을 구성하는 모듈-스타트-업(module-start-up)이라고 하는 기능리스트를 수행한다. 모듈-스타트-업에 의하여 수행되는 하나의 응용은 제1운용체제로부터 기억장치를 포착하여 이를 제2운용체제에 할당하는데 이용되는 새로운 응용이다. 상기 프로그램은 완전한 기억장치 할당 리스트를 주사하고 기억장치의 인접한 4KB 블럭 스트링을 발견한다. 그후에, 응용 프로그램은 인접한 불럭 스트링에 대응하는 대기행렬의 일부에서 포인터를 변경하여, 제1운영체제의 메모리 할당 리스트로부터 인접한 기억장치 블럭을 제거한다. 양호한 실시예에 있어서, 제거된 제1 4KB 블럭에 선행하는 4KB 블럭의 포인터는 상기 제거된 인접한 블럭 스트링 바로 다음의 4KB 블럭을 지적할 수 있게 바뀐다.
이점에서, 상기 시스템이 재부트(reboot)되거나 또는 응용이 기억장치 포인터로 리턴하지 아니하는 한, 상기 제1운영체제가 실 메모리 공간의 아무런 제어 또는 인식도 허용하지 않난다. 그것은 마치 제1운용체제가 자체에서 수행되는 프로세스에 할당되고 단순히 유저에게 지정되었기 때문이 아니라 블럭이 테이블로부터 제거되었기 때문에 재할당할 수 없는 실 기억장치의 세그먼트를 고려하는 것과 같다.
그 다음에, 상기 제거된 주소 공간은 제2운영 체제로 인계된다. 제1운영 체제로 부터 도용되고 제2운영 체제에 주어진 주소 블럭을 주소 0에서 제2운영 시스템으로 출발하는 것처럼 보이게 하는 하드웨어 오프셋 논리(hardware offset logic)가 있다. 그 다음에, 제2운영 체제는 제1운영 체제로부터 도용된 기억장치를 마치 그 자체의 실 기억장치처럼 제어하고, 상기 기억장치를 그 자체의 가상 기억장치 관리를 거쳐 제어한다. 즉, 그것은 제2시스템에 의하여 발하여진 가상 주소를 지정된 실 기억장치 주소 공간내의 실 주소로 바꾼다.
제1운용 체제상에서 수행되는 응용 프로그램은 I/O 데이타를 제2처리기 기억 공간 내외로 이동시킬 수 있으나, 제2처리기는, 제2운용체제가 부가적인 기억장치를 알지 못하기 때문에, 그 할당된 공간 밖에서는 판독 또는 기록할 수 없다. 운영체제 고장이 발생하면, 제2운영 체제에서는 하드웨어 트랩(hardware trap)은 제2운영 체제가 제1운영 체제 공간에 우연히 기록되는 것을 방지한다.
제2운영 체제에 할당된 기억 공간 양은 유저에 의하여 모듈-스타트-업 프로그램의 테이블에 규정된다. 제2처리기가 16메가바이트를 갖기를 유저가 원할시에, 유저는 모듈-스타트-업 테이블에 이를 규정하고 응용은 제1운영 체제에서 다량의 공간을 얻을 것이다. 특정 SVC(서비스 호출 : service call)은 응용 프로그램이 제1운영 체제의 감시 영역에 접근하게 하여 포인터가 변경될 수 있게 한다.
두 운영 체제가 동일한 기억장치를 공유하는 것이 바람직한 주요 이유는 기억장치가 제1처리기상의 고장 허용 한계이고 제2처리기가 제1처리기로부터의 고장 허용 한계 기억장치 및 I/O를 이용할 수 있게 한다는 것이다. 제2처리기는 하드웨어의 일부를 복사하고 주소, 데이타 및, 제어 버스의 일부를 비교함으로써 고장 허용 한계가 되어지게 만들어진다. 이러한 기술을 이용하여, 제2운용 체제가 고장 허용 한계 능력을 갖지 못했더라도, 사실상, 제2처리기는 고장 허용 한계 기계가 된다. 하나 이상의 성질이 다른 처리기와 제2형태의 운영 체제는 각각 성질이 다른 처리기용으로 제공된 분리 실 기억장치를 가진 제1운영 체제에 결합될 수 있다.
양호한 실시예에 있어서, 제1운영 체제는 고장 허용 한계 S/88 운영 체제이고, 제2운영 체제는 S/370 운영 체제중 한 체제이고, 제1 및 제2처리기는 각기 S/88 및 S/370 처리기이다. 이러한 특징인 정상적 비-고장 허용 한계 시스템이 고장 허용 시스템에 이하여 유지되는 고장프린터용 한계 기억장치를 이용할 수 있게 할 뿐 아니라 비-고장 허용 한계 시스템이 (1) 고장 허용 한계 시스템에 의하여 유지되는 고장 허용 한계 I/O 장치에 대한 접근을 공유하게 하고 (2) 채널 대 채널의 결합을 너무 지연시키지 않고도 더 효율적인 방법으로 시스템간에 데이타를 교환할 수 있게 한다.
5. 단일 시스템 영상
단일시스템 영상이라는 용어는 원격 데이타 및 자원(예 : 프린터, 하드화일등)에 대한 유저 접근이 유저에게는 유저의 키보드가 부착되어 있는 지역 터미널에서의 데이타 및 자원에 대한 접근과 동일하게 나타나는 컴퓨터 네트워크의 특성을 기술하기 위하여 사용된다. 따라서, 유저는 네트워크에서 목적 장소를 알지 못하고 단순이 이름만으로 데이타 화일이나 자원에 접근할 수도 있다.
"파생 단일 시스템 영상(derived single system image)"이라는 개념은 본원에서는 새로운 용어로서 도입되고, 단일 시스템 영상을 가진 네트워크에 직접적으로 부착시킬 수 있는 시설이 결여되어 있으나 유효한 단일스스템 영상을 가진 네트워크에 직접 부착시킬 수 있는 상기 네트워크의 하드웨어 및 소프트웨어 자원을 이용하는 네트워크의 컴퓨터 요소에 적용하고자 한다.
이를 위해, "파생된 단일시스템 영상"의 효과를 발생키 위한 컴퓨터 시스템의 직접 부착을 이러한 시스템과 네트워크 요소간의 여러가지 결합 차수에 의하여 수행될 수 있다. 본원에서 사용된 "소 결합(loose coupling)"이란 용어는 파생 컴퓨터와 네트워크의 일부인 "원시" 컴퓨터의 I/O 채널을 통하여 수행되는 결합을 의미한다. "밀착 결합"(tight coupling)은 파생 컴퓨터와 원시 컴퓨터 간에 특정 하드웨어를 통하여 서로 직접적으로(어느쪽의 기존 I/O 채널을 이용함이 없이) 통신할 수 있게 설정되는 관계를 기술하기 위하여 현재 사용되는 용어이다.
"투명한 밀착 결합(transparent tight coupling)"이라 불리는 현재 고찰된 밀착 결합의 특정 유형은 각 컴퓨터(파생 컴퓨터와 원시 컴퓨터)의 운영체제가 다른 컴퓨터의 자원을 이용한다는 사실을 눈치못채게 하는 방식으로 각 컴퓨터가 다른 컴퓨터의 자원을 이용하게 하는 결합 하드웨어의 적응을 포함한다. 방금 규정된 바와 같이, 투명한 밀착 결합은 결합된 네트워크의 비용 및 성능상 이점을 성취하는 근거를 형성한다. 결합 하드웨어의 비용은, 설계의 복잡성에도 불구하고, 그렇지 아니하면 필요하게 될 운영체제 소프트웨어의 대폭적인 수정을 피함으로써 얻게 되는 절약을 충분히 상쇄하여야 할 것이다. 성능상의 이점은 직접 결합과 결합 인터페이스에서의 감소된 대역폭 간섭으로 인한 더 신속한 연결에서 얻게 된다.
상기 섹션에서 사용된 바와 같은 "네트워크"라는 용어는 몇몇 특정 프로토콜에 일치하는한, 많은 서로 다른 기계 형태가 연결될 수도 있는 대형 국제 전신처리/위성 접속 기법인 네트워크라는 현재 널리 쓰이는 개념보다도 상당히 제한된 용어이다. 오히려 상기 섹션에서 "네트워크"라는 용어는 시스템/88 처리기의 연결 콤플렉스 또는 대안으로 단일 시스템 영상의 특정을 가진 기타 처리기의 연결 콤플렉스에 적용하기 위하여 사용된다.
다수의 신중히 규정된 용어가 본원에서 고찰된 바와 같은 단일 시스템 영상의 개념을 보다 잘 설명하기 위해 사용될 것이고 본 발명의 특규정 양호한 실시예가 명확화를 위해 사용될 것인데, 상기 용어는 다음과 같다. (a) "고속 데이타 상호 접속(High Speed Data Interconnection ; HSDI)" 라함은 분리 하드웨어 유닛 간의 데이타 전송을 위한 하드웨어 서브시스템(및 케이블)을 말한다. (b) "링크"Link)"라 함은 전체적으로 다른 소프트웨어 목적에 대한 다수-부분 포인터로 구성되고 성질이 다른 명칭의 문자를 다분히 가지고 있는 소프트웨어 구성 목적을 말한다. (c)"모듈(MODULE)"이라 함은 하나의 인클로져(enclosure), 전원, CPU, 메모리 및, I/O 장치중 적어도 하나로 각각 구성되는 독립 처리 유닛(free-standing processing unit)를 말한다. MODULE은 다수의 인클로져와 함께 하우즈 추가 주변장치에 볼트로 죄어붙여 대형 단일 모듈을 형성함으로써 확장될 수 있다. 일부 I/O 유닛(터미널, 프린터)는 형식적일 수도 있고 케이블에 의해 인클로져에 접속될 수 있는데, 상기 유닛도 단일 MODELE의 일부로 본다. MODULE은 하나의 CPU 콤플렉스만을 가질 수도 있다. (d) "CPU 콤플렉스(CPU CMOPLEX)"라 함은 동일한 인클로져내에서 단일 CPU로서 작동할 수 있도록 운영체제 소프트웨어에 의하여 관리 및 제어되는 하나 또는 그 이상의 단일 또는 이중처리기 기판을 말한다. 설치된 처리기 기판의 실제 수에 관계없이, 임의의 유저 프로그램 또는 응용은, 하나의 CPU만이 존재하는 것처럼, 기록되고 수행된다. 처리 작업부하(processing workload)는 유용 CPU 기판간에 대충 분배되고 다수의 타스크가 동시에 수행되나, 각 응용 프로그램은 "단일 CPU 영상(SINGLE-CPU-IMAGE)"으로 제공된다. (e) "목적(OBJECT)"이라 함은 계층 명칭에 의하여 유일하게 식별할 수 있는 시스템(디스크, 테이프)내에 기억된 데이타의 수집(수행가능 프로그램을 포함함)을 말한다. LINK는 일부 다른 OBJECT에 대해 유일하게 명칭이 붙은 포인터이며, 따라서 OBJECT 자체라고 본다. I/O 포트(I/O PORT)는 특정 I/O 장치(데이타 소스 또는 목표)를 가르키는 유일하게 명칭이 붙은 소프트웨어 구성이며, 따라서 이것도 또한 하나의 OBJECT이다. 운영체제는 목적 명칭(OBJECT NAMES)의 복사를 효과적으로 방치한다.
"단일시스템 영상(single system image)"이라는 용어가 문헌에서 일치하게 사용되지 않기 때문에, "파생 단일 시스템 영상"이라는 본 발명의 의미를 명확히 하기 위하여 보다 상세히 설명될 것이다. 단일 시스템 영상(SINGLE-SYSTEM IMAGE)이라는 용어의 규정 및 설명에 있어서, '영상'이라 함은 시스템 및 환경의 응용 프로그램의 뷰(view)를 말한다. 이에 관련해서, '시스템(system)'이라 함은 응용 프로그래머가 자신의 명령어를 지시하는 결합 하드웨어(CPU 콤플렉스) 및 소프트웨어(운영체제 및 그 유틸리티)를 의미한다. "환경(Environment)"이라 함은 운영체제에 의하여 주소지정가능하고 따라서, 운영체제에 대한 서비스 요구를 통하여, 프로그래머에 의해 간접적으로 접근할 수 있는 모든 I/O 장치 및 다른 연결 설비를 의미한다.
그후에, 자체 운영체제를 가진 단일 독립 컴퓨터는 프로그래머에게 단일 시스템 영상(SINGLE-SYSTEM IMAGE)을 제공하여야 한다. 이는 I/O 장치를 공유하고 프로그래머에 의해 보여진 상기 '영상'이 변하기 시작하는 처리를 분배하기 위하여, 다수의 시스템을 한데 연결하고자 하는 경우에만 그러하며 ; 전신처리 회선(또는 케이블)을 경유한 두 기계의 통상적 상호 접속의 경우에는 프로그래머가 상기 확장된 설비의 잇점을 얻기 위해서는, 이중 환경(dual environment)을 이해하고 다를 수 있어야 한다.
일반적으로, 프로그래머가 다른 환경내의 설비에 접근하려면, 자신의 지역 운영체제에게 상기 '다른' 운영 체제에 자신의 조건을 전달할 것을 요구하고 아러한 조건을 상세히 명시하여야 한다. 그후에, 프로그래머는 임의의 긴 지연후에야, 자신의 요구 결과를 비동기적으로(적절한 순서에 따라) 인수할 수 있어야 한다. 기계간의 다수의 메시지 및 데이타 전송의 조정 및 제어는 양 기계내의 중요한 처리 오버헤드(overhead)를 구성하며 ; 그러한 이중 스스템 환경(DUAL-SYSTEM environment)에서는 프로그래머에게는 매우 다루기 힘들고, 비효율적이며, 곤란한 것이 될 수 있다. 종래의 방식으로 접속된 기계의 수가 증가하면 프로그래머에 대한 복잡성도 그만큼 빨리 증대될 것이다.
시스템/88원 설계에서 이러한 상황을 간소화시키고 프로그래머에게 단일-시스템 영상(SINGLE-SYSTEM IMAGE)을 제공하는 수단, 즉 모듈(MODULE)간의 HSDI 접속 및, 각 MODULE에서 운영체제내의 HSDI 구동 소프트웨어가 포함된다. 여기에서, 예를들면, 2-모듈 시스템에서는 각각의 두 운영체제는 전체 환경을 알고 '다른' 운영시스템의 능동적 증재없이도, HSDI를 거쳐 설비에 접근할 수 있다. 통신 오버헤드의 감소가 중요하다.
크기와 모델 유형이 서로 다른 대다수의 MODULE이 HSDI를 거쳐 상호 접속되어 프로그래머에게는 하나의(확대가능) 환경으로서 나타보이는 시스템 콤플렉스를 만들 수 있다. 응용 프로그램인 그 프로덕트(product)는 상기 시스템 콤플렉스내의 한 디스크상에 기억되고, 상기 콤플렉스내의 임의의 CPU에서 수행되고, 근본적으로 상기 콤플렉스 임의의 터미널에서 제어되거나 또는 모니터되고, 상기 콤플렉스의 임의의 I/O 징치로부터 또는 상기 장치에 데이타를 전송할 수 있는데, 전체가 임의의 특정 프로그래밍 고려없이 종전 방법보다 더 개선된 수행 효율을 갖는다.
운영체제와 그 여러가지 특징 및 설비는 원시적으로 분배된 환경이라 가정하고 여러가지 개체(유틸리디, 응용, 데이타, 언어 처리장치 등)가 어디에 상주하고 있는가에 유저가 신경을 쓰거나 이에 대한 제어가 필요없는 환경내에서 작동하는 방식으로 기록된다. 이러한 모든 것을 가능하게 하는 관건은 각 목적(OBJECT)이 유일한 명칭을 가져야 한다는 강제 규칙이고 ; 가장 기본적인 명칭 수식어는 그 자체가 콤플렉트내에서 유일하여야 하는 모듈(MODULE) 명칭이기 때문에, 상기 규칙은 전체 시스템 콤클렉스에 쉽게 확대 적용된다. 그러므로, 전체 콤플렉스내에서 임의의 OBJECT을 찾아내는 것은 그 명칭을 정확히 지명하는 것만큼 간단하다. OBJECT를 명명하는 것은 차례로 매우 길고 복잡한 명칭을 가진 목적(OBJECTS)에 대하여 매우 짧은 가명 포인터(대체명칭)의 사용을 허용하는 LINK의 제공에 의해 프로그래머에게는 간소화된다.
상기 상호 저속된 S/88 모듈 콤플렉스내에서 "파생 단일 시스템 영상"의 개념을 달성하기 위하여, 다수의 S/370 처리기는 S/88 단일 시스템 영상 특징중 적어도 일부 양상을 S/370 처리기 유저에 대해 제공할 수 있도록 S/88 처리기에 결합된다. S/370 처리기 및 운영체제가 이들 특징을 제공하지 않더라도, 마찬가지이다.
하나 또는 그 이상의 S/370 처리기가 S/88 MODULE내에 제공된다. S/88 처리기는 독특히게 각 S/370 처리기에 결합된다. 인식되었을 바와 같이, 각 S/370 처리기는 고장 허용 한계 작동을 위해 S/88 소프트웨어에 의하여 복사 및 제어된다. 되도록이면, 전술된 분리 및 인터럽트 기능 매카니즘에 의한, S/88 및 S/370 처리기의 톡특한 직접 결합은 처리기간의 데이타 전송을 S/370 및 S/88 운영체제 양자에 대하여 투명하게 한다. 어느 운영체제도 다른 처리기 또는 운영체제의 존재를 알지 못한다.
각 S/370 처리기는 S/370 주기억장치 및 에뮬레이트된 S/370 I/O 채널 및 I/O 장치를 완벽히 제공하기 위하여 고장-허용 한계 S/88 시스템 콤플렉스를 사용한다. 상기 S/370은 상기 S/88의 일부가 아닌 주메모리, 채널 또는 I/O 장치도 가지지 이니하며, 모든 이들 설비는 설계상 고장 허용 한계이다.
시스템 구성시, 각 S/370 처리기가 S/88풀(S/88pool)로부터 1 내지 16메가바이트의 주기억장치의 전용인접 블럭에 할당되며 ; 이 블럭은, S/88 운영체제가 우연히라도 이에 접근할 수 없도록, S/88의 구성 테이블로부터 제거된다. 고장허용 한계 하드웨어 레지스터는 각 S/370용 기억장치 블럭 포인터를 보유하며, 따라서 S/370은 지정된 것 이외의 임의의 주기억 장치에 접근할 수 있는 아무런 수단도 갖지 못한다. 그결과는 S/370에 의한 그 주메모리의 전적으로 종래의 단일 시스템 뷰이며 ; 상기 메모리의 고장 허용 한계 양상은 완벽히 투명하다. S/88내의 응용 프로그램(EXEC 370)은 실제의 S/88 운영체제 호출을 이용하여 S/370 채널 및 I/O 장치를 에뮬레이트 한다. 그것은 일종의 응용 프로그램이기 때문에, S/88 콤플렉스의 단일 시스템 영상 뷰를 가지며 따라서, 상기 뷰는 전체 S/370 '의사 채널(pseudo-channel)'로 확대된다.
S/370 운영체제(및, 확대에 의한 응용 프로그램)을 반대의 관점에서 보다, 모든 I/O 연산이 이를 통하여 행하여지는 "윈도우(window ; 채널)"를 눈앞에 그려보는 것이 도움을 줄수도 있다. 상기 윈도우는 성질이 변하지 아니하나, 즉 S/370 프로그램을 변경할 필요가 없으나, 윈도우를 통하여 보이는 상기 뷰가 단일-시스템 영상(SINGLE-SYSTEM IMAGE) 속성을 포함할 수 있도록 확대된다. 그후에, 소규모 개념 스텝이 S/88에 의하여 관리되는 단일 데이타베이스를 효율적으로 공유하는 대다수의 S/370을 묘사한다.
이러한 연결법의 중요성은 각 S/370의 비교적 단순하고 빠른 동적 재구성이다. 채널 "윈도우"는 양 방향이고, S/88 제어 프로그램 EXEC 370은 그 반대측에 있으며 ; EXEC 370은 S/370 CPU를 정지, 리셋, 재초기화, 재구성 및 재시작할 수 있는 충분한 능력을 가진다. 따라서, 단일-시스템 영상(SINGLE-SYSTEM IMAGE) 속성(S/88 I/O 및 운영체제)을 가진 다른 설비를 이용하여 S/370 I/O 설비의 투명한 에뮬레이션에 의해, 이러한 속성이 확대되고 S/370에 제공된다.
그러므로, S/370에는 목적 위치 독립성이 제공되어 왔다. S/370의 유저는 S/88 운영체제 디렉토리내에서 데이타 화일에 지정된 명칭에 의하여 데이타 화일 또는 다른 자원에 접근할 수도 있다. 유저는 S/370-S/88 모듈의 콤플렉스내의 데이타 화일의 위치를 알 필요가 없다.
하나의 모듈(9)내의 하나의 S/370 처리 유닛에 의하여 발하여지는 S/370 I/O 명령은 동일한 또는 다른 접속 모듈내의 데이타 화일과 유사 상주(like resident)에 접근할 수 있도록 동일한 모듈내의 S/370 처리 유닛에 밀착 결합된 연관 S/88 처리 유닛(또는 모듈(9)내에서 상호 접속되고 다중처리를 지원하는 S/88 가상 운영체제의 동일 카피에 의하여 제어되는 다른 S/88 처리 유닛)에 의하여 처리된다. 그것은 접근된 화일을 요구하는 S/370 처리 유닛으로 리턴시키거나 또는 예를들어, 상기 화일을 다른 모듈에 보내어 다른 화일과 합병시킬 수도 있다.
6. 개요
따라서, 2개의 가상 운영체제(예 : S/370 VM, VSE 또는 IX 370 및 S/88 OS)의 기능의 하나의 물리적 시스템에 합병된다. S/88 처리기는 S/88 OS를 실시하고 상기 물리적 시스템의 고장 허용 한계 양상을 조정한다. 동시에, 하나 또는 그 이상의 S/370 처리기가 S/88 랙(S/88 rack)에 끼워지고 S/370 처리기당 1 내지 16메가바이트 인접 메모리의 중 어느 곳에든지 S/88 OS에 이하여 할당된다. 각 S/370 가상 운영체제는 그 메모리 할당이 주소 0에서 시작하는 것으로 생각하고 그 메로리를 정상적인 S/370동적 메모리 할당 및 페이징법을 통하여 관리한다. S/370은 S/370이 S/88 메로리 공간에 접근하는 것을 방지하게 한계 검사를 받는다. S/88이 I/O 데이타를 S/370 I/O 버퍼내로 이동시켜야 하기 때문에, S/88은 S/370 주소 공간에 접근하여야 한다. S/88 운영체제는 모든 시스템 하드웨어 및 I/O 장치에 대한 마스터(master)이다. 피어처리기쌍(peer processor pairs)은 어느 한 운영체제의 중대한 재기록 없이도, 단일 시스템 환경내에서 그 각각의 운영체제를 수행한다.
[소개-종래 기술의 시스템/88]
본 발명은 IBM 시스템/370(S/370) 처리 유닛(VM,VSE,IXS/370 등과 같은 임의의 한 S/370 운영체제의 제어하에 S/370 명령어를 수행하는)이 단일 시스템 영상, 핫 플러그 가능성(hot pluggability), 순간 에러 검출, I/O 로드 분배와 고장 분리 및, 동적 재구성 가능성의 S/88 특징을 가진 고장 허용 한계 작동을 허용하는 방식으로 IBM 시스템/88(S/88) 처리 유닛(고장 허용 한계 환경에서 S/88 운영체제의 제어하에 고장 허용 한계 방법으로 S/88 명령어를 수행하는)에 밀착 결합되어 있는 양호한 형태에 대하여 기술될 것이다.
인터내셔널 비니네스 머신즈 코포레이션에 의해 판매되는 IBM 시스템/88은 IBM 시스템/88 다이제스트(IBM System/88 Digest ; 제2집 1986년 발행) 및 다른 S/88 거래처에서 발생하는 간행물에 일반적으로 기술되어 있다. 모듈(10)을 포함하는 시스템/88 컴퓨터 시스템(제6a도)은 고도로 신뢰가능한 온라인 처리를 요구하는 고객의 필요에 부합되도록 설계된 고가용성 시스템이다. 시스템/88은 듀플렉스 하드웨어 아키텍쳐를 정교한 운영체제 소프트웨어와 결합시켜서 고장 허용 한계 시스템을 제공한다. 시스템/88은 시스템/88 고속 데이타 상호접속(HSDI ; 제6b도)을 통하여 다중 시스템/88 모듈(10a,10b,10c)과 시스템/88 네트워크(제6c도)을 통하여 모듈(10d-g)의 부착에 의하여 수평 증대도 제공한다.
시스템/88은 소자고장이 언제, 어디에서 발생하는가를 탐지하고 이러한 고장으로 인하여 야기된 에러 및 인터럽션이 시스템내로 도입되어지는 것을 방지하도록 설계되어 있다. 고장 허용 한계가 시스템/88 하드웨어 설계의 일부이기 때문에, 응용 개발자에 의한 프로그래밍을 필요로 하지 않는다. 고장 허용 한계는 아무런 소프트웨어 오버헤드 또는 성능 저하없이도 수행된다. 시스템/88은 처리장치 직접 접근 기억장치(DASD) 또는 디스크, 메모리 및, 제어기를 포함한 주요 소자의 복사를 통하여 고장 허용 한계를 달성한다. 듀플렉스 소자가 고장나면, 그 듀플렉스 파트너가 자동적으로 처리를 속행하여, 최종 유저가 사용할 수 있게 그 시스템이 유지된다. 단기간의 전원 고장동안 메모리 보존을 위한 배터리 백업(dattery backup)을 갖춘 복사 전원도 또한 제공된다. 시스템/88과 그 소프트웨어 프로덕트는 최종 유저에 대해 단일 시스템 영상을 유지하면서도 확대, 유저간의 자원 공유 및, 복잡한 조건에 대한 해결책을 쉽게 제공한다.
단일 시스템 영상은 그 자신의 화일과 I/O를 각각 가졌고, 유저에게 자기가 단일 기계에 로그(log)되어 있는 인상을 주는 네트워크 또는 LAN을 경유하여 상호 접속된 다수의 처리기로 구성된 분배 처리 환경이다. 상기 운영체제는 유저가 디렉토리를 변경하는 것만으로 한 기계에서 다른 기계로 변환하게 할 수 있다.
적당히 계획하므로, 시스템/88 처리 능력은, 시스템/88이 가동중이고 최종 유저에 대한 단일 시스템 영상을 유지하는 동안에도, 확대될 수 있다. 다중 처리 모듈을 시스템/88 HSDI를 사용하는 시스템에 결합시키고 다중 시스템을 시스템/88 네트워크를 사용하는 네트워크에 결합시킴으로써 수평 증대가 이루어진다.
시스템/88 처리모듈은 제6a도에 도시된 바와 같이 완전히 독립형 컴퓨터이다. 시스템/88 시스템은 제6b도에 도시된 바와 같이 단일 모듈이거나 또는 IBM HSDI로 지역 네트워크에 연결된 그룹 모듈이다. 원격 전송 설비를 이용하여, 시스템/88 네트워크는 다중 시스템을 상호 접속시켜 최종 유저에 대한 단일시스템 영상을 형성하는데 이용되는 설비이다. 2개 또는 그 이상의 시스템은 통신 회선에 의하여 상호 접속되어 롱홀 네트워크(long haul network)를 형성할 수 있다. 이러한 접속은 직접 케이블, 임대 전화회선 또는 X. 25 네트워크를 통하여 할 수도 있다. 시스템/88 네트워크는 유저에게 완전한 투명한 모듈과 시스템간의 원격 자원 및 루트 메시지에 대한 참조를 탐색한다.
핫 플러그 가능성 시스템 작동을 인터럽트시키지 않고도 많은 하드웨어 대체를 할 수 있게 한다. 시스템/88은 고장난 소자를 서비스로부터 제거하고 그 듀플레스 파트너로 서비스를 속행하며 오퍼레이터의 조정없이도 고장난 소자에 대한 표시기를 점등시킨다. 거래처 또는 서비스 요원은 처리가 계속되는 동안 고장난 듀플렉스 기판을 제거 및 교체한다. 고객에 대한 이익에는 적시 수리와 감소된 유지 비용이 포함된다.
시스템/88이 고장 허용 한계 연속 작동 기계라 하더라도, 기계 작동을 중지시켜야 할 때가 있다. 이러한 몇가지 예가 시스템/88 운영체제를 향상시키거나, 하드웨어 구성을 변경(주 기억장치 추가)하거나, 또는 특정 서비스 절차를 수행하는 것이다.
듀플렉스 시스템/88 소자의 시스템/88 소프트웨어는 데이타의 완정성을 유지하느데 도움을 준다. 시스템/88은 고장 또는 고장 시점에서의 일시적 에러를 검출하고 이것이 응용이나 데이타 전반에 전파되지 못하게 한다. 데이타는 변조로부터 보호되고 시스템의 완전성이 유지된다. 각 소자는 그 자체의 에러-검출 논리 및 진단을 포함한다. 에러-검출 논리는 매기계 주기에서의 병렬 연산의 결과를 비교한다.
시스템이 소자 기능 부전을 검출하면 이 소자는 자동으로 시비스로부터 제거된다. 고장난 소자가 내부 진단에 의하여 검사되는 동안 처리는 듀플렉스 파트너로 계속된다. 에러 검출 기능은 서비스로부터 제거된 고장난 소자에 대한 진단을 자동으로 실행하고 진단중 처리는 그 듀플렉스 파트너로 속행된다. 특정 소자가 대체되어질 필요가 있다는 진단이 내리면, 시스템/88은 자동적으로 지원센터를 호출하여 문제를 보고하게 할 수 있다. 거래처는 신속한 수리와 낮은 유지 비용으로 이익을 얻는다.
시스템/88은 일반적으로 1984년 6월 5일 로버트 레이드에게 허여된 발명의 명칭이 "고장 허용 한계 계산용 중안 처리 장치(Central Processing Appartus for Fault Tolerant Computing)"인 미합중국 특허 제4,453,215호와 관련 미합중국 특허 제4,486,826호, 제4,597,084호, 제4,654,857호, 제4,750,177호 및, 제4,816,990호에 상세히 기술된 처리기 시스템에 근거를 두고 ; 이러한 특허는 본원에 완전히 설명된 것처럼 기준에 의해 본원에 통합되었다. 상기 제4,453,215호 레이드 특허의 일부가 본 출원서 제7도 및 제8도에 개략적으로 도시되었다.
본 출원서의 제7도 및 제8도에 도시된 이러한 컴퓨터 시스템은 처리 유닛(12), 임의 접근 기억장치(16), 주변 제어 유닛(20,24,32) 및, 모듈의 다수의 유닛간에 모든 정보 전송을 제공하는 단일 버스 구조(30)를 가진 처리기 모듈(10)을 구비한다. 각 처리기 모듈에서의 버스 구조는 복사 파트너 버스(A,B)를 포함하고, 각 기능 유닛(12,16,20,24,32)은 동일한 파트너 유닛을 구비한다. 비동기적 주변 장치와 함께 작동되는 제어 유닛과는 달리, 각 유닛은 통상적으로 그 파트너 유닛과 로크-스텝 동기로 작동한다. 예를들면, 처리기 모듈의 두 파트너 메모리 유닛(16,18)은 통상적으로 2개의 파트너 버스(A,B)를 구동시키고 상기 유닛 양자는 버스 구조(30)에 의하여 완전 동기로 구동된다.
컴퓨터 시스템은 처리기 모듈내의 각 기능 유닛의 레벨에서 고장 검출을 제공한다. 이 특징을 달성하기 위하여, 에러 검출기는 각 장치내에서의 하드웨어 작동을 모니터하고 상기 유닛간의 정보 전송을 검사한다.
에러가 검출되면 처리기 모듈은 에러를 야기시킨 버스 또는 유닛을 분리시켜서 정보가 다른 유닛으로 전송되지 못하게 하고 모듈은 작동을 계속한다. 상기 속행 작동은 고장 버스 또는 유닛의 파트너를 이용한다. 에러 검출이 정보 전송에 선행할 경우에, 상기 속행 작동은 고장없이 행하여졌을때와 같은 시간에 전송을 수행할 수 있다. 에러 검출이 정보 전송과 일치할 경우에, 상기 속행 작동은 전송을 반복할 수 있다.
컴퓨터 시스템은 전술한 고장 검출 및 치료 행동을 신속히, 즉 작동 사이클의 일부분내에서 실시할 수 있다. 컴퓨터 시스템은 기껏 유효성에 의문이 있고 전체적인 데이타 유효성을 확인하기 위하여 반복할 필요가 있는 단일 정보 전송만을 허용한다.
처리기 모듈이 고장 허용 한계 작동을 제공하기 위하여 상당히 하드웨어 중복성을 가졌다 하더라도, 아무런 복사 유닛도 갖지 못한 모듈도 완전히 연산할 수 있다.
기능 유닛 중복성은 임의의 유닛에서의 고장의 경우에도 모듈이 작동을 계속할 수 있게 한다. 일반적으로, 처리기 모듈의 모든 유닛은 임의의 검출된 고장이 없을때에는 선택된 동기성을 가지고 계속적으로 작동한다. 임의의 장치내에서 에러를 증명하는 고장이 검출된 때에는, 이 유닛은 분리되고 오프라인되며, 따라서 상기 유닛은 정보를 상기 모듈의 다른 유닛으로 전송하지 못한다. 오프라인 유닛의 파트너는 통상 근본적으로 아무런 중단없는 작동을 속행한다.
고장 허용 한계 작동을 제공하기 위한 모듈내의 기능 유닛의 파트너 복사 이외에도, 처리기 모듈내의 각 유닛은 일반적으로 데이타 전송에 관련되는 하드웨어의 복사를 가지고 있다. 기능 유닛내에서의 상기 복사의 목적은, 다른 유닛과는 관계없이, 각 유닛내의 고장을 검사하는 것이다. 에러 검출 구조를 포함하여, 모듈의 각 유닛의 다른 구조는 일반적으로 복사되지 않는다.
처리기 모듈의 모든 유닛에 서비스하는 공통 버스 구조는 되도록이면 전술한 2개의 복사 레벨의 조합을 이용하고 A 버스, A 버스를 복사하는 B 버스 및, X 버스를 형성하는 3개의 콘덕터 셋트를 갖는다. A 버스 및 B 버스는 동일 셋트의 사이클 규정, 주소, 데이타, 패리티 및, 유닛간의 에러 정보 전송을 경고하기 위하여 비교될 수 있는 다른 신호를 각각 운반한다. 복사되지 아니한 X 버스의 콘덕터는 일반적으로 모듈-와이드(module-wide)와 타이밍, 에러 상태 전력과 같은 다른 신호를 운반한다. 추가 C 버스는 파트너 유닛간의 지역 통신을 위하여 제공된다.
처리기 모듈은 유닛의 복사 섹션의 연산, 패리티의 사용, 에러 검사 및 정전 코트를 비교하는 단계를 포함한 각 기능 유닛내의 기법의 종합 및 공급 전압과 같은 작동 피라미터를 모니터하는 것에 의하여 고장을 탐지하고 그 위치를 찾아낸다. 각 중앙 처리 유닛은 2개의 중복 처리 섹션을 갖고, 상기 비교가 무효인 경우에는 버스 구조에 정보가 전송되지 못하도록 처리 유닛을 분리시킨다. 상기의 처리가 모듈의 다른 기능 유닛을 문제가 있는 처리 유닛으로부터 생길 수도 있는 임의의 고장 정보로부터 분리시킨다. 각 처리 유닛은 또한 복사되지 않는 가상 메모리 작동을 제공하는 스테이지도 갖는다. 오히려, 처리 유닛은 상기 스테이지내의 고장을 검출하기 위하여 패리티 기법을 이용한다.
임의 접근 메모리 유닛(16)은 2개의 비중복 메모리 섹션과 함께 배열되어 있는데, 각각의 상기 비중복 메모리 섹션은 메모리 단어의 서로 다른 바이트를 기억하기 위하여 배열된다. 상기 유닛은 각 메모리 섹션 및 상기 2개 섹션의 복합에서 에러 정정 코드에 의하여 고장을 검출한다. 재차, 에러 검출기는 메모리 유닛으로 하여금 잠재적 에러 정보를 버스 구조 및 다른 장치에 전송하지 못하게 할 수 있다.
메모리 유닛(16)에는 복사된 버스 콘덕터, 즉 A 버스 및 B 버스를 검사하는 타스크도 할당된다. 이러한 목적을 위하여, 상기 유닛은 주소 신호를 검사하고 버스 구조상의 데이타 신호를 검사하는 패리티 검사기를 갖는다. 덧붙여, 비교기는 A 버스상의 모든 신호를 B 버스상의 모든 신호와 비교한다. 이러한 방법으로, 어느 한 버스가 고장임이 판정된 때에는, 메모리 유닛은 X 버스를 거쳐 모듈의 다른 유닛에 비-고장 버스에만 복종하도록 신호한다.
처리기 모듈용 주변 제어 유닛은 공통 버스 구조. "구동" 및 "검사"라고 명명된 복사 제어 섹션 및, 상기 제어 섹션과 상기 주변 제어 유닛이 서비스하는 주변 입력/출력 장치간에 통신하는 주변 인터페이스 섹션을 접속시키기 위해 버스 인터페이스 섹션을 사용한다. 디스크 메모리(52a,52b)와 함께 작동을 하는 디스크 통신 제어 유닛(20, 22)과 ; 통신 패널(50)을 거쳐 터미널, 프린터 및 모댐을 포함한 통신 장치와 함께 작동을 하는 통신 제어 유닛(24,26) 및 ; 다중 처리기 시스템에서 한 처리기 모듈을 다른 처리기 모듈과 상호 접속시키는 HSDI 제어 유닛(32,34)등이 있다. 각 경우에 있어서 버스 인터페이스 섹션은 A 버스 및/또는 B 버스로부터 구동 및 검사 제어 섹션으로 입력 신호를 공급하고, 상기 버스 구조로부터의 특정 입력 신호의 논리 에러를 검사하고, 구동 및 검사 채널로부터의 신호 출력의 동일성을 시험한다. 각 주변 제어 유닛의 구동 제어 섹션은 제어, 주소, 상태 및 상기 주변 제어 유닛이 서비스하는 I/O 장치용으로 적당한 데이타 조작 기능을 제공한다. 상기 유닛의 검사 제어 섹션은 상기 구동 제어 섹션을 검사하기 위해 근본적으로 동일하다. 각 제어 유닛의 주변 인터페이스 섹션은 제어 유닛과 에러용 주변 장치간에 통과되는 신호를 시험하는 패리티 및 비교기 장치의 조합을 포함한다.
통신 제어 유닛(24)과 같은 동기 I/O 장치와 함께 작동하는 주변 제어 유닛은 그 파트너 장치와 로크-스텝 동기화로 작동된다. 그러나, 파트너 디스트 제어 유닛(20, 22)은 서로 다른 비동기화 디스크 메모리와 함께 작동하여, 제한된 동기화로 작동한다. 파트너 디스크 제어 유닛(20, 22)은 동시에 기록 작업을 수행하나, 디스크 메모리가 서로 비동기적으로 작동하는 만큼 정확한 동기회로는 수행하지 못한다. 제어 유닛(32)과 그 파트너도 또한 전형적으로 이와 같이 제한된 정도의 동기화로 작동한다.
모듈용 전원장치는 2개의 대용량 전원을 사용하는데, 각 전원은 각 파트너 유닛쌍중 한 유닛에만 작동 전력을 공급한다. 따라서, 하나의 대용량 전원은 버스 구조중 하나의 복사부분, 2개의 파트너 중앙 처리 장치중 한 장치, 2개의 파트너 메모리 유닛중 한 유닛, 각 주변 제어 유닛쌍중 한 유닛에 전력을 공급한다. 대용량 전원은 처리기 모듈의 비-복사 유닛용 전력도 또한 제공한다. 상기 모듈의 각 유닛은 하나의 대용량 전원으로부터 작동 전력을 수령하고 유닛이 필요로 하는 작동 전압을 차례로 발생히키는 전원 스테이지를 가지고 있다. 덧붙여, 상기 전원 스테이지는 공급 전압을 모니터한다. 결함이 있는 공급 전압을 검출한 때에는, 전원 스테이지는 유닛으로부터 버스 구조로의 모든 출력 회선을 그라운드 전위로 클래프시키는 신호를 발생시킨다. 상기 작용은 버스 구조로의 고장 정보의 전송을 야기시키는 임의의 전송에서의 전원 고장을 방지한다.
처리기 모듈의 일부 유닛은 실 정보 전송에 앞서 에러-검출 타이밍 단계를 포함하는 작동 사이클로 각 정보 전송을 실행한다. 따라서, 예를들어, 주변 장치용 제어 유닛인 이러한 작동을 제공하는 유닛은 정보 전송을 실행하기에 앞서 고장 상태를 시험한다. 고장이 검출된 경우에는, 상기 유닛은 정보 전송을 금지한다. 그러나, 모듈은 연산을-중단이나 지연없이-속행할 수 있고 비-금지된 파트너 유닛으로부터의 정보 전송을 실행할 수 있다.
일반적으로 적어도 중앙 처리 장치와 메모리 유닛이 포함되어 있고, 작동시간이 매우 중요한 처리기 모듈의 다른 유닛은 각 정보 전송을 그 전송과 관련된 에러 검출과 동시에 실행한다. 고장이 검출된 경우에는, 유닛은 즉시 다른 처리 유닛에 직전의 정보 전송을 무시하도록 경고하는 신호를 발생시킨다. 처리기 모듈은 고장 상태가 보고된 유닛의 파트너로부터 정보 전송을 반복할 수 있다. 상기 작동 방식은 각 정보 전송이 에러 검출을 위한 지연없이도 수행되는 최적의 작동 속도를 발생시킨다. 고장이 검출되는 비교적 소수의 경우에만 지연이 생긴다. 다수의 유닛이 접근을 요구할때, 어느 유닛 이득을 시스템에 접근시킬 것인가를 결정하는 버스 조정 수단이 제공된다.
[HSDI, 네트워크를 경유하여 상호 접속된 고장 허용 한계 S/370 모듈(9)]
제7도는 전술의 종래 기술의 모듈(10)의 일부분으로 모듈(10)의 듀플렉스 S/88 유닛(12, 14)을 대체시키면, 시롭고 독특한 S/370 모듈(9)을 만들어내는 S/370 및 S/88 듀플렉스 처리기 쌍(파트너 유닛 ; 21,23)의 상호 접속을 도시한다. 상기 독특한 모듈(9)이 모듈(10)용으로 제6b 및 c도에 도시된 것과 유사한 방식으로 S/88 HSDI 및 네트워크에 의하여 상호 접속되면, 이들이 고장 허용 한계, 단일 시스템 영상, 핫 플러그 가능성, 동일한 모듈의 다수의 S/88 처리 유닛간에 공유한 I/O 부하 등의 S/88 특징을 가진 S/370 콤플렉스(S/88 콤플렉스 보다는)를 만들어낸다.
특히, 독특한 모듈(9)의 파트너 유닛(21,23)의 S/370 처리기는 상기 처리기의 각각의 S/370 운영체제의 제어하에 S/370 명령어를 수행하며 ; 상호 접속된 S/88 처리기는 상기 처리기의 각각의 S/88 기억 장치 및 S/88 주변 유닛과 함께 S/88 응용 프로그램과 협력하는 S/88 운영체제의 제어하에 모든 S/370 I/O 작동을 수행한다.
그외에도, 또다른 S/370-S/88 처리기 파트너 유닛(25,27 및 29,31)은 새로운 모듈(9)내에 통합될 수 있어 독특한 모듈(9)내에 S/370 복수 처리기 환경을 허용할 수 있다. 덧붙여 파트너 유닛(21,23 및 25,27 및 29,31)내의 S/370 처리기는 파트너 쌍마다 서로 다른 S/370 운영체제하에서 각각 작동할 수도 있다.
듀플렉스 처리기 파트너 유닛(21,23)의 개요
제8도는 장치(21)내에서 S/370 처리기와 S/88 처리기를 상호 접속시키는 양호한 형태를 도시한다. 장치(21)의 하부는 각각의 처리기 요소쌍(60,62)내에 단일 처리기 요소를 사용하는 것을 제외하곤 전술된 레이드 특허의 처리기(12)와 본래 동일한 중앙 처리기(12)를 포함한다. 레이트 특허에서는 이중 처리기가 각각 유저 코드 및 운영체제 코드를 각기 수행할 수 있도록 60 및 62에 제공되어 있다.
본 출원에서는 두가지 기능이 단일 마이크로프로세서, 바람직하기로는 모토롤라 MC 68020 마이크로프로세서(1988년 모토로라에 의해 공개된 MC68020 유저 매뉴얼, 제3판(ISBN-013-567017-9)에 기술되어 있음)에 의하여 수행된다. 상기 공개는 그 전체가 본원에 설명되어졌기에 기준에 의해 본원에 통합되었다.
따라서, 각 처리기 요소(PE ; 60,62)는 되도록이면, 모토로라 68020 마이크로프로세서를 포함한다. 멀티플렉서(62,63)는 레이드 특허에서 상세히 설명된 방식으로 주소/데이타 제어 A, B 버스 및 송수신기(12e)에 의하여 버스구조(30)에 접속된다. 지역 제어(64,66) 및 가상 기억장치 맵(12c)이 요소(60,62)용으로 제공된다. 비교기(12f)는 버스(30) 및 처리기 요소(60,62)로 오가는 제어, 데이타 및 주소 회선상의 신호를 비교하여 에러-발생 고장을 검사한다. 신호 부정합으로 인하여 비교기(12f)에서 공통 제어 회로(86)로의 에러 신호가 생기고 이 회로는 에러 신호를 버스구조(30)의 X버스에 송신하고 송수신기(12e)내의 구동기(도시되지 않음)가 처리장치(12)를 오프라인하지 못하게 한다. 클램프 회로(88,90)가 유닛(12)에서의 전력 고장에 응답하여 유닛(12)으로부터 버스구조(30)로의 모든 출력 회선을 그라운드 전위로 클램프시킨다. 이러한 소자는 레이트 특허에서 보다 상세히 기술된다.
제8도는 상부는 한쌍의 S/370 처리 요소(85,87)를 S/88 버스구조(30) 및 S/88 처리 요소(60,62)에 접속시키는 양호한 형태를 도시한다. 처리요소(85,87)는 요소(60,62)가 버스구조(30)에 결합되는 것과 논리적으로 유사한 방법으로 멀티플렉서(71,73) 및 송수신기(13)를 경유하여 버스구조(30)에 접속된다.
비교회로(15 ; 제32a 및 b도에 보다 상세히 설명되어 있음), 클램프 회로(77,79) 및 공통 제어(75)는 유닛(12)내의 대응 소자들과 유사한 방법으로 제공되고 작동된다. 제어 회로(86)는 처리 요소(60,62)의 S/88 인터럽트 매카니즘에 결합된다. S/370 처리기(85,87)와 그 관련 하드웨어는 에러 조정 및 복구를 처리하기 위하여 S/88을 이용한다. 따라서, 공통 제어 회로(75)는 회선(95)이 비교 회로(15)에 의하여 검출된 에러를 조정할 수 있게 회선(95)을 경유하여 공통 제어 회로(86)에 결합된다. 상기 결합 회선(95)은 공통 제어(75,86)가 어느 한 처리기쌍에 에러가 생긴 경우에 그 각각의 처리기쌍(85,87 및 60,62) 양자를 오프-라인시킬 수 있게 한다.
유닛(21)내의 S/370 처리 유닛의 양호한 형태는 중앙처리 요소(85,87), 기억장치 관리 요소(81,83) 및, 처리기 대 처리기(예 : S/370 대 S/88) 인터페이스(75,86)를 포함한다. 기억장치 관리 유닛(81,83)은 멀티플렉서(71,73), 송수신기(13) 및, 버스구조(30)를 경유하여 처리 요소(85,87)를 S/88 주 기억장치(16)에 결합시킨다.
인터페이스(75,86)는 S/370 처리 요소(85,87)의 처리기 버스를 S/88 처리 요소(62, 60)의 처리기 버스에 각기 결합시킨다.
파트너 처리기 유닛(23)은 처리기 유닛(21)과 동일하다. 유닛(21)내의 두 처리 요소(60,62)와 유닛(23)내의 두 대응 요소(도시되지 않음)가 모두 통상적으로 동일한 S/88 운영 체제의 제어하에 동일한 명령어를 동시에 수행할 수 있도록 서로 로크-스텝)lock-step)으로 작동한다는 것이 전술한 것과 관련하여 기억될 것이다.
이와 마찬가지로, 유닛(21)내의 처리 요소(85,87)와 유닛(23)내의 그 대응 요소(도시되지 않음)도 동일한 S/370 운영 체제의 제어하에 동일한 명령어를 동시에 수행할 수 있도록 서로 로크-스텝으로 작동한다.
유닛(21 또는 23)내에서 에러가 발생한 경우에는, 상기 유닛은 다른 유닛에 의하여 계속된 고장 허용 한계 작동을 할 수 있도록 서비스부터 분리된다.
비록 S/370 처리 유닛의 한 특정 실시예의 몇몇 세부사항이 이하에 설명되었다 하더라도, 인터내셔널 비지네스 머신즈 코포레이션에 의해 발행되고 상기 코포레이션에서 입수할 수 있는 "IBM 시스템/370작동원리"(공개 번호 GA 22-7000-10, 제11판, 1987.9)에 기술된 조건에 적합한 다른 공지된 실시예가 사용될 수도 있음을 알아야 한다. 상기 공개는 그 전체가 본원에 설명되어졌기에 기준에 의해 본원에 통합되었다.
제9a 및 b도는 제8도의 처리기 유닛(21)용 S/370 및 S/88 소자에 대한 물리적 패키징(physical packaging)의 한 형태를 도시한다. 쌍으로된 처리 요소(85,87)를 포함하는 S/370 소자가 하나의 기판(101)상에 장착되고 쌍으로된 처리 요소(60,62)를 포함하는 S/88 소자가 또다른 기판(102)상에 장착된다. 2개의 기판(101,102)은 서로 견고하게 부착되어 샌드위치쌍(103)을 형성하고 후면 패널(도시되지 않음)의 2개의 슬롯내로 삽이하기에 적합하게 되어 있다. 종래의 후면 패널 배선은 기판(101,102)상의 소자를 서로에 결합시키는 한편, 제8도에 도시되어 있고 레이트 특허에 기술되어 있는 바와 같이, 버스구조(30)에도 결합된다.
S/88 처리기에 대한 S/370 처리기의 직접 결합에 대한 세부사항을 설명하기 전에, S/370이 (1) S/88 주 기억장치의 일부를 사용하고, (2) 명령과 데이타를 특규정 S/88 가상 기억공간을 이용하는 S/88과 교환할 수 있게 하는 매카니즘에 관한 개요를 제공하는 것이 도움이 될 것이다. 이들 메카니즘이 이후 보다 상세히 설명될 것이다.
따라서, 제10도는 한 모듈(9)용 기억장치 관리 유닛(105)에 의해 S/88 가상 기억장치 대 실 기억장치의 매핑의 양호한 형태를 설명하기 위해 사용된다. 가상 주소 공간(106)은 S/88 운영체제 공간(107)과 유저 응용 공간(108)으로 분할된다. 상기 공간(107)내에는 각 S/370 처리기 요소를 21과 같은 처리기 유닛의 각각의 S/88 처리기 요소에 결합시키기 위하여 사용되는 하드웨어 및 코드용으로 지정된 구역(109 ; 주소 007 E0000 내지 007EFFFF)이 있다. 주소 공간(109)은 정상 시스템 처리동안 S/88 운영체제에 대하여 투명하게 된다. 상기 공간(109)의 사용은 이하 상세히 설명될 것이다.
시스템 초기화 동안, 기억장치 관리 유닛(105)은 S/88 주 기억장치(16)내에 파트너 장치(21,23)내의 각 세트의 4개의 S/370 처리기 요소용 S/370 주 기억 구역을 지정한다. 따라서, 3개의 S/370 주기억 구역(162,163,164)이 파트너 유닛(21,23 ; 25,27 ; 29,31)용으로 각기 제공된다. 파트너 유닛내의 S/88 처리기 요소는 레이드 특허에서 기술된 방식으로 기억장치 유닛(16)의 잔여부분에 접근한다.
이하 설명될 바와 같이, S/370 기억 영역(162-164)이 "도용" 당하여왔고 S/88 공간으로 리턴되지 않는 한, 기억장치 관리 유닛에 의해 S/88 유저에 재지정할 수 없다는 것을, S/88 운영체제가 알지 못하는 방식으로 상기 S/370 기억 영역이 지정된다. S/370 시스템이 가상 시스템이기 때문에, 상기 시스템은 주소 천이를 통하여 그 각각의 주기억 영역에 접근한다. 파트너 S/88 주 기억장치 유닛(18)은 동일한 S/370 주 기억 영역(도시되지 않음)을 필요로 한다. 각 S/370 처리기 요소는 그 각각의 S/370 주 기억 영역에만 접근할 수 있고 상기 S/370 처리기 요소가 S/88 주 기억 공간에 접근하려고 시도하려는 경우에는 에러 신호를 발생시킨다. 그러나, 각 S/88 처리기 요소는 상기 S/88 처리기 요소가 그 S/370 처리기 요소용 I/O 제어기로서 행동할 때, S/370 I/O 연산 동안 그 각각의 S/370 처리기 요소의 S/370 주 기억 영역에 접근(또는 그 접근을 지시)할 수 있다.
[S/370 및 S/88 처리기 요소(85,62 ; 제11도 및 제12도)의 결합]
제8도는 모든 S/370 처리기 요소가 동일한 S/370 명령어를 동시에 수행하고 모든 S/88 처리기 요소가 동일한 S/88 명령어를 동시에 수행하도록 결합되어 있는 각 파트너 유닛(21,23)내에 2개씩, 4개의 S/370 처리기 요소(85)와 각 유닛(21,23)내에 2개씩, 4개의 S/88 처리기 요소(62)의 설비를 개략적으로 도시한다. 따라서, 모든 4개의 S/370 처리기 요소는 프로그래 수행에 관한 한 하나의 S/370 처리 유닛으로서 작용한다. 이와 마찬가지로, 모든 4개의 S/88 처리기 요소도 하나의 S/88 처리 유닛으로서 작용한다.
그러므로, 설명 및 이해를 돕기 위해, 다음 도면 및 명세서의 다음부분은, 소자 복사에 대한 보충설명을 제외하곤, 주로 하나의 S/370 처리기 요소(85)와 하나의 S/88 처리기 요소(62) 및, 그 연관 하드웨어 및 프로그램 코드에 대하여 설명하기로 한다.
마찬가지로, 설명 및 이해를 돕기 위하여, 멀티플렉서(61,63,71,73)와 송수신기(12e,11)를 통하여 처리기 요소를 비스구조(30)에 결합시키는 것은 이하 설명에서부터 실제로 생략될 것이다. 상기 결합에 대한 개요는 제32도와 관련하여 행해질 것이다.
그러므로, 제11도는 처리기 버스(170)를 포함한 제1경로와 S/370 기억장치 관리 유닛(81)을 통하여 시스템 버스(30) 및 S/88 기억장치(16)에 결합된 처리기 요소(85)를 도시한다. 처리기 요소 인터페이스(89)에 대한 처리기 요소를 포함한 제2경로를 통하여 PE62의 처리기 버스(161)에 결합된 PE85가 도시되었다. PE85는, S/370 프로그램 수행중, 기억장치(16)내의 지정된 S/370 주기억 영역(162)으로부터 데이타 및 명령어를 인출(및 기억)하기 위하여 제1경로를 이용한다. PE62는 인터페이스(89)를 포함하는 제2경로를 거쳐 PE85용 S/370 I/O 작동을 수행한다.
양호한 실시예에 있어서, S/370 칩 세트(150 ; 제11도)는 처리기 요소(85), 클럭(152), 디렉토리 룩 어사이드 테이블(directory look aside table ; DLAT, 341)을 가진 캐쉬 제어기(153), 버스 어댑터(154), 선택적 부동 소수점 코프로세서 요소(optional floating point coprocessor element, 151) 및 S/370 아키텍쳐를 지원하는 한 세트의 아이크로코드를 기억하기 위한 제어 기억장치(171)를 포함한다. 이러한 S/370 칩 세트는 인터내셔널 비즈네스 머신즈 코포레이션에 의해 시판되는 임의의 기존 S/370 운영체제(VSE/SP, VM/SP, IX/370 등과 같은)에 이해 작동되도록 적응될 수 있다.
캐쉬 제어기(153)는 저장 제어 인터페이스(STCI, 155)와 함게 S/370 기억장치 관리 유닛(81)을 형성한다. 버스 어댑터(154) 및 버스 제어 유닛(BCU, 156)은 PE 내지 PE 인터페이스(89)를 포함한다.
양호한 실시예에 있엇, PE85와 같은 각각의 S/370 CUP는 32비트 데이타 흐름, 32비트 연산/논리 유닛(ALU), 3포트 데이타 지역 기억장치내의 32비트 레지스터 및, 8바이트 S/370 명령어 버퍼를 가진 32비트 마이크로 프로세서이다. S/370 명령어는 하드웨어내에서 수행되거나 마이크로 명령어로 해석된다. 칩(153)은 연관 기억장치 제어기능과 함께 S/370 프로그램 명령어 및 데이타용 캐쉬 기억장치를 제공한다. 칩(153)은 그 프로그램 명령어를 수행하면서 PE85로부터 발하여지는 모든 기억 요구를 다룬다. 칩(153)도 또한, I/O 데이타를 전송할 시에, 버스 어댑터(154)로부터의 요구를 다룬다.
버스 어댑터(154) 및 BCU(156)는 입력/출력 작동 동안 내부 S/370처리기 버스(170)을 S/88 처리기 버스(161)에 직접으로(또는 긴밀하게) 상호접속시키기 위한 논리 및 제어를 제공한다. BCU(156)는 PE85 및 PE62의 처리기 버스를 서로 직접 결합시키는 1차 매카니즘이다. 이하 설명될 바와 같이, PE62와 PE85간에 데이타 및 명령 전송을 위해, PE62가 그 연관시스템 하드웨어로부터 "분리"될 때, S/88 처리기 요소(62)와 상호작용을 하는것이 하드웨어 매카니즘이다.
클럭 칩(152 ; 제12도)은 클럭 신호 발생용 중앙 집중형 논리를 사용하고 적당한 클럭 신호를 각각의 다른 칩(85,151,153,154)에 개별적으로 인가한다. 클럭(152)은 시스템/88 버스(30)로부터의 클럭 신호에 의하여 차례로 제어되어 S/370 PX85 및 S/88 PE62 둘 다를 동기화시킨다.
처리기 결합/분리 하드웨어와는 별도로, 2개의 서로다른 S/370 및 S/88 하드웨어 아키텍쳐를 합병하는데 필요한 필수부분이 전술한 비고장 허용 한계 하드웨어를 고장 허용 한계 버스구조(30)에 동기적으로 부착시키는 수단이다. 양호한 실시예에 있어서, 이러한 인터페이스는 S/370 캐쉬 제어기(153)와 S/88 시스템 버스(30)간을 통하게 하여야 하는 STCI 논리(155)에 의하여 조정된다. 그외에도, 비고장 허용 한계 하드웨어는 제8도에 도시된 바와 같이 기판에 복사되어 서로 간에 그리고 파트너 유닛과 로크-스텝으로 가동할 수 있는, 검사(check)' 및 구종(drive)' 논리를 발생시켜야 한다. 따라서, 기판(101,102)상의 시스템 소자로 구성되는 '단일' CPU(single CPU)는 각각의 듀플렉스 파트너 유닛과 로크-스텝으로 가동되어야 한다. 최적의 성능과 기능성을 유지하면서도 상기 조건을 실행하는 타스크는 분리 클럭원의 동기화를 포함한다.
양호한 실시예에 있어서, S/88 시스템 클럭(38 ; 제7도)은 공통 버스구조(30)에 부착된 모든 장치에 의하여 수신되고 2개의 S/88 클럭 사이클은 버스(30) 사이클마다 규정된다. 이러한 시스템 클럭(38)은 버스상의 동기적 통신을 보장하고 시스템 클럭에 근거한 내부 클럭 주파수원을 개발하기 위하여 개별 처리기/제어기에 의하여 이용될 수도 있다. S/370 하드웨어는 S/370 클럭 칩(150)내로의 발진기 입력을 이용하는데, 상기 S/370 클럭 칩(152)은 각각의 다른 S/370 칩(85,151,153,154,155)에기억장치 클럭을 발생시킨다. 이러한 클럭 칩(152)은 작동, 온도, 제조변동 등과 같은 여러가지 파라미터에 근거하여 가변될 수 있다는 고유한 지연을 가진다. 이와 같은 지연 변동은 중복 검사와 구종 논리간의 로크-스텝 동기화를 유지하고 STCI(155)와 버스구조(30)간에 충분한 파이크라이닝(pipelining) 능력을 유지하는데 있어서는 용납되지 않을 수도 있다.
제12도 및 제19c도에 도시된 바와 같이, 양호한 실시예는 중복 클럭 동기화(sync) 논리(158 및 쌍으로된 S/370 처리기 유닛용으로 도시되지 않은 158a)을 이용하여 기판(101)의 처리기 검사 및 구동측 양자가 리세트(즉, 파워-온-리세트 등)후에, 로크-스텝으로 가동하고 동시에, S/370 처리기 사이클을 S/88 버스(30) 사이클과 동기화시킨다. S/88 클럭(38)으로부터의 클럭 신호는 버스구조(30)를 경유하여 sync 논리(158)에 인가되고 S/88-S/370 동기화 및 주 기억장치에 접근하기 위하여는 시스템 버스(30)를 경유하여 STCI(155)에 인가된다.
이러한 동기화는 S/370 클럭 칩(152)으로 희망 S/370 발진기 입력 주파수를 얻기 위하여 우선적으로 S/88 클럭을 배가시키므로서 클럭 sync 논리(158)내에서 이루어진다. 이 경우, 배가되 주파수는 S/88 및 S/370 클럭 시이클의 주파수의 2배이다. 두번쩨로, S/370 사이클의 개시를 나타내는 회선(159)상의 피드백 펄스는 그 자체가 S/88 1/2-사이클 주기와 동일한 S/370 발진기 입력 클럭 주기보다 더 큰 주기 1레지스터 래치 지여의 리딩 및 트레일링 에지(leading trailing edges of a period one register latch delay)를 나타내는 S/88 클럭과 함께 샘플화 된다. 회선(159)상의 샘플화된 S/370 클럭 피드백 펄스가 샘플화된 윈도우 외부로 떨어지거나 또는 S/88 클럭의 시작을 중첩하는 리세트의 경우에는, S/370 발진기 입력이 하나의 S/370 사이클에 대하여는 부정된다. 상기는 현행 S/370 사이클을 '확대'시키는데 도움이 되기에 양호한 실시예에 있어서는, 그다음 S/370 클럭 피드백 펄스(회선 159상의) 샘플링이 희망 윈도우내에 떨어지도록 보장할 것이다. 제32도에 보다 상세히 도시되어 있는 모든 비교기 논리(15, 제8도)는 이 시간중에는 검사 및 구동 하드웨어 양자를 동기화시킬 수 있도록 무시된다.
그러므로, S/370 처리기 사이클은 S/88 클럭 주기의 시작의 S/88 1/2-사이클 주기내에 시작하게 한다. 따라서, 버스구조(30)와 S/370 캐쉬 제어기(153)간의 모든 전송 타이밍은 상기 1/2-사이클에 있어서 최악의 지연이라고 가정한다. 덧붙여, 비교기 논리(15)는 "고장난(broken)" 논리(403 ; 제32도)를 수반하는 S/88 처리기 기판(102)과 동기화시키면서 S/88 클럭에 대해 샘플화된 회선에 의하여서만 공급된다. 그러므로, 검사 및 구동 S/370 하드웨어가 그 각각의 클럭 발생 논리내의 지연 변동으로 인하여 동기화(sync)에서 실제로 약간 벗어날지라도, 양측은 버스구조(30)에 공통인 현행 S/88 클럭(38)에 대해 로크-스템으로 가동될 것이나, S/88 클럭 사이클의 시작후 1/2-사이클 이상으로 결코 가동되지 않는다. 동기화(sync) 논리(158)는 계속적으로 회선(159)상의 S/370 클럭 피드백을 모니터하고 반사이클 주기를 초과하는 어떤한 편류도 보장하지 아니한다. 양호한 실시예에 있어서, 임의의 시스템 리세트 동안 양측을 동기화(sync)시켜려면 최대의 1버스(30) 시이클이 요구되나 ; 한쪽의 S/370 클럭을 '확대'시키는 리세트 외부의 총지연의 임의의 편류는 광범위한 '중단된'상태, 즉 고장을 초래할 것이다.
제12도는 제11도의 배열을 더 상세히 도시한다. S/370 제어 기억장치(171)는 PE85에 연결되어 있는것으로 도시되어 있다. 양호한 실시예에 있어서 제어 기억장치(171)는 PE85내의 프로그램 명령어와 I/O 연산의 수행을 제어하는 마이크로 명령어를 기억하는 16KB의 임의 접근 기억장치로 구성된다. 제어 기억장치(171)에는 주 기억장치 유닛(16)내의 S/370 전용 기억장치(162)의 일부인 내부 목적 구역(inteinal object area ; IOA,187, 제28도)으로부터의 요구 기준(demand basis)상에 로드된 일시적인 마이크로코드를 수용하기 위한 버퍼로서 이용되는 64B블럭(186 ; 제29도)도 포함되어 있다. 제12도에서 PE62의 버스구조(161)는 그 가상 주소 버스(161A)와 데이타 버스(161D)로 분할되어 있는 것으로 도시되어 있다. PE62는 부동 소수점 처리기(172), 캐쉬(173), 본원에서는 ETIO라 언급된 결합 마이크로 코드를 기억하기 위하여 이용되는 마이크로코드 기억장치 유닛(174)를 포함하는 하드웨어와 연관되어 있다. 아래에서 보는 바와 같이, 캐쉬(173)에 기억된 마이크로코드 및 응용 프로그램은 PE62와 BCU 논리(156)를 제어하여 PE85용 I/O 연산을 수행하기 위하여 이용된다. PE62 하드웨어는 주소 변환 매카니즘(address translation mechanism, 175)도 포함한다. 기록 파이프(write pipe 176)는 한 기록 사이클 동안 데이타를 일시적으로 기억하고 상기 데이타를 그다음 사이클 동안 시스템 버스(30)에 응용하여 시스템/88의 작동을 가속화시킨다. 레이드 특허에 기술된 형태의 시스템/88 버스 논리(177)는 일반적으로 전술된 레이드 특허에 기술된 방식으로 변환 유닛(175) 및 기록 파이프(176)를 시스템 버스(30)에 결합시킨다. 이와 유사한 시스템/88 버스 논리 유닛(178)은 기억 장치 제어 인터페이스(155)를 시스템 버스(30)에 결합시킨다.
버퍼(180), 프로그램가능 판독 전용 메모리(PROM, 181) 기억장치(182) 및, 레지스터 세트(183)는 시스템/88 및 시스템/370의 초기화중 사용할 수 있도록 PE62에 결합된다. PROM(181)은 시스템을 전원에서 순서대로 부트(boot)시키는데 필요한 시스템 시험 코드 및 IDCODE를 구비한다. PROM(181)은 S/88용 동기화 코드를 구비한다. 레지스터(1839는 시스템 상태 및 제어 레지스터를 구비한다.
2개의 S/370 칩 세트는 동기화되게 동일한 물리적 기판상에 장착되어 있고 기판 자체 검사를 제공할 수 있게 로크-스텝으로 프로그램을 수행한다. STC 버스(157) 및 채널 0,1 버스는 잠재적 고장에 대해서도 모니터될 것이기에, S/370 처리기는 에러를 또다른 필드 교체가능 유닛으로 전파하지 못한다.
인터페이스(89)의 BCU(156) 및 어댑터(154)는 각 처리기(PE62,PE85)가 다른 처리기를 적당히 제어하게하여 어느 한 운영체제도 시스템을 완전히 제어하지 못하게 한다. 각 처리기의 기능은 각 처리기에서 가동되는 마이크로코드 및 인터페이스(89)에 의해 부분적으로 제어된다.
[처리기 대 처리기 인터페이스(89)]
1. I/O 어댑처(154)
어댑터(154 ; 제13도)는 S/370 처리기(85)를 그 출력 채널(0,1)을 경유하여 BCU(156)에 접속시킨다. 채널은 한쌍의 비동기 2-바이트-광역 데이타 버스(a pair of asynchronous two-byte-wide buses ; 250,251)를 포함한다. 버스(250,251)는 한쌍의 64바이트 버퍼(259,260)를 경유하여 처리기 버스(170)내의 동기 4-바이트-광역 데이타 경로(synchronous four-byte-wide data path)에 결합된다. 데이타는 버스(251)를 경유하여 BCU(156)로부터 어댑터(154 ; 및 S/370 주 기억장치(162))로 전공되고 버스(250)를 거쳐 어댑터(154)로부터 BCU(156)로 전송된다. 어댑터(154)는 이하의 레지스터를 포함한다.
1. 기준 레지스터(110)에는 대기행렬 및 우편함-주소지정(queue and mailbox-addressing)용으로 이용되는기준-주소와 대기행렬 길이를 포함한다.
2. 판독포인터(readpointer ; RPNTR)와 기록포인터(writepoint ; WPNTR) 레지스터(111,112)는 기준 주소로부터 판독 또는 기록을 위하여 각기 접근되어질 그 다음 대기행렬 엔트리로의 오프셋(offset)을 포함한다. 그 값은, 명령/주소가 버스(170)를 경유하여 캐쉬 제어기(153)로 전송될시에, 명령과 함께-버스 전송 레지스터(bus send register ;BSR, 116)내로 로드될 것이다.
3. 상태 레지스터(status register ; IOSR,118)는 모든 PU-BCU 및 BCU-PU 요구, 인바운드 메시지 대기행렬의 상태(status of the inbound message queue) 및 BCU-인터페이스의 상태를 포함한다.
4. 예외 인에이블 레지스터(exception enable register ; ER,119)내의 비트가 1이고 대응 IOSR-비트가 1인 경우에는, PE85에 예외가 출현한다.
5. 제어 단어 레지스터(control word register ; CW, 120)는 일부 IOSR 비트의 세트/리세팅을 제어한다.
6. 주소 검사 경계 레지스터(address check boundary register ; ACBR,121)는 내부 목적 구역(IOA,187)의 시작 페이지 주소를 보유한다.
7. 주소 키 레지스터(address key registers ; ADDR/KEY,122,123ADDR/KEY,122,123장치(162)내의 한 장소에 접근할 수 있도록 주소/데이타 버스(250,251)를 경유하여 BCU(156)에 의하여 로드된다. 이러한 레지스터는 시험 목적용으로 PE85에 의하여 로드될 수 있다.
8. 명령-레지스터(command-register ; CMDO, 1 ; 124,125)는 통상적으로 BCU(156)에 의하여 명령 및 바이트 카운트에 대하여 로드된다. 레지스터는 시험 목적용으로 PE85에 의하여 로드될 수 있다.
어댑터(154)는 PE85와 BCU156간의 인터페이스이다. 논리적으로, 어댑터(154)는 BCU(156)에 이하 서비스를 제공한다.
-S/370 주 기억장치(162)에의 접근
-S/370 기억장치(162)내의 우편함 및 메시지 대기행렬에의 접근
-PE85와 BCU156간의 요구/응답 매카니즘
BCU(156)는 그 IOA 구역(187 ; 제28도)을 포함하여 완전한 기억장치(162)에의 접근을 허용한다. 어댑터(154)는 처리기 버스(170)를 통하여 어댑터(154)로부터의 키, 명령 및 기억장치(162) 주소 데이타를 수신한 후, 캐쉬 제어기(153)에 의하여 키 검사가 행하여지는 동안에, IOA 구역(187)과 유저 구역(187)과 유저 구역(165)간의 주소 경계 검사(ACB 검사)를 수행한다. 기억되어질 데이타의 주소 회선이 캐쉬내에 보유되어 있는 경우에는, 데이타는 캐쉬내에 기억된다. 그렇지 아니하면, 제어기(153)는 데이타를 주 기억장치(153)는 데이타를 주 기억장치(162)로 전송한다. 데이타 인출을 위하여, 동일한 매카니즘이 캐쉬 제어기(153)에 응용된다. PE85와 BCU156간의 I/O 명령 및 메시지 전송은 제28도에 도시된 사전 규정 기억장치(162) 장소(우편함 구역(188) 및 인바운드 메시지 대기 행렬(189))를 통하여 행해진다.
BCU(156)는 16바이트의 우편함 구역(188)으로부터의 I/O 명령을 인출한다. 우편함 구역에의 접근용 주소는 다음과 같이 계산한다. 기준주소+메시지 대기 행렬 길이+우편함내 오프셋 최초의 2개의 용어가 어댑터(154)의 기준 레지스터(110)에 의하여 공급되고, 마지막 용어가 BCU(156)에 의하여 공급된다. 대기행렬 길이는 기준 레지스터(110)내의 2개 비트에 의하여 1, 2, 4 또는 8KB(즉, 64 내지 512 엔트리)로 세트된다. 상기 세트의 기준은 기준 레지스터(110)내에 버퍼 크기의 2배의 경계(즉, 각기 2 내지 16KB)로 세트된다.
인바운드 메시지 대기행렬(189)은 BCU(154)를 통하여 수신된 모든 메시지를 연대 순으로 기억한다. 각 엔트리는 길이가 16바이트이다.
레지스터(11,112)내의 판독 포인터(RPNTR) 및 기록포인터(WPNTR)는 BCU(156)에 의하여 대기행렬(189)로부터의 엔트리를 판독하고 대개행렬(189)내로 엔트리를 기록하기 위하여 이용된다. PE85는 감지 작동에 의하여 판독 포인터에 접근한다. 레지스터(110)내의 기준 주소에다가 WPNTR를 더한 것이 기록되어질 그 다음 대기행렬 엔트리를 가르키고 베이스 주소에다가 RPNTR를 더한 것이 판독되어질 그 다음 대기 행렬 엔트리를 가르킨다.
이러한 포인터는 각 대기행렬 작동 후 갱신된다.
WPNTR +16=기록후 WPNTR
RPNTR+16=판독후 RPNTR
상기 포인터를 비교함으로써 다음의 조건이 초래된다
RPNTR=WPNTR 대기행렬이 비어있음
RPNTR=WPNTR+16 대기행렬이 곽차있음 ;
BCU(156)가 대기행렬에 기록할 것을 요구하면, 버퍼 불용(buffer not available ; BNA)이 상태 버스를 통하여 BCU로 보내진다.
우편함 구역(188)내에 기억된 데이타의 유효성은 PE85로부터 BCU(156)로 통지되고 그 반대로는 다음의 매카니즘에 의하여 통지된다.
회선(256a ; 제16도)상의 PU-BCU 요구가 PE85에 의하여 제어 마이크로명령어로 세트된다. 상기는 BCU(156)에 대하여 우편함(188)으로부터 명령을 인출하고 이를 수행하도록 어드바이스 한다. 상기 요구는 상기 명령 수행후 BCU에 의하여 리세트된다. 상기 요구의 상태가 PE85에 의하여 감지될 수 있다.
BCU(156)는 PE(85)에 의하여 개시된 명령의 수행 동안에 또는 언제든지 문제가 생긴 때에 요구를 한다. 선택적으로 마스크되지 아닌한 경우에는, PE85에 예외가 생기게 된다.
어댑터(154)는 비동기 어댑터 채널(0,1)의 전송 속도를 동기 처리기 버스(170)에 부합시킨다. 그러므로, BCU(156)는 BCU(156)에 드나드는 데이타 전송을 의해 어댑터(154)내의 64바이트 데이타 버퍼(259,260)에 의하여 지원을 받는다. 어레이는 채널(0,1) 버스와 처리기 버스(170)에 대한 4-바이트 포트(4-byte port)를 갖는다.
동기 레지스터(113,114)는 BCU(156)와 버퍼 어레이(260,259)간에 전송된 데이타를 완회시킨다. 버스 수신 및 송신 레지스터(115 및 116)는 처리기 버스(170)로부터 수신되고 상기 처리기 버스로 전송된 데이타를 기억한다.
기억장치 작동(I/O 데이타 기억장치, 대기행렬 작동)은 명령/바이트 카운트, 보호키 및, 기억장치 주소를 채널(1) 버스를 통하여 어댑터(154)에 송신하는 BCU(156)에 의하여 시작된다. 명령/바이트 카운트가 명령-버스(152 ; 13도)상에서 수신되고 명령 레지스터(125)내에 기억된다. 키 및 주소 데이타는 주소/데이타 버스(251 ; 제13도)를 통하여 BCU(156)로부터 수신되고 키/주소 레지스터(123)내에 기억된다. 어레이 기록 및 판독 주소 포인터가 레지스터(128)내에 그 시작 값으로 세트된다. 버스(251)상의 데이타 전송수(동시에 2바이트)는 바이트 카운트에 의하여 결정된다. 1회의 기억장치 작동에 의하여, 64바이트까지의 데이타가 전송될 수 있다. 기억장치 작동내의 임의의 바이트의 기억장치 주소는 64바이트 주소 경계를 넘지 못할 수도 있다.
명령/주소의 다음에는 버스(251)상의 데이타 싸이클이 뒤따른다. 모든 데이타가 64바이트 버퍼(260)에 수집된다. 최종 데이타가 BCU(156)로부터 수신된 후, 어댑터(154)는 우선적으로 2개의 데이타 버퍼(259,260)에 대한 내부 우선순위 검사(도시되지 않음)을 수행하고, 그 다음에 어댑터(154)가 최고 요구 우선순위를 가지는 처리기 버스970)상의 마스터쉽(도시되지 않음)을 요구한다.
버퍼(259,260)둘다가 동시에 전송을 요구하는 경우에는, 내부 우선순위 제어가 우선적으로 버스(170)를 버퍼(259)에게 주고, 그 다음에 조정 사이클 없이도 버퍼(260)에게 준다. 즉, 판독이 기록에 대해 우선순위를 가진다.
버스 마스터쉽이 주어지면, 명령/바이트 카운트, 보호키 및 개시 주소가 캐쉬 제어기(153)로 전송된다. 명령 전송 사이클 다음에는 데이타 전송 사이클이 뒤따른다.
캐쉬 제어기(153)는 보호 키 검사를 수행한다. 키 위반은 어댑터(154)에 버스(174)상태로 보고될 것이다. 캐쉬 제어기(153) 및 주 기억장치(162)에 의하여 검출된 기타 검사 조건은 ANY-CHECK 상태로서 보고된다. 어댑터(154)에 의하여 검출된 키 위반 및 상태 조건은 BCU(156)에 상태 전송 싸이클로 보내진다.
BCU(156)에 보고될 수 있는 2가지 가능한 어댑터(154) 검출 상태 조건이 있다. 이러한 2가지 검사 조건에 대해서는 기억장치(162)로의 접근이 억제된다.
BCU(156)로부터 수신되는 각 주 기억장치 주소는 ACB 레지스터내에 보관된 주소와 비교하여 접근이 기억장치(162)의 IOA 구역(187)에 대한 것인지 또는 고객구역(165)에 대한 것인지의 여부를 결정한다. BCU(156)로부터의 각 명령과 함께 수신하는 "고객(customer)" 비트는 주 기억장치 접근이 IOA 구역(187)에 대한 것인지 또는 고객구역(165)에 대한 것인지의 여부를 결정하고 부적당한 접근을 검사한다.
이하에 설명된 버퍼 볼용(BNA) 조건은 대기행렬 작동을 위하여서만 보고된다.
판독 작동(I/O 판독, 우편함 판독)은 기억장치 작동과 본질적으로 동일한 방법으로 BCU(156)에 의하여 개시된다. 명령/바이트 카운트, 보호키 및 주소가 BCU(156)로부터 수신되자마자, 어댑터(154) 내부 우선 순위 검사가 수행되고 처리기 버스(170) 마스터쉽이 요구된다. 버스 마스터쉽이 주어지면, 명령/바이트 카운트, 보호키 및 주 기억장치 개시 주소가 캐쉬제어기(153)로 전송되어 판독 사이클을 개시시킨다. 어댑터(154)는 요구된 데이타를 우선적으로 상기 어댑터의 버퍼(259)에 로드하고, 그 다음에 버스(250)를 통하여 BCU 요구를 BCU(156)에 로드한다. 상태는 각 데이타 전송과 함께 보고된다.
기억장치 작동을 위한 상태 조건 및 보고 매카니즘이 판독 작동에 응용된다.
PE85는 버스(170)를 통하여 감지(판독) 및 제어(기록) 작동에 의하여 어댑터(154)내에 있는 대부분의 레지스터에 접근할 수 있다.
감지 작동에 대하여, 명령은 어댑터(154)로 전송되고 레지스터(129)내에 래치된다. 다음 사이클에서는, 감지 멀티플렉서(126)가 상기 명령에 따라 선택되고 상기 명령이 BSR(116)내에 로드되어 뒤따른 버스(170) 사이클에서 유효한 예상 데이타를 갖게한다.
감지되어질 레지스터상의 내부 패리티 에러가 검출되면, 어댑터(154)는 양호한 패리티를 가진 데이타를 역으로 보내나, 키/상태 버스상의 검사 조건을 높인다. 이 기능은 특수한 감지 코드포인트(specific sense codepoint)에 의하여 시험될 수 있다.
제어 작동에 대하여, 버스(170) 명령에 그다음 사이클에 목표 레지스터내에 로드되는 데이타가 뒤따를 것이다.
감지 또는 제어 작동을 위한 명령 사이클내에서 또는 제어 작동을 위한 데이타 사이클내에서 패리티 에러가 버스(179)상에서 검출된 때에는, 어댑터(154)가 클럭을 강제로 중지시킨다.
기준 레지스터(110)는 대기행렬 및 우편함 주소지정용으로 사용된 기준 주소와 대기행렬 길이 코드를 포함한다. 대기행렬은 기준 주소에서 개시되고 우편함 구역은 기준+대기행렬 길이에서 개시된다.
RPNTR 및 WPNTR 레지스터(111,112)는 기준 주소에서 판독 또는 기록용으로 각기 접근되어질 그다음 대기행렬 엔트리까지의 오프셋을 포함한다.
감지된 때에는, 판독 포인터 및 기록 포인터는 어댑터(154)내의 감지 멀티플렉서(126)에 의하여 기준 주소와 연결된다. 그러므로, 감지 작동에 의하여 리턴되는 단어가 접근되어질 그다음 대기행렬 엔트리의 완전한 주소이다.
I/O 상태 레지스터는 이하의 비트(덧붙여 본원에서는 설명되지 않은 다른 비트)를 포함한다.
CHSR<0……24> 및 대응 CHER-비트에서의 임의의 검사 조건이 1인 경우에는, 임의의 Check (비트 0) 1로 세트된다. 임의의 Check(비트 0)가 1로 세트된다. 임의의 Check는 ATTN-REQ를 야기시킨다. MODE-REQ<1>=1인 경우에는, Clock Stop Diana 신호가 활성화 된다.
BCU(156)가 인바운드 메시지를 대기행렬내에 기억시키려 하고 대기행렬이 꽉찼을때, 즉 RPNTR=WPNTR+16인때에는, BNA SENT(비트 6)-버퍼 불용(BNA) 비트는 1이다. 상기 비트는 1을 CW 레지스터(120), 비트 6에 기록함으로써만 리세트될 수 있다.
Queue not empty(비트 7). 상기 비트는 RPNTR이 WPNTR과 같지 아니한 경우에는 1이다. RPNTR=WPNTR이면 상기 비트는 0이다. 상기는 새로운 메시지가 수신되었을 처리기(85)에 통지하기 위하여 이용되는 수단이다.
BCU to PU Request(비트 10 및 14)-채널(0, 1)용 'BCU to PU Request'회선(256c)상의 신호를 통하여 BCU(156)에 의하여 세트된다. PE85에 의한 비트 10 및 14의 리셋팅은 채널(0,1)용 회선(256)상에 BUC to PU 긍정응답을 발생시킨다.
PU to BCU Request(비트 11)-채널(0)용 CW 레지스트(120)의 비트(11)와 채널(1)용 CW레지스트(120)의 비트(15)를 세트시킴으로써 PE85에 의하여 회선(256a)상에 세트된다. PU to BCU 긍정응답 신호에 의하여 회선(256b)상에 리세트된다.
BCU powerloss(비트 13)-상기 비트는 그 전원을 상실하거나 또는 'power on reset'이 발생하는 때에 BUC(156)에 의하여 1로 세트된다. CW레지스터(120)의 'Reset BCU powerloss'비트에 1이 기록되고 BCU가 더이상 전원 손실상태에 있지 아니한 경우에는, 상기는 0으로 리세트된다.
Allow Arbitration(비트 29)-상기 비트는 어댑터 모드 레지스터의 비트(3)가 비활성인 경우에는 채널버스 신호 'Allow Arbitration'을 활성화시킨다.
BCU(156)로부터 수신한 명령/주소의 일부인 고객 접근 비트는 기억장치 접근이 IOA 구역이나 또는 고객 기억 구역에 있는지를 결정한다. 고객 접근 비트가 '0'인 경우에는, 기억장치 접근용 페이지 주소는 IOA 구역(187)내에 있어야 한다.
상기 접근에 대하여는 아무런 키 검사도 행하여지지 아니하므로, 어댑터 하드웨어는 키에 0으로 강제한다.(모든 키 엔트리와 부합시킨다.)
고객 접근 비트가 "1"인 경우에는, 기억장치 접근을 위한 페이지 주소는 고객 기억 영역(165)내에 있어야 한다. 그렇지 아니하면 ACB 검사조건이 접근에 대해 제기된다.
PE85는 메시지 명령을 이용하여 어댑터(154) 레지스터를 판독(감지)하거나 또는 기록(제어)한다.
이러한 명령에 대한 포맷은 다음과 같다.
비트 0-7 CMD : 명령형
8-11 SRC : 요구하는 버스 유닛 주소
12-15 DST : 수신하는 버스 유닛 주소
16-23 MSG : cmd 사이클로 전송되어질 데이타
24-27 REG1 : 제어용 레지스터 번호
28-31 REG2 : 감지용 레지스터 번호
PU-BCU 인터페이스용 DST필드는 X '8'이다. 명령수행용으로 포함된 어떠한 정보도 없기 때문에, 어댑터(154)는 SRC 및 MSG 필드를 해독하지 못할 것이다. 제어 및 감지 작동 동안, Reg 1 및 Reg 2 비트가 어댑터(154)의 레지스터를 각기 규정하여 상기 어댑터에 기록되어질 것이고 상기 어댑터에서 판독되어질 것이다.
2. I/O 어댑터 채널(0) 및 채널(1) 버스(제16도)
어댑터 채널(0) 및 어댑터 채널(1)은 I/O 어댑터(154)로부터 버스 제어 유닛(156)으로의 고속 상호접속이다.
채널 0은 주소/데이타 버스(250 ; 비트 0-16, PO, P1) 명령/상태 버스(249 ; 비트 0-3, P) Tag Up(ECU to Buffer) 회선(262a) Tag Down(Buffer to BCu) 회선(262b) Pu to BCU 요구 회선(256a) BCU to PU Acknowledge 회선(256b)을 포함한다.
채널 1은 주소/데이타 버스(251), 명령/상태 버스(252), 태그 엎 및 태그 다운 회선(262c, 262d)을 포함한다.
채널(0)은 S/370 기억장치(162 ; 및 PE85)로부터 BCU(156)로의 데이타 전송을 위해 이용되고 채널(1)은 BCU(156)로부터 기억장치(162 ; 및 PE85)로의 데이타 전송을 위해 이용된다.
채널 버스(249,250,251,252)는 본래 각각 64바이트까지의 데dl타를 기억할 수 있는 제어 논리를 가진 한쌍의 데이타 버퍼인 I/O어댑터(154)에서 시작된다. 상기 버스는 BCU(156)에서 종료된다. I/O 어댑터(154)는 전어 포맷(full-word format ; 32비트)을 가진 S/370 내부 처리기 버스(170)와 반단어 포맷(half word format ; 16비트)을 가진 저속 버스(249-252)간의 속도 부합으로서 이용된다.
각 채널은 2개 부분, 즉, 2-바이트 광역(반단어) 데이타 버스(250,251)와 반 바이트 광역(4비트) 명령/상태 버스(249,252)로 조직되어 있다. 태그 신호는 요구/응답을 거쳐 연산과 특별 신호를 제어하는 수단을 제공한다.
각 채널을 통한 데이타 전송은 언제나 2개의 사이클(2-바이트 버스를 통하여 4바이트를 전송하는)에서 행해진다. 논리적으로 말하면, 모든 데이타 전송은 S/370주 기억장치(162)와 BCU(156)를 포함하는 I/O 서브시스템 간에 행하여진다.
BCU(156)는 마스터이다. 즉, BCU는 PE85가 일단 전송의 필요를 신호로 통지한 때에는, 모든 전송 작동을 개시시킨다.
명령/상태 버스(249,252)는 선택 사이클 동안 전송방향(인출/기억)과 전송되어질 데이타의 양을 규정하기 위하여 이용된다. 주소/데이타 버스(250,251)는 선택 사이클 동안 주기억 주소를 전송시키고 실제 전송 사이클 동안 데이타를 이송시키는데 도움을 준다. 상기 버스는 "우편함" 및 "메시지 대기행렬"이라고 알려진 기억장치(162)내의 특수 구역(188,189)을 표시하기 위하여도 이용된다. 이들 구역은 PE85가 BCU(156)에 대한 특정 정보를 교환하게 한다.
인출 작동(기억장치 162로부터의) 동안, 상기 상태는 명령/상태 버스(249)를 통하여 버스(250)상의 최초 2바이트 데이타와 함께 전송된다. 상기 상태는 임의의 주소 검사, 키 검사등을 표시하거나 또는, 성공적인 작동을 표시하기 위하여 0이 된다.
기억 작동(기억장치 162 내의)이 수행되면, 상태 사이클은 모든 데이타가 주 기억장치(162)로 이송되어진 후에 상태 사이클이 뒤따른다.
제14a 및 b도는각기 인출 및 기억 작동의 서브사이클 1/및 서브사이클 2동안 버스 부분의 논리 사용을 도시한다.
여기에서 aaa…데이타 필드내의 제1(가장 왼쪽) 바이트의 주소
A : 1=주소 검사
B ; 1=비퍼 불가용
C : 1은 고객 기억장치(165)접근, 0은 마이크로코드 구역 접근(IOA,187)
ddd : 기억장치로 드나드는 4바이트 데이타
fff : 바이트에서의 필드 길이-1(0…63) 데시멀(decimal))
kkkk 기억장치 키(0…15 데시멀)
K 1=키검사
00000 : 32바이트 우편함 구역내의 오프셋
pp 우선순위(0…3, 3이 최고임.)
……무관심
/// : 버스가 부동중이다. (규정되지 않음)
in 인바운드(BCU to Buffer)
out 아웃바운드(Buffer to BCU)
다음의 태그 회선은 데이타 전송 작동을 위해 이용된다.
1. 버스 어댑터(154)로부터 BCU(156)로의 PU to Bcu Request회선(256a)은 PE85에 이하여 I/O 작동의 필요를 표시하기 위하여 이용된다. 일단 세트되면, 그 신호는 BCU(156)에 의하여 리세트될 때까지 활동을 한다.
2. BCU(156)에서 어댑터(154)로의 Tag Up회선(262a)은 어댑터(154)로부터 아웃바운드 데이타를 요구하거나 또는 입력 데이타가 버스상에서 유용할지를 표시하는데 이용된다. Tag Up회선(262c)도 동일한 방식으로 기능을 한다.
3. 어댑터(154)에서 BCU(156)로의 Tag Down회선(262b)은 데이타의 일시적 부족이 생긴다면, 그런 상황을 BCU(156)에게 알리기 위하여 이용된다. Tag Down의 하강 에지는 버스상의 아웃바운드 데이타의 가용성을 표시한다. Tag Down회선(262d)도 동일한 방식으로 기능을 한다.
4. BCU(156)에서 어댑터(154)로의 BCU to PU Acknowledge 회선(256b)은 PU to BCU 요구 신호를 리세트하는데 이용된다. I/O 우편함 작동이 완료되었을때 상기 리세트가 수행된다.
PE85가 명령어 흐름에서 Start I/O 명령어(SIO)를 검출한 때에는, PE85는 I/O버스시스템, 즉, BCU(156)에 "PU to BCU Request" 회선(256a)을 활성화시킴으로써 I/O작동의 필요를 경고한다. 이러한 태그 BCU(156)가 기억장치(162)내의 "우편함"(188)을 조사하여 이 작동이 인출 또는 기억인가의 여부, 얼마나 많은 바이트가 전송되어질지 등을 알아낸다. 상기 우편함은 실제로 관련 I/O 작동의 채널 SIO, CUA, CAW 및 명령 단어(CCW)를 포함한다.
기억 작동은 일반적으로 BCU(156)가 데이타를 PE85로 보내는 작업이다. 상기 "데이타"는 선택사이클로 보내지는 명령/키/주소이거나 또는 주기억장치(162)에 기억되어질 "실"I/O데이타이다. 어느 경우에나, 사건의 순서는 동일하다.
15a 내지 c도는 이하의 설명을 위하여, 데이타와 상태 정보가 어댑터(154) 및 BCU(156)내의 32비트 버퍼/레지스터내외에 게이트되는 방법과 상기 정보의 고순서(좌측) 및 저순서(우측) 비트가 어댑터(154)의 18비트채널(0, 1) 버스상에 배치되는 방법을 일반적 형태로 개략적으로 도시한다.
제25도 및 제26도는 BCU(156)와 어댑터(154)간의 데이타 전송용 특정 세트의 신호를 제공한다.
기억 작동 동안 BCU클럭 사이클의 개시(제15a)와 함께 BCU(156)는 제1사이클용 데이타를 버스(251)상에 배치한다. 상기가 주 기억장치 데이타 작동인 경우에0는, 명령, 비이트 카운트, 접근 키 및 주기억 주소의 제1바이트가 명령/상태 버스(252)와 주소/데이타버스(251)상에 각기 배치된다. 상기가 우편함 조사를 위한 선택 사이클인 경우에는, 명령이 고정 장소에 있는 우편함을 표시하기 때문에, 어떤 주기억 주소도 배치되지 않는다. 제1서브사이클은 2서브사이클 시간 동안 버스상에 유요하게 유지된다.
선택 사이클 동안 버스(251)상에 데이타의 배치후 1BCU-클럭 사이클이 경과한 후 BCU(156)가 "Tag Up"신호 회선을 출현시킨다. Tag Up회선(262a)은 어댑터(154)가 제1의 2바이트를 레지스터(113)의 좌측 반내에 기억하게 한다.
그다음의 클럭 사이클의 개시와 함께, BCU(156)는 그다음 서브사이클 동안 데이타(제2의 2바이트)를 어댑터(154)의 레지스터(113)의 다른반에 기억시키기 위해, 주소/데이타 버스(251)상에 배치시킨다. 상기 데이타는 주기억 주소의 나머지이거나 또는 오프셋(쇼트(shot)가 우편함 조사 선택 사이클에 속하는 경우)이다. BCU(156)는 3BCU 클럭 사이클동안 상기 제2의 2바이트를 보유하고 그후에 "Tag Up"신호를 중단시킨다.
인출 작동은 일반적으로 BCU(156)가 주기억 데이타 공간(162), 주 기억장치(162)의 마이크로코드 구역 또는 우편함이나 메시지 대기행렬로부터의 데이타를 요구하는 작동이다. 어느 경우에도, 선택 사이클은 수행하여야 할 작동에 대하여 어댑터(154)의 논리를 지시하기 위하여, 이러한 인출 작동보다 선행하여야 한다. 명령/상태 버스(249)상의 명령이 "인출"명령인 것을 제외하곤, 버스(252)를 이용하는 기억 작동과 유사한 방법으로 명령/키/주소를 버스(249)상에 배치함으로써 선택 사이클이 수행된다.
그다음 클럭 사이클(선택 사이클의 완료후에)의 개시와 함께, BCU(156)는 "Tag Up"신호를 출현시키고 이를 3 BCU클럭 사이클동안 유지한다(제15b도). 태그 엎(Tag Up)은 버퍼로부터의 데이타를 요구한다. 버퍼가 데이타를 이송할 수 있으면, 데이타는 1사이클 후에 유용할 것이다. 연산이 반-동기적(semi-synchronous)이기 때문에, BCU(156)는 제1의 2바이트이 데이타가 2사이클 동안 버스상에 유효하게 유지되고, 그후에, 1사이클의 스위치오버(switch-over time) 타임이 있기에 제2의 2바이트 데이타가 BCU(156)에 게이트될 수 있다.
그러나 "Tag Up"이 출현하는 순간에 어댑터(154)가 아무런 유용데이타도 갖지 못하는 상황이 있다. 이러한 상황은 전형적으로 "초기"데이타 인출시에 즉, 데이타가 새로운 주소로부터 인출될시에 일어나는데, 이때에는 인출 요구가 캐쉬 제어기(153) 및 기억장치 제어기(155)를 통하여 처리되고 그후에 어댑터(154)로 되돌려 보낼때까지 얼마간의 시간이 걸린다. 주 기억장치(162)로의 재시행(retry)도 마찬가지로 일시적 지연을 야기시킬 수도 있다.
어댑터(154)가 데이타를 이송할 수 없을 때마다 (제15c도), 어댑터는 "Tag Up"이 탐지되는 즉시 "Tag Down"회선을 출현시킨다. BCU(156)는 "Tag Up"을 출현시킨 후 늦어도 5사이클이내에 "Tag Down"을 샘플화하여야 한다.
제1데이타 단어(4바이트)가 유용할때까지, 어댑터(154)는 "Tag Down"을 유지한다. 이때 어댑터(154)는 제1의 2바이트를 버스(250)상에 배치하고, "Tag Down"을 중단시킨다. "Tag Down"신호의 하강 에지는 BCU의 논리(253)을 트리거한다.
BCU(156)는 제1의 바이트가 "Tag Down"의 하강(dropping) 다음의 2사이클 동안 유효하고 그 후에는 제2의 2바이트가 유용할 수 있다고 가정한다. 선택 사이클 동안 셋 업(set up)되는 카운트에 따라, 60 바이트까지는 한번에 2바이트씩 추적할 수 있다.
선택 사이클로 명령받은 모든 우편함 데이타가 수신되었을 시에, BCU(156)는 회선(256b)상의 "BCU to PU Acknowledge"신호를 어댑터(154)에 출현시켜서 연산을 시작한 회선(256a)상의 PU to BCU 요구를 리세트시킨다.
PE85와 BCU(156)간의 대부분의 정보 전송은 어댑터(154)의 기준 레지스터(110)에 기억된 기준 주소 및 대기행렬 길이를 이용하여 미리 규정된 기억장소(188,189)를 통하여 행해진다. 인바운드 메시지 대기행렬(189)은 BCU에 의하여 연대순으로 보내진 모든 메시지를 기억한다.
3. 버스 제어 유닛(156)-개요(제16도, 제17도)
버스 제어 유닛(BCU ; 156)은 S/370 I/O 연산을 수행하는데 이용되는 S/370 처리기(85)와 그 연관 S/88 처리기(62)간의 1차 결합 하드웨어이다.
BCU(156)는 S/88 처리기(62)상에서 실행되는 응용 프로그램(EXEC370) 및 마이크로코드(ETIO)와 상호 작용해서 처리기(62)에 인터럽트를 제공하고 처리기(62)를 그 연관 하드웨어로부터 비동기적으로 분리시키고 처리기 (62)를 BCU(156)에 결합시키는 수단을 포함하는데, 상기 모두 S/88운영체제에 투명하다. 상기 투명한 인터럽트 및 분리 기능은 명령과 데이타를 바람직한 S/370 I/O 작동을 수행하도록 S/88처리기(62)에 의하여 유용한 형태로 S/370 I/O명령 및 데이타를 전환시키기 위하여 S/370처리기(85)로부터 S/88처리기(62)로의 S/370 I/O명령 및 데이타의 효율적 전송을 위해 S/370 처리기와 S/88 처리기의 직접 결합을 허용하는데 이용된다.
EXEC 370과 ETIO양자가 마이크로코드이거나 또는 응용프로그램일 수도 있고 기억장치(174)나 또는 캐쉬(173)에 기억될 수도 있음을 알 수 있을 것이다.
BCU(156 ; 제16도)는 버스 제어 유닛 인터페이스 논리 및 레지스터(205), 직접 메모리 접근 제어기(direct memory access controller ; DMAC, 209) 및 지역 기억 장치(210)를 포함한다. 지역 주소 및 데이타 버스(247,223)는 기억장치(210)를 구동기/수신기 회로(217,218)를 통하여 PE62주소, 데이타 버스(161A,161D)에 결합시키고 인터페이스 논리(205)에 결합시킨다. DMAC(209)는 래치(233)를 통하여 주소 버스(247)에 결합되고 구동기/수신기(234)를 통하여 데이타 버스(223)에 결합된다.
양호한 실시예의 DMAC(209)는 이하에 보다 상세히 설명된 68450DMA 제어기이다.
DMAC(209)는 특정 기능으로 각각 지정된 각각의 Request 및 Acknowledge 경로에 의하여 인터페이스 논리(205 ; 제17도)에 결합되는 4개의 채널(0 내지 3)을 구비하는데 ; 채널(0)은 S/370 I/O 명령을 S/370 기억장치(162)내의 우편함 구역(188 ; 제28도)으로부터 지역 기억장치(210 ; MAILBOX READ)로 전송한다. 채널(1)은 S/370 데이타를 기억장치(162)로부터 기억장치(210 ; S/370 I/O WRITE)로 전송한다. 채널(2)은 데이타를 기억장치(210)로부터 기억장치(162 ; S/370 I/O Read)로 전송한다. 채널(3)은 고우선순위 S/88 메시지를 기억장치(210)로부터 기억장치(162 ; Q Message WRITE)의 메시지 대기행렬 구역(189 ; 제28도)으로 전송한다.
버스 어댑터(154)는 2개의 채널(0,1)을 갖는다. 어댑터 채널(0)은 DMAC채널(0, 1)의 MAILBOX READ및 S/370 I/O WRITE기능 (즉, S/370으로부터 BCU 156로의 데이타흐름)을 다룬다. 어댑터 채널(1)은 DMAC 채널(2,3)의 S/370I/O READ Q MESSAGE WRITE 기능(즉, BCU 156로부터 S/370으로의 데이타 흐름)을 다룬다.
4. 직접 메모리 접근 제어기(209)
DMAC(209)는 되도록이면 M 68000 패밀리 레퍼런스 매뉴얼(Family Reference Manual, FR68K/D, Copyright Motorola, inc. 1988)에 기술된 유형(MC 68450)인 것이 바람직하다. 상기 매뉴얼은 그 전체가 본원에 설명되어졌기에 기준에 의해 본원에 통합되었다. DMAC(209)는 데이타의 블럭을 처리기로부터의 간섭을 최소한으로 하면서 신속하고 효율적인 방법으로 이동시킴으로써 모토로라 M68000패밀리 마이크로처리기(Motorola M68000 Family microprocessors ; 본 출원의 M68020 처리기 소자(62)와 같은)의 성능과 구성능력을 보상하도록 설계되어 있다. DMAC(209)는 메모리 대 메모리, 메모리 대 장치, 장치 대 메모리로의 데이타 전송을 수행한다.
DMAC는 프로그램가능 우선순위를 가진 4개의 독립 DMA 채널을 포함하고 24-비트 주소와 16-비트 데이타 버스를 가진 비동기적 M68000 버스 구조를 사용한다. 상기는 명시적 또는 묵시적으로 주소화 될 수 있다.
임의의 시스템내의 209와 같은 DMAC의 주된 목적은 소프트웨어 제어하에서 마이크로처리기가 다를 수 있는 것보다 더 빠른 고속도로 데이타를 전송하는 것이다. 직접 메모리 접근이라는 용어(term direct memory access ; DMA)는 마이크로처리기와 동일한 방법으로 시스템내의 메모리에 접근할 수 있는 주변 장치의 능력을 말하는데 사용된다. 본 출원에서의 메모리는 지역 기억장치(210)이다. DMA 작동은 시스템 처리기가 수행할 필요가 있는 다른 작동과 동시에 발생할 수 있으며, 따라서 전체 시스템 성능을 크게 향상시킨다.
DMAC(209)는 데이타 블럭을 지역 버스(223)의 한계에 가까운 속도로 이동시킨다. 데이타 블럭은 기억장치내의 특정 주소에서 시작되는 바이트, 단어 또는 인-단어 오퍼랜드의 순서로 구성되어 있고 블럭의 길이는 전송 카운트에 의하여 결정된다. 단일 채널 작동은 다수의 데이타 블럭을 기억장치(210)로 또는 기억 장치로부터의 전송을 포함할 수도 있다.
DMAC(209)가 수반되는 임의의 작동에는 동일한 기본단계, 즉 PE(62)에 의하여 채널 초기화, 데이타 전송 및 블럭 종류가 뒤따를 것이다. 초기화 단계에서는 처리기(PE 62)는 제어정보, 주소 포인터 및 전송 카운트와 함께 DMAC의 레지스터를 로드하고 채절을 출발ㅎㄴ다. 전송 단계 동안, DMAC(209)는 오퍼랜드 전송에 대한 요구를 받아들이고 전송을 위한 주소지정(addressing) 및 버스 제어를 제공한다. DMAC가 상태 레지스터(CSR)내의 작동의 상태를 지시할 때, 상기 작동이 완료된 후에 종료 단계가 발생한다. 모든 데이타 전송 작동의 단계동안, DMAC(209)는 다음의 3가지 작동 모드중 한 모드에 있을 것이다. :
1. IDLE-이것은 DMAC(209)가 외부 장치에 의하여 리세트되고 시스템 처리기(62) 또는 주변 장치로부터의 오퍼랜드 전송 요구에 의한 초기화를 대기하고 있는 때라고 가정하는 상태이다.
2. MPU-이것은 DMAC(209)가 시스템(통상적으로 주 시스템 처리기(62))내의 또 다른 버스 마스터에 의하여 선택된 칩 일시에 DMAC가 엔터하는 상태이다. 이 방식에서는 DMAC 내부 레지스터가 기록 또는 판독되어져 채널 작동을 제어하거나 또는 블럭 전송의 상태를 검사한다.
3. DMA-이것은 DMAC(209)가 오퍼랜드 전송을 수행하기 위하여 버스 마스터로서 작용할 때 DMAC가 엔터하는 상태이다.
DMAC는 묵시 주소 또는 명시 주소 데이타 전송을 수행할 수 있다. 명시 전송에 대해서는, 데이타는 소스(source)에서 내부 DMAC 홀딩 레지시터로 전송되고 그후에 그다음 버스 사이클에서 데이타는 홀딩 레지스터로부터 수신지로 이동된다. 묵시 전송은, 데이타가 내부 DMAC 버퍼링 없이도 소스에서 수신지로 직접 전송되기 때문에, 하나의 버스 사이클만이 필요하다.
채널 작동에는 3가지 유형, 즉, (1) 단일 블럭 전송, (2) 계속 작동 및, (3) 연쇄 작동이 있다. 단일 데이타 블럭을 전송할시에, 메모리 주소와 장치 주소 레지스터(MAR, DAR)가 유저에 의하여 초기화되어 전송의 소스와 수신지를 명시하게 된다. 블럭에 전송되는 오퍼랜드의 수를 카운트하기 위하여 메모리 전송 카운트 레지스터도 또한 초기화 된다.
2개의 연쇄 모드(tow chaining modes)는 어레이 연쇄 및 연결형 어레이 연쇄(array chaining and linked array chaining)이다. 어레이 연쇄 모드는 메모리 주소와 전송 카운트로 구성된 기억장치(210)내의 연속 어레이에서 작동을 한다. 기준 주소 레지스터(base address register ; BAR)와 기준 전송 카운트 레지스터(base transfer count register ; BTC)는 어레이의 시작 주소와 어레이 엔트리의 수를 각기 가리키기 위하여 초기화된다. 각 블럭 전송이 완료됨에 따라, 그다음 엔트리가 어레이로부터 인출되고, 베이스 전송 카운트가 결정되고, 다음 배열 엔트리를 가리키기 위하여 기준 주소가 증가된다. 기준 전송 카운트가 0에 도달하면, 방금 인출된 엔트리가 어레이에서 규정된 최종 블럭 전송이다.
연결형 어레이 연쇄 모드는 메모리 어레이의 각 엔트리가 상기 어레이의 그다음 엔트리를 가리키는 연결 주소를 포함한다는 것을 제외하곤, 어레이 연쇄 모드와 유사하다. 상기는 비-연속 메모리 어레이를 허용한다. 최종 엔트리는 0로 세트된 연결 주소를 포함한다. 이 방식에서는, 기준 전송 카운트 레지스터(BTC)가 필요없다. 기준 주소 레지스터(BAR)는 어레이내의 제1엔트리의 주소로 초기화된다. 연결 주소는 각 블럭 전송의 시작에 기준 주소 레지스터를 갱신하기 위하여 이용된다. 이러한 연쇄 모드는 어레이를 순차 순서로 재편성할 필요없이, 어레이 엔트리가 쉽게 이동되거나 또는 삽입될 수 있게 한다. 또한, 어레이내의 엔트리의 수도 DMAC(209)에 명시할 필요가 없다. 이러한 주소지정 모드는 본 출원에서는 이하에 상세히 설명된 방식으로 링크 리스트로부터 작업 대개행렬 블럭(work queue blocks ; WQB)에 자유롭게 접근하기 위하여 DMAC(209)에 의하여 이용된다.
DMAC(209)는 DMA 작동의 완료와 같은 다수의 사건 발생동안에 또는 PCL 회선(57a-d)을 사용하는 장치의 요구로 PE(62)를 중단시킬 것이다. DMAC(209)는 PE(62) 벡터 인터럽트 구조(PE62 vectored interrupt structure)에 사용하기 위한 8개의 온-칩 벡터 레지스터(eight on-chip vector register)에 인터럽트 벡터를 보유한다. 2개의 벡터 레지스터, 즉 정상 인터럽트 벡터(normal interrupt vector ; NIV)와 에러 인터럽트 벡터(error interrupt vector ; EIV)는 각 채널용으로 이용할 수 있다.
각 채널에는 0, 1, 2 또는 3의 우선순위 레벨이 주어진다. 즉, 채널(0, 1, 2, 3)에는 0, 2, 2, 1의 우선순위 레벨이 각기 지정된다(우선순위 레벨이 0이 최고 순위이다).
요구는 장치에 의하여 외부적으로 발생되거나 또는 DMAC(209)의 자동-요구 매카니즘에 의하여 내부적으로 발생된다.
자동-요구는 채널이 항상 요구 계류(REQUEST PENDING)를 가지고 있는 경우에는 최대속도로 발생되거나 또는 DMA 활동에 대해 이용할 수 있는 버스 대역폭의 일부를 선택함으로써 결정되는 제한된 속도로 발생될 수도 있다. 외부 요구는 각 채널과 연관된 요구 신호에 의하여 발생되는 버스트 요구(burst request)이거나 또는 사이클 도용 요구(cycle steal requests)일 수도 있다.
DMAC(209)는 4개의 채널 각각에 대해 17개의 레지스터와 한개의 범용 제어 레지스터(general control register ; GCR)를 포함하는데(제18도 참조), 이러한 레지스터는 모두 소프트웨어 제어하에 있다.
DMAC(209) 레지스터는 소스 및 수선지 주소와 기능코드, 전송 카운트, 오퍼랜드 크기, 장치 포트 크기, 채널 우선순위, 연속 주소 및 전송 카운트 및, 주변 제어 회선의 기능과 같은 데이타 전송에 관한 정보를 포함한다. 하나의 레지스터(CSR)는 채널활동, 주변 장치 입력 및 DMA 전송중 발생하였을 수도 있는 여러가지 사건들에 관한 상태 및 에러 정보도 제공한다. 범용 제어 레지스터(GCR)는 제한 속도 자동 요구(DMA) 작동(limited rate auto-request DMAC operations)에 이용되어질 버스 이용 인수(bus utilization factor)를 선택한다.
입력 및 출력 신호는 기능적으로 이하에 설명된 바와같은 그룹으로 조직된다.(제19a도 참조).
주소/데이타 버스(A8-A23, D0-D15 ; 248 ; 16-비트 버스)는 DMA 작동 모드중 주소 출력을 제공하기 위하여 멀티플렉스된 시간이고 외부 장치로부터의 데이타를 입력시키거나(PE62 기록 또는 DMAC 판독중) 또는 데이타를 외부장치에 출력하기 위한(PE62 판독 또는 DMAC 기록중)양방향 데이타 버스로서 이용된다. 상기는 3-상 버스(three-state bus)이고 멀티플렉스 제어 회선 OWN 및 DDIR에 의하여 제어되는 외부 래치 및 버퍼(233,234)를 사용하여 디멀티플렉스된다.
버스(247)의 하위 주소 버스 회선(A1-A7)은 양방향 3-상 회선이고 DMAC 내부 레지스터를 MPU 모드로 주소지정하고 하위 7개의 주소 출력을 DMA 모드로 제공하는데 이용된다.
기능 코드 회선(FC0-FC2)은 3-상 출력 회선이고, 주소 버스(247)상의 값을 더 한정하여 유저에 의하여 규정될 수도 있는 분리 주소 공간을 제공하기 위하여 DMA 모드로 사용된다. 이러한 회선상에 놓이는 값은 DMA 버스 사이클 동안 사용되는 주소를 제공하는 레지스터에 따라, 내부 기능 코드 레지스터(MFC, DFC, BFC)중 한 레지스터로부터 취한다.
비동기 버스 제어 회선은 이하의 제어신호, 즉, 선택 주소 스트로브, 판독/기록, 상위/하위 데이타 스트로브 및, 데이타 전송 긍정응답 등을 사용하여 비동기 데이타 전송을 제어한다. 이들 신호가 이하 패러그래프에서 설명된다.
SELECT 입력 회선(296)은 MPU 버스 사이클용으로 DMAC(209)를 선택하기 위하여 이용된다. 이것이 가정되면(ASSERTED), A1-A7상의 주소와 데이타 스트로브(또는 8-비트 버스를 사용하는 때에는 A0)는 전송시에 포함되어질 내부 DMAC 레지스터를 선택한다. SELECT는 주소 디코드 신호를 주소 및 데이타 스트로브로 제한하므로로써 발생되어야 한다.
회선(209b)상의 ADDRESS STROBE(AS)는, 유효 주소가 주소 버스(161)상에 존재한다는 것을 표시하기 위하여 DMA 모드로 하나의 출력으로서 이용되는 양방향 신호이다. MPU 또는 IDLE 모드에서는 상기는 DMAC가 어느 때 버스의 제어를 취할 것인가(DMAC가 요구를 했고 버스의 사용이 허용된 경우)를 결정하기 위하여 입력으로서 이용된다.
READ/WRITE는 버스 사이클 동안 데이타 전송의 방향을 표시하기 위하여 이용되는 양방향 신호(도시되지 않음)이다. MPU 모드에서는 고레벨은 DMAC(209)로부터 데이타 버스(223)로의 전송을 저레벨은 데이타 버스로부터 DMAC(209)로의 전송을 표시한다. DMA 모드에서는, 고레벨은 주소시정 메모리(210)로부터 데이타 버스(223)로의 전송을 표시하고 저 레블은 데이타 버스(223)로부터 주소지정 메모리(210)로의 전송을 표시한다.
UPPER AND LOWER DATA STROBE 양방향 회선(도시되지 않음)은 데이타가 언제 버스상에서 유효하고 상기 버스의 어느 부분이 전송(D8-15 또는 DO-7)에 포함되어야 하는가를 표시한다.
DATA TRANSFFR ACKNOWLEDGE(DTACK) 양방향 회선(265)은 비동기 버스 사이클이 종료될 수도 있음을 통지하기 위하여 이용된다. MPU 모드에서는, 이러한 출력은 DMAC(209)가 PE(62)로부터 데이타를 인수하거나 또는 데이타를 PE(62)용 버스상에 데이타를 배치하였음을 표시한다. DMA 모드에서는 상기 입력(265)은 DMAC에 의하여 모니터되어 버스사이클을 어느때 종료시켜야할 것인가를 결정한다. DTACK(265)가 부인되는 한, DMAC는 대기 사이클을 버스 사이클내로 삽입하고 DTACK(265)가 가정되었을시에, 버스 사이클은 종료될 것이다(다만 PCL(257)이 준비신호로서 이용되는 때에는 예외이며, 이 경우에는 2개의 신호는 사이클이 종료되기 전에 가정되어야 한다.
회선 OWN 및 DDIR 상의 멀티플렉스 제어 신호는 외부 멀티플렉스/디멀티플렉스 장치(233,234)를 제어하기 위해 사용되어 버스(248)상의 주소 및 데이타 정보를 분리시키고 특규정 DMA 버스 사이클 동안 데아타 버스(223)의 상반부와 하반부간에 데이타를 전송시킨다. OWN 회선은 DMAC(209)가 버스를 제어하고 있음을 표시하는 출력이다. 상기는 외부 주소 구동기 및 제어 신호 버퍼를 턴온시키는 인에이블 신호로서 이용된다.
BUS REQUEST(BR) 회선(269)은 DMAC에 의하여 지역 버스(223, 247)의 제어를 요구한다고 가정된 출력이다.
BUS GRANT(BG) 회선(268)은 외부저스 아비터(external bus arbiter, 16)에 의해 현행 버스 사이클이 완료되는 즉시 상기 회선이 버스 마스터쉽이라 간주될 수도 있음을 DMAC(209)에게 통보한다고 가정된 입력이다.
회선(258a,258b)상의 2개이 인터럽트 제어신호(IRQ, IACK)는 인터럽트 논리(212)를 통하여 PE(262)와 함께 인터럽트 요구/긍정응답 핸드쉐이크 순서(interrupt request/acknowledge handshake sequence)를 형성한다. 회선(258a)상의 INTERRUPT REQUEST(IRQ)는 DMAC(209)에 의하여 PE(62)로부터 서비스를 요구한다고 가정되는 출력이다. 회선(258b)상의 INTERRUPT ACKNOWLEDGE(IACK)는 논리(216)를 통하여 PE(62)에 의해 DMAC(209)로부터 인터럽트를 수신하였음을 긍정응답 한다고 가정된다. IACK의 가정에 응답하여, DMAC(209)는 PE(62)에 의해 적당한 DMAC 인터럽트 조정기 루틴의 주소를 인출하기 위하여 사용될 버스(223)의 D0-D7 상에 벡터를 배치할 것이다.
장치 제어 회선을 DMAC(209)와 4개의 DMAC 채널에 결합된 장치간에 인터페이스를 수행한다. 4셋트의 3개의 회선이 단일 DMAC 채널과 그 연관주변장치에 지정되고 나머지 회선은 모든 채널이 공유하는 글로벌 신호이다.
회선(263a-d)상의 REQUEST(REQ0 THROUGH REQ3)입력은 논리(253)에 의하여 주기억장치(162)와 기억장치(210)간으 오퍼랜드 전송을 요구하기 한다고 가정된다.
회선(264a-d)상의 ACKNOWLEDGE(ACK0 THROUGH ACK3)출력은 오퍼랜드가 이전의 전송 요구에 응답하여 전송되어지고 있음을 통지한다고 가정된다.
PERIPHERAL CONTROL LINES(PCL0 THROUGH PCL3 ; 257a-d)는 인터페이스 논리(253)와 DMAC(209)간의 포괄적인 양방향 회선인데, 준비, 포기, 재로드, 상태, 인터럽트, 인에이블 클럭 입력 또는 시작 펄스 출력으로서 기능할 수 있게 세트되어 있다.
DATA TRANSFER COMPLETE(DTC) 회선(267)은 임의의 DMAC 버스 사이클 동안 DMAC(209)에 의해 데이타가 성공적으로 전송되었음을 표시한다고 가정된 출력이다.
DONE(DONE). 이 양방향 신호 DMA 버스 사이클 동안 DMAC(209) 또는 주변 장치에 의해 전송되어진 데이타가 블럭의 최종 항목을 표시한다고 가정된다. DMAC는 상기 신호를 버스 사이클 동안 메모리전송 카운트 레지스터가 0로 감소되는 경우를 가정할 것이다.
5. 버스 제어유닛(156)-세부 설명(제19a-c도, 제20도)
(a) 고속데이타 전송용 인터페이스 레지스터
BCU 인터페이스 논리(205 ; 제16도)는 제19a 내지 c도에서는 도해 및 설명을 쉽게 하기 위하여 여러가지 기능 유닛으로 분리되었다. 따라서 논리(205)는 어댑터(154)와 BCU(156)간의 데이타 전송의 속도 및 성능을 향상시키기 위하여, 지역 데이타 버스(223)와 어댑터 채널(0, 1)간에 삽입된 다수의 인터페이스 레지스터를 포함한다. DMAC(209)와 함께 인터페이스(205)의 하드웨어 논리(253)와, 주소 디코드 및 조정논리(216) 및, 주소 스트로브 논리(215)가 BCU(156)의 작동을 제어한다.
인터페이스 레지스터는 채널(0) 판독 상태 레지스터(229)와, 어댑터(154)와 BCU(156)간의 데이타 전송 상태를 보유시키기 위하여 채널(0, 1) 명령 상태 버스(249,252)에 결합된 채널(1)기록 상태 레지스터(230)를 포함한다.
채널(0, 1) 명령(214, 225) 레지스터는 BCU(156)로부터 어댑터(154, S/370)로의 데이타 전송 명령을 일시적으로 기억한다.
채널(0, 1)주소/데이타 레지스터(219, 227)는 S/370 I/O데이타 전송중에 어댑터(154)로의 전송을 위하여 S/370 주소를 보유한다. 레지스터(227)는 또한 각 주소 전송후에 어댑터(154)로의 연속 I/O 데이타 단어(4바이트까지)의 데이타 전송도 보유한다.
채널(0) 판독 버퍼는 BCU 우편함 판독 및 S/370 I/O 기록 작동중에 어댑터(154)로부터 전송된 I/O 데이타를 수신한다.
채널(0,1) BSM 판독/기록 선택 바이트 카운터(220,222) 및 BSM 판독/기록 경계 카운터(221,224)는 BCU(156)에서 어댑터(154)로의 데이타 전송용 바이트 카운트를 보유한다. 양자의 카운터는 S/370 64바이트 주소경계가 데이타 전송에 의하여 크로싱되는 것을 피하기 위하여 각 채널마다 필요하다. 다음에 더 상세히 설명되어질 바와 같이, 카운터(220,222)는 초기에 I/O 연산을 위하여 전송되어질 총 바이트 카운트(4KB까지)를 기억하고 카운트값을 레지스터(214, 225)에 전송하여 최종 블럭(64바이트)전송, 즉 최종 명령/데이타 전송 작동을 위해서만 S/370 시작 주소를 부분적으로 형성하는데 이용된다. 경계 카운터(221,224)는, BCU(156)에 의하여 임의의 단일 명령 데이타 전송 작동에 대한 경계 크로싱이 검출될때마다 또는 바이트 카운트가 64바이트 보다 더 클때, 시작 S/370 주소를 제공(부분적으로)하기 위하여 이용된다.
카운터(220,221,222,224)는 채널(0,1)에 의한 데이타 전송후 적당히 감소된다.
대기행렬 카운터(254)는 어댑터(154)를 통하여 S/370 기억장치에 메시지 전송(16바이트까지)과 유사한 기능을 제공한다.
상기 인터페이스 레지스터를 선택하기 위한 주소는 기억장치(210) 주소 공간(제23c도)내에 있으며, 버스(247)상의 주소를 널리 공지된 방법으로 디코딩 함으로서 선택된다.
어댑터(154)에서 논리(253)로의 PU to BCU 요구 회선(256a)상의 신호는 S/370 우편함 판독 요구가 준비완료되었음을 BCU(156)에 통지한다. 이 신호는 우편함 정보가 지역 기억장치(210)에 기억되었을 때까지는 회선(256b)상의 BCU PU 긍정응답 신호에 의하여 리세트되지 않는다.
태크 엎 및 태그 다운 회선(262a-d)은 어댑터 채널(0, 1)에 의하여 BCU(156)와 어댑터(154)간의 데이타를 스트로빙하기 위하여 이용된다.
핸드쉐이크 신호가 BCU 논리(253)와 DMAC(209)간에 제공된다. BCU 논리는 각 DMAC 채널에 대해 하나씩 회선(263a-d)상의 서비스 요구를 한다. DMAC는 회선(264a-d)상의 긍정응답 신호에 대해 응답한다. 선택(270), 데이타 전송 긍정응답(265), 주변장치 제어 회선(257a-d), 데이타 전송 완료(267)등과 같은 기타 회선은 DMAC(209)와 관련하여 이미 설명되였다.
(b) BCU 분리 및 인터럽트 논리(215,216 ; 제20도, 제21도)
고장-허용 한계 작동 및 단일 시스템 영상 환경과 같은 다수의 S/88 시스템의 특유한 특성을 S/370 시스템에 제공할 수 있는 방법으로 S/370과 S/88 처리기를 밀착 결합시키기 위하여는 2가지 특징이 중요하다는 것을 앞서 전술하였다. 이러한 특징은 본원에서는 S/88 처리기를 그 연관 하드웨어로부터의 "분리" 및 "독특한 인터럽트"매카니즘이라고 언급된다. 2가지 특징은 S/88 운영체제에 대하여 투명한 방식으로 운영된다. 분리 및 인터럽트 논리(215,216)가 BCU(156)에 제공된다.
"분리"논리는 각 명령어 수행 사이클중 S/88 처리기 주소 버스(161A)에 인가되는 가상 주소를 디코드한다. BCU(156)와 그 기억장치(210)에 지정된 시전 선택된 S/88 가상 주소 블럭중 하나가 검출되면, S/88 처리기(62)로부터의 주소 스트로브(AS)신호가 연관 S/88 하드웨어에 보다는 BCU(156)에 게이트된다. 이러한 작용은 기계 사이클이 일어났는지를 S/88 운영체제 및 하드웨어가 알지 못하게 한다. 즉, 이 작용은 S/88에 대하여 투명하다.
그런, S/88 처리기(62)가 이러한 기계 사이클 동안 BCU(156)를 제어할 수 있도록 결합되어 있고, AS 신호 및 사전 선택된 주소가 BCU(156)내의 여러가지 소자들을 선택 및 제어하여 S/370 I/O 작동에 관련된 기능을 수행하는데 이용된다.
S/88 처리기(62)상에서 실행되는 특별한 응용 코드(EXEC 370)는, BCU(156)에 대하여 S/370 처리기와의 통신을 실시하기 위한 작동을 수행하도록 지시하기 위하여, 이러한 사전 선택된 가상 주소를 S/88 버스(161A) 상에 배치함으로써 S/370처리기(85)와의 통신을 개시한다.
DMAC(209)와 BCU(156)의 기타 논리는 요구시 실행에 옮길 상기 특정 응용 코드를 호출하는 특정 레벨(6)로 S/88에 인터럽트를 제공한다. 각 인터럽트의 제시는 S/88 운영체제에 대하여 투명하다.
이들 인터럽트에 응답하여 몇몇 인터럽트 조정기 루틴에 의해 수행된 기능의 유형에 대한 간단한 설명이 I/O 작동이 펌웨어 개요(firmware overview)의 일예에 대하여 이하에 설명될 것이다.
기준 파트너 유닛과 다수의 파트너 유닛을 가진 모듈 둘다에서, DMAC(209)를 통하여 S/88에 대한 S/370 인터럽트를 조정하기 위한 매카니즘 및 S/88 운영체제 변경이 이제 설명될 것이다.
하나의 파트너 유닛이 변경된 이중 S/88 처리기 기판과 이중 지역 기억장치. DMAC, 고객논리를 포함하는 이중 S/370 처리기 기판이 접속되는 샌드위치이다. 이러한 이중 샌드위치 기판의 동일 요소는 고장-검출 이유에 대해 완전 동기(로크-스텝)로 병렬로 작동한다.
이러한 전체 샌드위치는 통상적으로 동일한 파트너 샌트위치를 가지며 파트너는 로크-스텝으로 운영되어 하나의 단일 고장-허용 한계 개체로 보인다. 상기 이중으로 복사된 하드웨어를 제21도에 도시된 바와같은 단일 운영 유닛이하고 간주하면 다음의 설명으로 충분하다.
양호한 실시예에 있어서, 8개까지의 이러한 운영 유닛(295 내지 295-8)은 S/88 운영체제의 단일 복사의 제어하에 주기억장치, I/O 설비 및 전원을 공유하는 단일모듈 격납장치내의 귀속될 수도 있다. 상기 유닛(295) 및 각각의 기타 유닛(295-2, 295-8)이 제7도의 기판(21,23)과 같은 한쌍의 파트너 기판에 대응한다. 현저히, 이러한 다중 CPU 구성에서, S/88 처리기 유닛(62 내지 62-8)은 S/88 작업부하를 공유하는 다중처리기로서 작동한, S/370 유닛(85 내지 85-8)은 독립적으로 분리되어 운영되고 정보 교환도 하지 않는다. 각 S/370 유닛은 그 자체 운영체제의 제어하에 운영되고 격납장치(S/370 또는 S/88)내의 임의의 다른 CPU에 대한 아무런 '긍정응답'도 갖지 않는다.
다중 처리 환경과 S/88 아키텍치로 인하여 정규의 S/88 시스템의 인터럽트 조정은 CPU 유닛(62 내지 62-8)간에 공유된다. 단순한 관찰로도, 각 인터럽트(I/O, 타이머, 프로그램 트랩 등으로부터의)가 공통버스(30)에 의하여 모든 S/88 처리기 유닛에 동시에 제공되며, 하나의 유닛이 그것을 서비스할 책임을 지고 이로 인하여 다른 장치들은 그것을 무시한다. 서비스하는 CPU 유닛이 어느 것이냐에 관계없이 조정기 코드용 운용체제내에는 단일 엔트리 포인트(벡터당)인 단일 벡터 테이블이 있고, 인터럽트의 배치는(단일)운영체제에 의하여 결정 및 조정된다.
다중 S/370 구성에 있어서, 모든 정규의 S/88 인터럽트가 전술한 바와같이 작동하고 ; S/88 인터럽트 조정기 코드는 변경되지 않는다. 소 하드웨어(minor hardware)는 정상 S/88 인터럽트 매카니즘 및 소프트웨어에 대하여 전적으로 투명한 DMAC(209 내지 209-8) 인터럽트 제시를 허용하도록 변환된다.
DMAC 인터럽트는 상기 DMAC, BCU 및 S/370이 부착된 S/88처리기에 의해서만 조정되어, 다수의 S/370 유닛(85 내지 85-8)이 서로 간섭할 수 없어야 한다는 것이 조건이다. 이를 위하여 DMAC, IRQ 회선(258A)은 DMAC(209)가 부착되고 모든 정상 S/88 인터럽트 요구 회선이 그러하듯이, 공통 S/88 버스(30)상에 나타나지 않는 S/88 처리기(62)에 직접 배선되어 있다. S/370 지원을 위하여, S/88로부터 빼앗은 타임슬라이스(TIME-SLICES) 동안 주어진 S/88 처리기(62)가 직접 부착되어 있는 S/370에 지정된다.
주 S/88 벡터 테이블내의 8개의 유저 벡터 위치는 DMAC 용으로 사용되기 위해 예약 되는데 상기 벡터는 S/88 운영체제에 부가되는 8개의 DMAC 인터럽트 조정기의 하드-코드 주소이다. 이러한 8개의 인터럽트 조정기는 모든 DMAC에 의하여 연관 S/370 처리기용으로 제공되는 인터럽트를 처리하기 위하여 모든 S/88 처리기에 의해 이용된다.
각 DMAC(209)는 단일 인터럽트 요구(IRQ) 출력 신호와 8개의 내부 벡터 레지스터(채널당 2개씩, 정규 작동 및 DMAC 검출 에러용으로 각 1개씩)를 갖는다. 초기화 시간(나중에 설명)에서, 이러한 DMAC 벡터 레지스터 값이 전술된 8개의 예약된 주 벡터-테이블 위치에 대응하도록 프로그램된다. 따라서, DMAC는 IRQ를 제공하는 때에는 8개의 조정기 루틴중 하나를 요구할 수도 있다. 상기 조정기는 '숨겨진'지역 기억장치(210)의 주소 범위안에 있는 가상 주소를 제공함으로써, DMAC, BCU 하드웨어, 대기행렬, 링크 리스트 및, 모든 제어 파라미터에 접근한다. 하드웨어 설계는, 공통 가상 주소 분리 '윈도우(window)'가 다중 S/370 유닛간에 공유되어 있다하더라도, 각 S/88 처리기(62)가 그 자체의 기억장치(210)에 접근할 수 있고 다른 것에는 접근할 수 없게 한다. 즉, S/88 가상 주소 공간(007EXXXX)는 각 파트너 유닛(21,23)이 제10도에 도시된 바와같은 그 전용 S/88 물리적 기억장치를 가지고 있다하더라도, 하나의 모듈내의 모든 S/88-S/370 다중처리기에 의하여 이용된다.
다중 S/370 구성에 있어서, 모든 DMAC(209 내지 209-8)는 이들 8개의 벡터 레지스터에 관한 한 동일하게 프로그램되고, 주벡터 테이블내의 8개의 예약된 벡터와 조정기 루틴을 모두 공유한다. 기억장치(210)에 접근할 때마다 분화 및 분리가 일어난다.
분리와 함께 자체 S/88 처리기(62)에 대한 DMAC IRQ의 고정 배선 제시는 S/370 처리기 유닛의 분리 및 통합과 S/88 정상 작동의 불간섭을 보장한다. '상실된 S/88 CPU시간을 제외하고 이러한 인터럽트의 서비싱(servicing)은 S/88 운영체제에 대하여 투명하다.
따라서, 완전환 인터럽트 설계는 다중처리 시스템 작동에 본질적으로 아무런 영향을 주지 않고 다중처리 운영체제에 중대한 변경을 가하지 않고도, 서로 다른 인터럽트 서비싱 철학을 사용하는 다중 처리 시스템 환경으로부터 개개의 처리기 설비를 빼냄으로써 다중 S/370 유닛의 분리 및 보호와 함께 S/370 DMAC인터럽트의 간헐적 '요구 전용'서비싱을 완수한다.
각 DMAC 인터럽트 매카니즘의 보다 상세한 작동을 위하여는 제19a도 및 제20도에 유의하여야 한다. 선택 벡터를 가진 DMAC(209)와 같은 주변 장치가 S/88 처리기(62)에 인터럽트 요구(IRQ)를 제공하는 때에는, 단일 IRQ 회선이 상기 장치에 의하여 활성화 된다. 상기 IRQ 회선은 S/88 처리기 아키택쳐에 의해 규정된 방식으로 엔코딩 회로(293)에 배선되어, 입력 핀(IPL0-IPL2)을 통하여 S/88 처리기(62)에 대한 엔코드된 인터럽트 요구를 규정된 우선순위 레벨(6)로 제공하게 한다.
처리기(62)는, 내부상태 레지스터내에 보관된 우선순위 마스킹 비트를 이용하여, 언제 인터럽트를 서비스 할 수 있는가를 효과적으로 결정한다. 준비완료되면, 처리기(62)는 특정 '인터럽트 긍정응답'(Interrupt Acknowledge, IACK) 사이클을 시작한다.
처리기(62)에 의하여 내부적으로 제어되는 상기 IACK 사이클내에서 서비스를 받고 있는 사이클과 우선 순위 레벨의 유형을 식별하기 위하여 독특한 주소 구성이 주소 버스(161A)상에 제시된다. 상기는 또한 인터럽팅 장치로부터의 벡터수에 대한 요구이기도 하다. 모든 요구 장치는 서비스를 받는 우선 순위 레벨을 자체 레벨과 비교하고 매칭하는 운선순위를 가진 장치는 1-바이트 벡터수를 데이타 버스(161D)에 게이트시켜서 처리기(62)가 판독할 수 있게 한다.
일단 벡터수를 얻으면, 처리기(62)는 감시 스택에 기준 배우 상태를 세이브시키고 그 다음에 사용되어질 예외 벡터의 주소를 발생시킨다. 상기는 상기 장치의 벡터수에 4를 프로덕트하고 그 결과를 예외 벡터의 메모리 주소를 제공하는 내부 벡터 기준 레지스터의 내용에 가산하므로서 행해진다. 상기 벡터는 인터럽트 조정기 코드용의 새로운 프로그램 카운터 값이다.
제1명령어는 이러한 새로운 프로그램 카운터 값을 이용하여 인출되고 정상 명령어 디코딩 및 수행은, 감시 상태에서, 현행 우선순위 레벨에 세트된 처리기(62)상태 레지스터로 재개된다.
IACK 주기의 시작부터 최초의 인터럽트 조정기 명령어의 인출에 이르는 전술한 단계는 하드웨어와 처리기(62)내부 작동의 결합에 의하여 행항지고, 프로그램 명령어 수행을 필요로 하지 않는다. 네트 효과(net effect)는 고 우선순위 인터럽트 조정기를 수행하기 위하여 이전에 실시한(저 우선순위) 프로그램의 투명한 중단방식(pre-emption)이다.
양호한 실시예에 있어서, DMAC(209) 인터럽트는 우선순위 레벨 6에 배선되어 있고, 전적으로 처리기(62) 아키텍쳐에 일치한다. DMAC(209)는 내부적으로 프로그램된 8개의 벡터 수를 가지며, 8개의 분리 조정기 루틴이 이용된다.
디코드 및 조정 논리(216 ; 제19a도)와 AS 제어논리(215)는 S/88 처리기(62)분리 기능을 제공하는 것 이외에, IACK 사이클 동안 이러한 인터럽트 기능을 제어한다.
이들 세부적인 하드웨어 기능을 제19a도의 논리(215,216)의 세부사항을 도시한 제20도와 관련하여 설명되어질 것이다. PE(62)로부터의 주소 스트로브 회선(270)은 제어 논리(215)의 한 입력에 결합된다. 논리(216)는 한쌍의 디코드 회로(280,281)를 갖는다. 회로(280)의 출력(282)이 논리(215)에 결합되고 ; 회로(281)의 출력(283)도 또한 AND 게이트(291) 및 회선(287)을 통하여 논리(215)에 결합된다. 통상적으로 명령어 수행중에 디코드 회로(280,281)는 논리(215)를 통하여 회선(270)상의 주소 스트로브 신호(AS)가 PE(62)와 연관된 S/88 하드웨어에 대한 정규 주소 스트로부인 회선(370a)를 통과하게 된다.
그러나, S/88처리기(62)에 의하여 수행되는 명령어가 "007E"과 동일한 4개의 고순위 16진수 숫자(S/370 I/O작동에 관한 기능을 위하여, PE 62를 그 S/88 하드웨어로부터 분리시키고 PE 62를 BCU 156에 결합시키는 것을 의미한다)를 가진 주소 버스(16A)상에 가상 주소를 인가하는 경우에는, 디코드 논리(280)가 회전(270a) 상의 AS 신호를 차단하기 위하여 회선(282상에 신호를 두고 AS를 회선(270b)를 경유하여 BCU(156)에 송신한다. 디코드 논리(280)는 회선(FC0-2)상의 적당한 기능 코드를 검출할 수 있도록 설계될 수도 있으나, 이것은 단순히 설계 선택에 지나지 않는다. 제22도, 제23도 및 제24도는 AS 신호가 출현되는 시기에 앞서 회선(270a)상의 AS를 블로킹 할 수 있는 버스(161A) 상의 주소 신호와 회선(270)상의 주소 스트로브 간의 지연을 도시한다. 주소 버스에 인가되는 특정 그룹의 S/88 가상 주소와는 다른 수단이 PE(62)를 그 연관 S/88 하드웨어로부터 분리시키고 PE(62)를 BCU(156)에 결합시키는 것을 표시하는 조건을 디코딩하기 위하여 이용될 수도 있음이 이해될 것이다.
회선(282)상의 블로킹 신호는 조정논리(285)에 대하여 회선(190)상에 pE(62)지역 버스 요구 신호를 발생시키기 위하여 OR 회로(284)에 인가된다. 논리(285)는 DMAC(209)가 아직 회선(269)상에 요구를 배치하지 아니한 경우에만 PE(62)에 대한 요구를 허용할 것이다. PE(62) 버스 허용 회선(192)은 아무런 DMAC 요구도 없는 경우에 활성화된다. 회선(191)상의 상기 PE(62) 버스 허용 신호가 논리(253)를 통하여 ENABLE 회선(286a,b ; 제19a도)에 출현되고 BCU(156)로 PE(62) 작동에 대한 준비로 구동기(217)와 구동기/수신기(218)를 통하여 PE(62) 버스(161A,D)를 지역 버스(247,223)에 결합시킨다. PE(62)에 의하여 수행되어진 명령어의 제어하에, 처리기 버스(161A,D)가 지역 버스(247,223)에 결합되는 동안 데이타와 명령이 PE(62)와 BCU 요소 간에 전송될 수 있다. 응용 프로그램(EXEC370)과 ETIO 펌웨어는 이러한 명령어를 포함한다.
DMAC 요구가 회선(269)상에 있는 경우에는, 논리(285)가 DMAC(209)에 회선(190)상의 PE(62) 요구보다 더 앞선 우선순위를 제공하고 ; 회선(268)상의 DMAC 버스 허용 신호는 DMAC(209)에 리턴되며 ; 지역버스(247,223)는 고속 인터페이스 레지스터를 통하여 지역 기억장치(210)와 어댑터 채널(0,1)간에 연결되거나 또는 BCU(156)로 DMAC 작동에 대한 준비로 DMAC(209)와 지역 기억장치(210)간에 연결된다.
그러므로, 논리(215,216)가 S/88처리기(62)를 그 연관 하드웨어(예 : 175, 176,177)로부터 분리시키고 주소(007EXXX)가 논리(280)에 의하여 디코드되는 때에는 S/88 처리기를 BCU(156)에 결합시키는 것을 알수 있다. 이러한 분리 S/88 운영 체제에 대하여 투명하다.
이와 마찬가지로 디코드 논리(281 ; 및 연관 하드웨어는) 회선(270a)으로부터의 주소 스트로브(AS)를 차단하고 PE(62)에 대한 DMAC(209) 인터럽트 시퀸스동안 조정 논리(285)에 대한 지역 버스 요구를 개시한다.
특히, DMAC(209)가 회선(258a)상에 인터럽트 신호를 배치하면, 이 신호는 OR 회로(292a,292)와, S/88 인터럽트 우선순위 논리(293)의 레벨(6) 입력 및, 회선(IPL0-2)을 통하여 PE(62)에 인가된다. PE(62)는 인터럽트 긍정응답 사이클에 대해 응답한다. 선정된 논리 비트(인터럽트 레벨의 값을 포함함)가 출력(FC0-2) 및 주소 버스(161A ; 비트 A1-3, A16-19)상에 배치되는데, 이들 비트는 논리(281)에 의하여 디코드되어 회선(283)상에 추력을 발생시킨다. 이 출력과 회선(258c)상의 인터럽트 신호는 AND 게이트(291)로 하여금 신호를 회선(287)에 인가시키게 함으로써 논리(215)가 AS를 회선(270b)을 경우하여 BCU 논리(253)에 인가하게 한다.
회선(287)상의 신호가 회선(270a)으로부터의 AS를 차단하고 OR 회로(284)를 통하여 회선(190)상의 PE62 버스 요구를 조정 논리에 둔다. 주소 스트로브(AS) 신호가 S/88 하드웨어로 가는 것이 차단되기 때문에, 상기 인터럽트는 S/88 운영체제에 대하여 투명하다.
특정 IACK 비트가 전술된 바와같은 버스(162A)와 FC0-2상에서 수신되면, 디코드 논리(281)는 회선(283)상에 출력 신호를 발생시켜서 회선(270a)상의 주소 스트로브 신호를 차단하고 PE(62) 요구를 OR 회로(284) 및 회선(190)을 통하여 조정논리(285)에 둔다. 회선(269)상에 아무런 DMAC 요구도 없는 경우에는, PE(62) 버스 허용 신호가 AND 게이트(294-1)로의 회선(191)상에 출현시킨다. AND 게이트(294)는 DMAC(209)로의 회선(258b)상에 IACK 신호를 발생시킨다. 이것은 DMAC(209)에 대하여 그 인터럽트 벡터를 제시하도록 경고한다. 그후에 DMAC는 벡터를 지역 버스상에 배치하고 논리(253)로의, 회선(265)상에 'DTACK'를 출현시킨다. 논리(253)는, 회선(270b)상의 AS 신호에 응답하여, 회선(286a,286b)상에 ENABLE 신호를 출현시켜, 처리기 버스(161A, D)를 회로(217,218)를 통하여 지역 버스(284,223)에 결합시킴으로써, DMAC(209)로부터 PE(62)로의 적당한 벡터를 판독하게 한다. DMAC(209)는 그 데이타 버스 (248 ; 제19a도)의 최하위 바이트로부터 구동기 수신기(234)와 지역 데이타 버스(223)의 비트(23-16)를 통하여 S/88 처리기 데이타 버스(161D)로 인터럽트 벡터를 제공한다. DMAC(209)에 의하여 유래된 벡터 수는 S/88 처리기(62)에 의해 이용되어 S/88 인터페이스 마이크로코드(ETIO)내의 8개의 인터럽트 조정기중 하나로 점프 시킨다.
회선(265)상의 DTACK와 논리(253)는 회선(266a,b)상의 DSACK(0, 1)를 활성화시켜서, 한 쌍의 OR 회로(288)를 통하여 PE(62) 사이클을 종료시킨다. 회선(266a,b)은 표준 S/88 DSACK (266c,d)과 논리합되어 PE(62)로의 최종 DSACK 입력(266e,f)을 형성한다.
종합 서비스 설비(제49도)로부터 회선(562, 563)을 통하여 OR 회로(292a)에 인가된 인터럽트 요구는 DMAC 인터럽트 요구에 관하여 전술된 것과 유사한 작동 순서를 밟게 한다. 한쌍의 AND 게이트(294-2, 294-3 ; 제20도)는 회선(258d, e)상에 IACK 신호를 출현시켜, BCU(156)로부터 제49도의 논리(564, 565)의 지역 데이타 버스(223)를 통하여 S/88 처리 유닛(62)으로 적당한 벡터 수의 전송을 개시시킨다.
S/88 레벨(6) 인터럽트 요구가 논리의 소 변화에 의해 DMAC 또는 BCU 인터럽트 요구(양자가 동시에 일어날 때)보다 더 우선순위가 주어질 수 있다는 것이 이해될 것이다. 그러나, 일반적으로, 보조 인터럽트소스로서 전원 고장을 인식할 수 있는 시간이 보다 더 적당하다.
(c) BCU 주소 매핑
지역 기억장치(210 ; 제41c도)는 고정 크기이고 S/88 PE(62)가상 주소 공간내에 맵핑된다. 지역 기억장치(210)는 3가지 목적을 구별하기 위하여 3개의 주소 범위로 분할된다.
1. 링크 리스트를 포함한 지역 데이타 버퍼 및 제어 구조로부터/로의 직접적인 S/88 PE(62) 판독/기록.
2. S/88 PE(62) 판독/기록 명령, BCU(156)로의/부터의 판독상태, 명령이 특정 주소로부터 디코드 된다.
3. S/88 PE(62) 판독/기록 DMAC 레지스터(초기화 및 정상작동에 대해), 레지스터 수는 특정 주소로부터 디코드된다.
지역 기억장치 주소 공간에 포함되는 것은 다음과 같다
Figure kpo00001
지역 주소 디코드 및 버스 조정 유닛(216)은 이러한 지역 기억 공간내의 모든 주소를 검출한다. 동시에, DMAC는 구역(1이상)내의 주소를 제시할 수도 있다. DMAC는 부정 주소 구역(2 또는 3이상)일 수도 있으며 ; 이는 초기화 마이크로코드에 의하여 보증된다.
BCU(156)는 지역 버스상의 모든 주소를 모니터하고 범위(2,3)내의 주소를 가진 작동을 제어 태그를 통하여 지역 기억장치(210) 대신에 적당한 유닛(BCU 또는 DMAC)으로 전송된다. 따라서, 범위(2,3 이상)에 의하여 표시되는 지역 기억장치(210)의 주소 구역은 제시되어 있다 하더라도 그 안에 기억을 위한 목적으로는 결코 이용되지 않는다.
양호한 실시예에 있어서, 제4작동 형태도 또한 지역 주소 디코드 및 버스 조정 유닛(215)에 의하여 조정된다.
S/88 처리기(62)는 S/88 PE(62)로의 DMAC(209) 인터럽트에 긍정 응답하고 전술된 바와 같은 MC68020 아키텍쳐에 따라 각 인터럽트를 완성한다.
이러한 특정 작동은, (구성된 특정)디코드가 지역기억장치(210)의 범위내에 있는 주소가 아닌 차이로, S/88 PE62가 제공하는 주소 및 기능 코드 비트에 의해 검출된다.
그러므로, 지역 버스 조정 유닛(216)은 이러한 경우를 위한 특정 디코더를 갖고 있어 논리가 DMAC에 대하여 그 사전 프로그램된 인터럽트 벡터를 제시하도록 통지하는데 도와준다. 그 이외에는 상기 작동은 DMAC 레지스터를 판독하는 S/88 처리기(62)와 유사하다.
주소 버스(247)은, 고 순위 숫자가 16진수(H) 007E로 디코드될 때, PE(62)에 의하여 선택된다.
나머지 4개의 16 진수 숫자는 다음과 같이 지정된 64kB이 지역 기억장치 주소 범위를 제공한다.
I/O장치(또는 명령) 주소 해독(Address Decode)
DMAC 레지스터 select 007E0000-007E00F(구역 3이상)
BCU Reset 007E0100(구역 2이상)
BSM Wr Sel Up 007E0104(구역 2이상)
BSN Rd Sel Up 007E0108(구역 2이상)
Read BCU Status 007E010C(구역 2이상)
지역 기억장치 선택 007E0200-007EFFFF(구역 1이상)
이하의 데이타는 선택된 DMAC 메모리 전송 카운트 레지스터 및 연속 BSM 판독/기록 선택 명령(subsequent BSM Read/Write Select Command)에 사용되어질 BCU(156)용으로 S/88 처리기에 의하여 지역 데이타 버스(223)상에 배치된다.
31 23 15 7 0
0000 Oqbb bbbb bbbb rspp kkkk CLXX XXXX
비트 31-16(0000 Oqbb bbbb bbbb)바이트 전송 카운트는 DMAC 메모리 전송 카운터내에 세트된다.
26 =고순위 바이트 카운트 비트(최대 바이트 카운트(4096 전용)에 대해 1)
25-16=저순위 바이트 카운트 비트, 비트(26-16)는 실바이트 카운트(db1 단어 전송)의 1/4를 나타낸다.
BCU(156)는 연속 BSM Read/Write Select Up 명령을 위하여 다음과 같이 데이타를 획득한다.
31-27=BCU에 의하여 무시된다.
26 =고순위 바이트 카운트 비트, 상기 비트는 최대 바이트 카운트가 전송되어지고 있을 때에만 1과 동일할 것이다.
26-14=레지스터(220 또는 222) 어댑터로의 전송 바이트 카운트 비트(4096 최대)는 4096 바이트(바이트 카운트 1)를 전송하기 위하여 1111 1111 1111의 카운트를 필요로 한다. 그러므로, BCU(156)는 일단 상기 카운트를 바이트-오프셋 비트(15-14 ; 바이트 블럭의)와 함께 버스 어댑터(154)에 제시하기 전에, 2배단어 경계 비트(doubleword boundary bits ; 26-16)를 감소시킬 것이다.
15-14=저순위 바이트 카운트 비트, 상기 비트는 2배단어 경계로부터 1(버스 어댑터 조건을 위한)을 뺀 바이트 오프셋을 나타낸다. 상기 비트가 2배단어만을 전송하기 때문에, 이들 비트는 DMAC (209) 또는 BCU(156)에 의하여 이용되지 않는다. S/370 BSM(162)로의 제시를 위해 버스 어댑터(154)를 통과할때가지, 상기 비트는 BCU(156)에 래치된다.
13-12=레지스터(219 또는 227)에 대한 어댑터 버스 채널 우선순위
11-08=레지스터(219 또는 227)에 대한 기억장치 키
07=레지스터(219 내지 227)에 대한 Customer/IOA 공간 비트
06=S/88 처리기는 BSM Write Select Up을 위하여 상기 비트를 활성화시켜서 하나의 부가적 지역 기억장치 접근이 요구됨을 표시한다. 상기는 시작 지역 기억장치 주소가 2배단어 경계상에 있지 아니한 때에 일어난다. 모든 BCU 접근이 2배단어 경계에서 시작해야 하기 때문에, 최초의 접근은 지정된 시작 주소에 있는 바이트 뿐 아니라, 2배단어 주소에 포함된 선행 바이트도 포함할 것이다. 상기 선행 바이트는 버려진다.
05-00=예약된다.
DMAC 메로리 전송 카운트 레지스터에 대해서는 S/88 처리기(62)에 의하여 그리고, 연속 Q Select Up 명령에 대해서는 BCU(156)에 의하여 지역 데이타 버스(2230)상에 다음이 배치될 것이다.
0000 0000 0000 bbbb 0000 kkkk cxxx xxxx
바이트 전송 카운트(비트 31-16)가 DMAC 채널(3) 메모리 전송 카운트 레지스터(MTC)내에 세트된다.
BCU(156)는 다음과 같이 연속 Q Select Up 명령용 데이타를 획득한다.
31-20=BCU에 이하여 무시된다.
19-16=레지스터(220 또는 222)에 대한 바이트 카운트(64 바이트 최대)
15-12=BCU에 의하여 무시된다.
11-08=레지스터(227)에 대한 기억장치 키
07=레지스터(227)에 대한 Customer/IOA 공간 비트
06-00=BCU에 의하여 무시된다.
(d) 지역 주소 및 데이타 버스 작동
모든 지역 버스 작동은 버스 요구를 경유하여 S/88 처리기(62) 또는 DMAC(209)로부터 개시된다. S/88 처리기(62) 지역 버스 작동은 다음을 포함한다.
판독/기록 지역 기억장치(32 비트) 판독/기록 DMAC 레지스터(8, 16, 32비트) DMA에 대한 인터럽트 긍정응답 사이클(8비트 인터럽트 벡터 판독)
판독 BCU 상태(32비트 BCU판독)
프로그램된 BCU 리세트
DMAC(209) 지역 버스 작동은 다음을 포함한다.
링크-리스트 로드(16비트)
DMAC 작동(32비트)
지역 기억 주소만을 제공한다. 지역 버스 요구를 제공한다.
인터럽트 4채널(8비트)용으로 PE(62)에 정상 인터럽트 벡터를 제공한다. 불법 DMAC작동 및 기타 DMAC 검출 에러용으로 PE(62)에 에러 인터럽트 벡터를 제공한다.
BCU(156) 지역 버스 작동은 다음을 포함한다. DMA 작동중 판독/기록 데이타(32비트)를 제공한다. DMAC(209)에 대한 데이타 요구를 개시한다. DMAC 회선(PCL0, 257a)을 통하여 판독 우편함 인터럽트 요구를 개시한다.
S/88 처리기(62)가 유효 지역 버스 디코드(007EXXXX) 또는 DMAC 직접 인터럽트 긍정응답 사이클에 의하여 그 주소 버스를 활성화 시킬때마다, BCU(156) 논리는 다음을 수행한다.
S/88 예로의 ADDRESS STROBE 회선을 차단한다.
경쟁논리(216)에 대한 버스 요구를 활성화시킨다.
지역 버스가 사용중이 아닌 때에는, S/88 처리기 주소 버스(161A) 및 데이타 버스(161D)가 구동기 수신기(217,218)를 경유하여 지역 버스(247,223)에 결합된다. 판독, 기록 또는 IACK 작동이 수행된다.
DSACK 회선(266a,b)이 BCU 논리에 의하여 활성화되어 사이클을 폐쇄시킨다.
모든 지역 기억장치 및 BCU 직접 명령을 위한 32 비트 DSACK. 모든 DMAC 레지스터 직접 명령을 위한 16비트 DSACK, IACK 사이클용 16비트 DSACK.
DMAC(209)로부터의 DMAC 버스 요구(BR) 회선(269)은 DMAC 또는 링커-리스트 로드 순서(Link-List load sequence)용으로 활성화 된다. 이것이 발생하면, BCU(156)는 다음과 같이 수행된다.
지역 버스가 사용중이 아닌 때에는, DMAC 주소(DMAC 판독/기록 또는 링크-리스트 로드 동안)는 지역 주소 버스(247)에 게이트 된다. BCU(156) 논리는 데이타(지역 기억장치(210)에 대한 DMAC 기록)를 DMAC 레지스터로부터 지역 데이타 버스(223)로 게이트시킨다. 지역 기억장치(210)는 그 데이타(DMAC 판독 또는 링크-리스트 로드)를 지역 버스(223)에 게이트시킨다. 판독/기록 작동이 수행된다. DTACK 회선은 DMAC(209)에 대한 BCU 논리(253)에 의하여 활성화되어 사이클을 폐쇄시킨다.
(e) 지역 기억장치(210)로/로부터 주소지정하는 S/88 처리기(62) 및 DMAC(209)
S/88 처리기(62)로부터 지역 기억장치(210)로의 주소 비트 지정은 다음과 같다. 저순위 비트(0, 1 ; 및 PE(62)의 SIZ0, 1 ; 도시되지 않음)가 전송되어질 바이트(1-4)의 수 및 버스 정렬을 결정한다. 비트(2-15)는 기억 공간(210)용 주소는 비트이다.
링크-리스트 모드에 있어서, DMAC 주소 비트(A2)는 지역 기억장치(210)에 대한 전순위 주소 비트(2배단어 경계)로서 이용된다. DMAC(209)가 단어 중심(16비트)장치(A1는 그 저순위 주소 비트이다)이고 지역 기억장치(210)가 2배단어(32비트)에 의하여 접근되기 때문에, 인접한 지역 기억 위치로부터 그 내부 링크-리스트내로 들어오는 데이타를 DMAC(209)가 판독할 수 있게 하드웨어내에 어떤 수단을 제공하여야 한다. 상기는 저순위 주소 비트로서 A2를 이용하여, 기억장치(210)내의 동일한 2배단어 위치를 2번 판독함으로써 수행된다. 그후에 비트(A1)는 지역 버스로부터 고/저순위 단어를 선택하는데 이용된다. 지역 기억장치(210)로의 주소 비트 시프트는 DMAC 기능 코드 비트를 통하여 하드웨어내에서 수행된다. DMAC(209)로부터의 "7"을 제외한 임의의 기능 코드는 주소 비트(A 15-A 02)가 지역 기억장치(210)에 제시되게 한다. 이 기법에 의하여 DMAC(209)용 지역 기억장치 링크 리스트 데이타가 기억장치(210)내의 인접 위치내에 저장되게 한다.
지역 기억장치 판독/기록 모드에서는, DMAC 비트(A1)가 지역 기억장치(210)에 대한 저순의 주소 비트로서 이용된다. 판독 데이타는 어댑터 버스 채널(0) 판독 버퍼(226)로부터 기억장치(210)로 공급된다. 데이타는 기억장치(210)로부터 어댑터 버스 채널(1) 기록 버퍼(228)로 기억된다. DMAC가 16 비트 장치이기 때문에 저순위 주소 비트는 단어 경계를 표시하려고 한다. 그러나, 각 DMAC 작동은 2배단어에 접근한다. 단어 접근 주소지정 매카니즘에 2배단어 접근을 하려면, 주소 시프트가 필요하다.
지역 기억장치(210)로의 주소 비트 시프트는 DMAC 기능 코드 비트를 통하여 하드웨어내에서 수행된다.
DMAC(209)로부터의 7의 기능 코드는 주소 비트(A14-A01)가 지역 기억장치(210)에 제시되게 할 것이다. 정확한 작동을 하기 위하여, DMAC는 실 바이트 카운트의 1/4(실 단어 카운트의 1/2)이 로드된다. DMAC 기록 작동에 대해서는 모든 DMAC 작동이 통상적으로 2배단어 접근이라하더라도, DMAC(209)로부터의 UDS 및 LSD 회선(도시되지 않음)을 제어함으로써 단어 기록을 할 수 있는 설비가 있다. UDS 및 LDS 신호는 고순위(D31-D16) 및 저순위 부분(D15-D0) 지역 기억장치(210)의 접근을 야기시킨다.
PE(62) to DMAC(209) 모드에서는, S/88 처리기(PE62)는 DMAC 작동을 위한 내부 제어를 준비하기 위하여 각각의 4개의 DMAC 채널(0-3)에 DMAC 레지스터를 기록할 것이다. PE(62)도 또한 DMAC 레지스터를 판독할 능력을 갖고 있다. DMAC(209)는 단어(16비트) DSACK를 8, 16 또는 32비트의 포트 크기를 허용하는 2개의 회선(DSACK 0,DSACK 1)을 갖는 버스(266)상에 리턴시킨다. 상기는 DMAC(209)가 DMAC 로드를 적절히 수행하기 위하여 필요한 만큼의 사이클을 취할 수 있다.
S/88 처리기 SIZ0, SIZ1(도시되지 않음) 및 A0 회선을 DMAC(209)에 대한 UDS(상위 데이타 스트로브) 및 LDS(하위 데이타 스토로브) 입력(도시되지 않음)을 발생시키는데 이용된다. 이것은 전술된 DMAC 공개에 보다 상세히 설명된 바와같이, DMAC(209)내의 바이트 와이트 레지스터(byte wide registers)에 접근하기 위하여 필요하다. LDS 회선은 NOT SIZ0 또는 SIZ1의 논리적 OR 이나 또는 주소 버스(161D)의 A0로부터 발생된다. UDS 회선은 A0의 논리적 NOT으로부터 발생된다. SIZ0 회선은 단어 와이드 레지스터가 접근되어지고 있을 때(NOT SIZ0), 저순위 바이트에 접근하기 위하여 이용된다. SIZ1 회선은 "잔여 3바이트" S/88 처리기 작동을 통하여 단어 와이드 레지스터가 접근되어지고 있을 때, 저순위 바이트에 접근하기 위하여 이용된다. 이것은 S/88 처리기가 기수 바이트 경계상의 DMAC에 대하여 2배단어(32비트)판독/기록 작동을 수행하고 있을 때에만 일어난다. 비트(A0)는 2-바이트 레지스터내의 그 바이트 또는 저바이트를 선택하기 위하여 이용된다. 비트(A0, A1)는 4-바이트 DMAC 레지스터내의 바이트를 선택하기 위하여 이용된다. PE(62) 주소 버스(161D)의 비트(A6, A7)는 4개의 DMAC 채널중 하나를 선택한다.
(f) BCU BSM RD/WR 바이트 계수기 조작
BCU(156)는 각 어댑터 버스(250,251)를 횡단하여 4KB의 데이타까지 전송할 DMAC(209)로부터의 단일 명령을 수용할 수 있다. 그러나, 각 버스는 하나의 데이타 전송 작동을 위하여 64바이트 블럭만을 다룰수 있다. 프로토콜 조건을 충족시키기 위하여 하드웨어에 이해 복종돼야 하는 다른 어댑터 버스 제한이 있다.
이하는 이를 이행하는 BCU(156) 하드웨어의 세부 설명이다.
BCU(156)는 어댑터 버스 BSM 판독 및 BSM 기록 작동용으로 이용되는 2개의 전어(11비트) 카운터(220,222)와 2개의 경계(4비트) 카운터(221,224)를 포함한다. 64바이트 경계 크로싱이 임의의 단일/명령/데이타 전송 작동용 BCU(156)에 이하여 검출되거나 또는, 바이트 카운트가 64바이트 보다 더 큰 때에, 경계 카운터(221,224)가 버스 어댑터에 대한 시작 주소를 나타내기 위하여 이용된다. 경계 카운터 내용은 최종 블럭 전송을 제외한 모든 블럭 전송을 위하여 버스 어댑터(154)에 제시된다. 전어 카운터 내용은 최종 블록 전송(최종 명령/데이타 전송 작동)만을 위하여 제시된다.
S/88 처리기(62)는 바이트 카운트, 키 및 우선 순위 비트를 레지스터(222 또는 220)에 전송하기 위하여 지역 버스(223, 제45f도)상에 배치한다. r비트(카운트 비트1)는 단어(2바이트) 경계를 나타내고, s비트(카운트 비트0)는 바이트 경계를 나타낸다. 전어 카운터 비트는 2KB-1 2배단어 전송 능력을 나타낸다. 모든 전송이 2배단어에 근거하여 행하여지기 대문에, 비트(2)는 저순위 감소 비트이다. r 및 s비트는 BCU에 의하여 래치되고 최종 64B 전송시 버스 어댑터(154)에 제공된다.
다음의 버스 어댑터 제한과 지역 버스(223)상에서는 2배단어 전송만이 일어난다는 사실에 기인하여, 바이트 및 단어 카운트 비트를 조작할 필요가 있게 된다. 이에 의하여 기수 바이트/단어가 S/370 PE(85)으로 전송될 수 있고, 2배단어 경계상에 있지 아니한 시작 주소에 대해서도 허용될 수 있다. 버스 어댑터(154)에 제공되는 바이트 카운트는 64바이트 보다 더 클 수 없다. 상기 카운트는 바이트 -1로 표시돼야 한다. 어떤 블럭 전송도 64바이트 경계를 크로스하지 못할수도 있다. 바이트 카운트가 64바이트와 같거나 그 이하이고 아무런 경계 크로싱도 없고 시작 주소가 2배단어 경계상에 있지 아니한 때에는, 2배단어 카운트에 대한 별도의 조정이 요구될 수도 있다.
64바이트 경계 크로싱이 있는 때에는, 카운트 값에 관계없이 적어도 2개의 어댑터 버스 명령/데이타 전송 작동이 요구된다. S/88 처리기는 2배단어 카운트수와 전술된 요소의 검토에 근거한 r, s, i 비트 및 총 바이트 전송 카운트를 미리 계산할 것이다. 상기 r 및 s 비트는 최종 명령/데이타 전송 작동까지 버스 어댑터(154)에 제공되지 않을 것이다.
S/88 PE(62)가 카운트를 지역 버스(223 ; 제45f도)상에 배치하면, DMAC(209)는 비트(31-16)를 획득하고 BCU(156)는 비트(26-6)를 획득한다. BCU(156)는 비트(26-14)를 레지스터(220 또는 222)내에서 기억시킨다. 비트(26-16)는 2배단어 계수필드를 나타낸다. 카운터(220 또는 222)는 2배단이 경계(비트 2)상에서 감소된다. S/88 처리기(PE 62)는 BSM Read/Write Select Up Command를 지역 주소 버스(247)상에 배치하고 BSM 시작 주소를 지역 데이타 버스(223)상에 배치한다.
DMAC(209)는 32비트 버스에 접속되는 16비트 장치이다. 상기 DMAC는 모든 채널에서의 DMA 작동중 단어(2바이트)를 전송하도록 프로그램되어 있고 각 내부 메모리 주소 레지스터(MAR)는 전송단 한 단어(2바이트)씩 증가된다. 그러나, 각 전송은 실제로 32비트이기 때문에, 2배단어(4바이트) 증가가 요구된다. 이를 수행하기 위하여. S/88 처리기(PE 62)는 언제나 상기 MAR를 1/2 희망 시작 주소(기억장치 210 내의)에 초기화 한다. 그후에, BCU(156)는 상기 주소를 지역 버스(223)에 제공하기 전에 MAR로부터의 상기 주소를 2배로하므로 상기 1/2 희망 시작 주소 초기화를 보상하여, 기억장치(210)에서 보여진 바와같은 정확한 주소 시퀀싱을 초래한다.
BCU(156)는 다음을 수행한다.
1. 경계 카운터(221 또는 224)는 BSM 주소 레지스터(228 또는 231)가 로드되는 것과 동시에 지역 데이타 버스(223)의 역비트(2-5)로부터 로드된다.
2. 2배단어 경계(비트 2)상의 전어 카운터(220 또는 222)를 감소시킨다.
3. 2배단어 경계(비트 2)상의 BSM 주소 레지스터(228 또는 231)를 증가시킨다.
데이타의 블럭 전송중, 64바이트 이상이 남아있거나 또는 경계 크로싱이 일어나는 때에는, BCU(156)는 경계 카운터(221 또는 224) 및 BCM 주소 레지스터(231 또는 228)비트(0, 1 ; 그역)로부터의 명령/상태 버스(249 또는 252)에 BSM Read/Write 명령 바이트 카운트를 로드시킨다. 그후에, Read/Write 작동이 수행된다. BCU(156)는 2배단어 경계상의 경계 카운트 레지스터(221 또는 224)와 전어 카운트 레지스터(220 또는 222)를 감소시킬 것이며 ; 그외에도, 2배단어 경계상의 BSM 주소 레지스터(231 또는 228)를 증가시킬 것이다. BSM 주소 레지스터(231 또는 228)가 비트(5-2)=0000이고 64-바이트 경계일 때, BCUI(156)가 정지할 것이다. 이때 경계 카운터 비트는 1111 이어야 한다.
데이타의 블럭 전송중, 64바이트 이하가 남아있고 아무런 경계 크로싱도 없을 때에는, BCU(156)는 계수기(220 또는 222)의 비트(5-2) 및 r, s 비트로부터의 어댑터 버스 명령/상태 버스(249)에 BSM Read/Write 명령 바이트 카운트를 로드한다. 그후에, BCU(156)는 Read/Write 작동을 수행하고 그 동안에 2배 단어 경계상의 레지스터(220 또는 222)를 감소시키고 2배단어 경계상의 BSM 주소 레지스터(231 또는 228)를 증가시키며 레지스터(220 또는 222) 비트(12-2)가 모두 1일때 정지한다. 경계 크로싱은 카운트 레지스터(220 또는 222)를 경계 레지스터(221 또는 224)와 비교하여 검출된다. 카운트 레지스터(220,222)값이 경계 레지스터(221,224)값 보다 더 클 때에, 경계 크로싱이 검출되었다.
(g) 핸드쉐이크 시퀸스 BCU(156)/어댑터(165)
제25도의 타이밍 챠트는 2개의 32 비트 단어를 지역 기억장치(210)내의 작업 대기행렬 버퍼로 전송하는 것을 포함하여 BCU(156)와 Read Maibox 명령과 Storage Read 명령을 위한 어댑터(154)간의 핸드쉐이킹 시퀸스를 도시한다.
Maibox Read 또는 Storage Read 명령이 버스(290 ; 제19a)상에 발하여지면, 한 쌍의 신호(Gate Left 및 Gate Right)가 레지스터(214,219 ; 제19b도)내의 명령 및 주소의 좌, 우 부분을 어댑터(154)에 순서대로 게이트시켜서 S/370 기억장치(162)로부터 적당한 데이타를 인출한다. Tag Up 명령은 주기적 Read Data 신호에 의하여 추적되는 회선(262a)상에 출현된다. Tag Down은 인출된 데이타가 버퍼(259)에 기억될 때가지, 회선(262b)상에 출현된다. 그 다음의 주기적 Clock Left 및 Clock Right 신호가 출현되면, 먼저 인출된 단어의 좌, 우 부분이 버스(250)를 통하여 버퍼(226)내로 게이트된다.
Bus Request는 DMAC 채널(0 또는 1)용 회선(263a 또는 b)상에 출현한다. DMAC는 회선(269)을 통하여 지역 버스의 제어를 조정한다. 이 요구가 논리(216)에 의하여 허가된 때에는, Bus Grant가 회선(268)상에 출현된다. DMAC(209)는 회선(264a 또는 264b)상에 긍정응답 신호를 출현시키는데, 이 신호에 의하여 BCU가 버퍼(226)내의 데이타를 지역 데이타 버스(223)에 게이트시키는 동시에, DMAC(209)는 선택된 지역 기억 주소를 지역 주소 버스(247)상에 배치시킨다. 그후에 DMAC(209)는 회선(267)상에 DTC를 발함으로써 논리(253)가 Store Select를 회선(210a)상에 출현시키게 하고 ; 버스(223)상의 데이타가 지역 기억장치(210)내의 적당한 버퍼에 배치된다.
연속한 주기 Tag Up, Clock Left 및 Right, DMAC Request는 연속한 데이타 단어를 버퍼(226)에 게이트시키고 DMAC(209) 이득이 조정 논리(216)를 통하여 지역 버스(247,233)에 접근하고 긍정응답(Acknowledge)과 DTC 신호를 발함에 따라, 이들 단어가 기억장치(210)내의 적당한 버퍼에 전송된다.
제26도는 이와 유사하게 Queue Select Up 및 Storage Write Commands를 위한 핸드쉐이킹 시퀸스를 도시한다. 어느 명령어가 버스(290)상에 발하여지면, Gate Left 및 Right 신호가 명령과 주소(이전에 레지스터(225,227)에 기억된)를 어댑터(154)에 전송한다. 주기적 Data 신호에 뒤따른 Tag Up 명령이 회선(262a)상에 출현된다. DMAC 요구는 회선(263c 또는 d)상에 출현된다. DMAC(209)는 회선(269) 및 논리(216)를 경유하여 지역 버스(247,223)를 조정한다. 상기 요구가 회선(268)을 통하여 허가되면, DMAC(209)는 회선(267)상의 DTC에 뒤따른 회선(264c 또는 d)상에 긍정 응답을 출현시켜서 최초의 데이타 단어를 기억장치(210)에서 레지스터(227)로 전송시킨다. 다음의 주기적 Gate Left 및 Right 신호가 최초의 데이타 단어를 레지스터(227)로부터 어댑터(154)의 버퍼로 전송시킨다.
회선(263c 또는 d)상의 연속한 DMAC 요구 신호와, DMAC 긍정 응답 및 DCT 신호는, DMAC(209)가 지역 버스(247,223)의 제어를 조정함에 따라, 연속한 데이타 단어를 레지스터(227)로 전송한다. 연속한 주기적 Gate Left 및 Right 신호는 각 데이타 단어를 레지스터(227)로부터 버퍼(260)로 전송시킨다.
S/370 처리기 소자(PE 85)
양호한 실시예의 PE 85와 같은 각 처리소자는 S/370 명령어 처리를 위한 기본 설비를 포함하고 다음과 같은 설비를 포함한다.
기본 32비트 데이타 흐름, 32-비트 산술/논리 유닛(32-bit arithmetic/logic unit ; ALU ; 306) ; 32-비트 시프트 유닛(307), 48 레지스터(각 32비트) 데이타 지역 기억장치, 3-포트 주소지정능력(3-fort addressability)을 가진 303, 8 바이트 S/370 명령어 버퍼(309) 및, 타이머 설비(CPU 타이머, 비교기 등 ; 315) PE 85의 양호한 형태의 간소화된 데이타 흐름이 제27도에 도시되었으며 ; 이 분야의 기술에서는 널리 공지된 많은 S/370 처리기 이행이 존재하는 것으로 이해되어진다. 양호한 실시예의 각 처리기 소자(85)의 양호한 형태는 시스템/370 아키텍쳐의 명령어를 수행할 수 있는 처리기이다. 상기 처리기는 처리기 버스(170)를 통해 기억장치(16)의 실 기억 영역(162)으로부터 명령어와 데이타를 인출한다. 이러한 양방향 버스(170)는 PE 85와 S/370 칩 세트(150)의 다른 유닛간의 범용 접속이다. PE 85는 마스터로서 행동하지만, 시스템내에서는 최하위의 우선 순위를 갖는다. 명령어는 하드웨어와 처리기가 마이크로 방식으로 되어 있을 때 수행하는 마이크로 명령어에 의하여 수행된다.
PE 85에서 다음과 같은 4개의 주요 기능 그룹을 갖는다 : -송, 수신 레지스터(300, 301)와 기억장치 오퍼랜드 및 명령어용 주소 레지스터(302)로 구성되는 "버스 그룹", -데이타 지역 기억장치(DLS : 303), A 및 B 오퍼랜드 레지스터(304,305), ALU(306) 및, 시프트 유닛(307)으로 구성되는 "산술/논리 그룹", -제어 기억 주소 레지스터(CSAR ; 308), /307 명령어 버퍼(I-버퍼 ; 309), 연산 레지스터(310), 트랩과 예외 제어를 가진 사이클 카운트(311)로 구성되는 "연산 디코더 그룹", -시간 간격 타이머(315), 일용 클럭, 클럭 비교기 및, CPU 타이머로 구성된 소형이고 비교적 독립적인 유닛(315)인 "타이머 그룹", 이러한 논리적 유닛의 사용을 개략적으로 간단히 설명하면 다음과 같다.
I-버퍼(309)는 가능한 빨리 디코더에 유용한 S/370 명령어를 만든다. 작동 코드를 포함하는 최초의 1/2단어는 연산 레지스터(310)를 통하여 디코더(312)에 공급되어 S/370 I-단계가 시작되게 한다. 제2 및 제3의 1/2 단어(있는 경우에는)는 주소 계산을 위하여 ALU에 공급된다. I-버퍼(309)는 /370 명령어 시퀸스가 개시되기 전에 레지스터(313)내의 강제 연산(forced Operation ; FOP)를 통하여 IPL, LOAD, PSM 또는, PSM 교체(PSW swap)와 같은 작동에 의하여 로드되는 2배단어 레지스터이다. I-버퍼(309)는 명령어가 연산 레지스터(310 ; 및 주소 계산을 위하여는 ALU 306)에 공급됨에 따라 한단어씩 다시 채워지고 각 성공한 분기동안 완전히 재충전된다. 연산 디코더(312)는 수행할 연산을 선택한다. 디코더는 연산 및 마이크로코드 연산 레지스터(310)로부터 공급된다. 모드 비트는 어느 것이 디코드에 대한 제어를 얻는가(강제 연산의 경우에는 어느것도 얻지 못함)를 결정한다.
I-버퍼(309) 내용은 연산 레지스터(310)와 CSAR(308) 내로 동시에 공급됨으로써, 제어 기억장치(171)내의 연산코드 테이블을 주소지정한다. 상기 테이블내의 각 엔트리는 2가지 목적에 이용한다. 즉, 각 엔트리는 마이크로코드 루틴이 존재하는가의 여부와, 이러한 루틴의 최초의 명령어를 주소지정하는가의 여부를 표시한다. 마이크로코드 루틴은 가변 필드길이 명령어와 같은 상당히 복잡한 명령어와 하드웨어에 의하여 직접적으로 수행되지 아니하는 모든 다른 명령어를 수행하기 위하여 존재한다. 마이크로 명령어내의 특정 기능코드가 지원 하드웨어를 활성화시키며, 따라서, 대부분 16 비트인 마이크로 명령어를 이용하여 32비트 데이타 흐름을 제어하는 것이 가능하다.
모든 처리는 다음과 같이 3단계 파이프라인내에서 행하여진다.
-제1단계는 연산 레지스터(310)내의 명령어를 판독한다.
제2단계는 A/B 레지스터(304,305)와 버스 송신 레지스터(300)내의 데이타 및/또는 주소를 판독한다. 연산 레지스터(310)는 그 내용을 제3단계를 제어하는 연산 디코더(312)로 통과시킴으로써 도다른 제1단계를 위하여 풀려난다.
-제3단계는 필요에 따라 ALU, 시프트 또는 버스 작동을 수행한다. DLS 기록 작동도 또한 제3단계에서 수행된다.
유효 처리는 한 그룹을 특별히 ALU에 지정시키고 또 다른 그룹은 버스 그룹에 지정시키는 등 몇개의 그룹(도시되지 않음)으로 디코더를 이행시킴으로 추가로 더 개선된다. A/B 레지스터 입력 및 ALU 출력에 있는 바이트-선택가능 멀티플렉서(도시되지 않음)도 연산을 더 개선시킨다. 따라서 한 사이클 동안만 각각의 파이프라이닝 스테이지를 차지하는 S/370 RR 명령어가 존재한다.
강제 연산 레지스터(FOPs ; 313)는 내부 제어용으로 이용된다. 이러한 레지스터는 트랩과 예외 조건으로부터 입력을 얻고 디코더(312)내로 또 다른 모드를 강제한다. 전형적인 작동은 I-버퍼 로딩, 트랩 레벨로의 전이 및, 예외 루틴의 시작이다.
각 제어 레지스터(310)는 그 자신의 사이클 카운터(311)를 갖는다. 마이크로코드 사이클 카운터는 일부 강제 연산(forced operation ; FOPs)에 의하여 공유된다. 산술 연산과 대부분의 다른 마이크로 명령어는 하나의 사이클만을 필요로 한다. 처리기 버스 연산을 수행하는 대부분의 마이크로 명령어는 2개의 사이클을 필요로 한다.
데이타 지역 기억장치(303)는 2개는 출력 포트이고 하나의 입력 포트인 3개의 포트를 통하여 접근할 수 있는 48 전어(4-바이트) 레지스터를 포함한다. 임의의 레지스터가 레지스터(314)를 통하여 입력용으로 주소지정될 수 있고 동일한 레지스터 또는 2개의 서로 다른 레지스터도 출력용으로 동시에 주소지정될 수 있다. 이러한 3-폴드 주소지정(three-fold addressing)은 오퍼랜드 인출이 처리와 일치하게 한다. 비교기 논리 및 데이타 게이팅(도시되지 않음)으로 인해, 기록 작동용으로 방금 주소지정된 레지스터도 또한 동일한 사이클의 입력으로서 이용될 수도 있다. 이것은 파이프라이닝 행동을 촉진시킨다.
ALU(306)는 되도록이면 2개의 전어 오퍼랜드상에 참 및 역 형태로 AND, OR, XOR 및, ADD 연산을 수행할 수 있는 전어 논리 유닛이다. 십진 가산도 또한 지지된다. 패리티 예보 및 생성과 고속 캐리 전파가 포함된다. 세이브(save), 레지스터(320)는 나눗셈 연산을 지원한다. 상태 논리(321)는 브랜치 결정, 부호 평가 등을 위한 여러가지 조건을 만들어내고 기억한다.
제어 기억 주소 레지스터(CSAR ;308)는 마이크로 명령어와 테이블을 제어 기억장치(171)내에 주소지정한다. CSAR(308)에 대한 입력은 연관 수정자(322)로부터의 갱신된 주소나 또는 성공한 브랜치로부터의 브랜치 목표 주소 또는 테이블 조사용 강제 주소이다. 테이블 조사는 각 S/370 명령어의 시작 및 일부 강제 연산(FPOs)에 대해서는 강제적이다. CSAR(308)는 연산 코드 테이블(제29도)에 접근하기 위한 주소로서 연산 코드 패턴을 얻는다. 이러한 연산 코드 테이블의 출력은 연산 레지스터(310)에서 직접 디코딩할 수도 있는 수행형태를 규정한다. 간접 수행이 필요한 경우에는, 연산 코드 테이블 출력이 CSAR 내로 역제공되어 적당한 마이크로 루틴을 주소지정한다.
기억 주소 레지스터(302)는 24-비트 주소용으로 설계된다. 연관 수정자(323)는 인출된 데이타 블럭의 크기에 따라 주소를 갱신한다. 명령어는 I-버퍼(309)가 비워짐에 따라 한 단어(4바이트)의 증가로 미리 인출된다. 기억 주소 레지스터(302)에 대한 입력은 명령어 오퍼랜드 주소 레지스터(324)로부터 온다. 이것은 더나아가 가속을 이유로 명령어 주소 레지스터와 병렬로 세트된다.
CPU 데이타 흐름은 동시에 3개의 S/370 명령어까지 동시 처리할 수 있게 한다. S/370 명령어는 하드웨어내에서 수행되거나 또는 마이크로 명령어에 의하여 해석된다. 양호한 실시예의 기본 사이클 시간은 80ns이다. 명령어 처리는 하나 또는 그 이상의 80ns 단계로 수행된다. 고속 프로덕트 설비(PE 151)는 이진 연산과 부동 소숫점 프로덕트 연산을 가속시킨다. 제어 기억장치(171)로부터의 마이크로명령어는 너무 복잡하고 너무 비용이 많이 소요되어 전적으로 하드웨어 내에서만 이행되어질 S/370 명령어의 수행을 위해서만 사용된다. 마이크로 명령어는, 필요한 경우에는, 명령어당 60ns의 속도로 공급된다. 마이크로명령어 세트는 S/370 명령어의 해석을 위하여 최적화된다. 마이크로명령어는 1/2 단어 포맷을 가지며 2개의 오퍼랜드를 주소지정할 수 있다.
제어 기억장치(171)내에 포함되지 않은 마이크로코드는 S/370 메모리(162 ; 제28도, 제29도 참조)의 예약 영역인 IOA 구역(187)내에 보유된다(제28도, 제29도 참조). 이러한 마이크로코드는 예외, 빈번히 수행되는 S/370 명령어등을 위한 저성능 민감 코드를 포함한다. 이들 마이크로루틴은 요구에 근거하여 제어 기억장치(171)의 RAM부분의 64B버퍼(188)내로 인출된다. PE(85)가 제어 기억장치(171)내에서 이행되는 것보다 더 큰 주소와 마주치는 때마다, PE(85)는 캐쉬 제어기(153) 및 기억장치 제어가 인터페이스(155)에 대한 64B 블럭 인출 작동을 개시한다. 상기 유닛(151,155)은 IOA(187)로 부터 64B 블럭을 인출하고 그것을 버퍼(186)내에 기억시키게 하는 PE(85)로 보낸다. 마이크로명령어는 수행을 위하여 PE(85)에 의하여 버퍼(186)로부터 인출된다. 모든 마이크로코드는 초기 마이크로코드 로드(initial microcode load ; IML)시간에 메모리내에 로드된다. 시스템은 IML 지워하여 S/88로부터 상기 메모리로의 마이크로코드 로딩을 촉진시킨다.
S/370 명령어 및 유저 데이타는 8KB 고속 캐쉬 기억장치(340 ; 제31도)로부터 인출된다. 데이타는 전어 기준으로 캐쉬(340)로부터 또는 캐쉬내로 판독/기록된다. 캐쉬로부터 또는 캐쉬내로의 전어를 판독/기록하는데 필요한 시간은 120ns이다. 캐쉬(340)는 필요시에, 메모리(162)로 부터의 64바이트 블럭으로 자동으로 다시 채워진다. PE(85)는 처리기 버스 명령을 통하여 캐쉬(340)와 통신한다. PE(85)에 의하여 제공되는 가상 주소는 디렉토리 룩 어사이드 테이블(directory look aside table ; DLAT ; 341)내의 해당 사전-번역 페이지 주소를 조사하는데 이용된다.
PE(85)내의 데이타 지역 기억장치(303)는 16개의 범용 레지스터, 4개의 부동 소숫점 레지스터 및, 24개의 작업 레지스터를 포함한다. 모든 레지스터는 3개의 분리 주소지정가능 포트를 통하여 개별적으로 주소지정될 수 있다. 따라서, 기억장치(303)는 2개의 오퍼랜드를 ALU(306)에 병렬로 공급할 수 있고 동시에 동일한 80ns 사이클 내에서 ALU(306) 또는 캐쉬(340)로부터의 전어를 받아들일 수 있다. 종래의 데이타 지역 기억장치에서와 같은 아무런 직렬화도 없기 때문에, 산술 및 논리 연산은 그 다음 명령어에 대한 준비와 일치되는 방식으로 수행될 수 있다.
CPU는 S/370 명령어용 8-바이트 명령어 버퍼(I-버퍼 ; 309)를 유지한다. 이 버퍼는 성공한 S/370 브랜치 명령어에 의하여 초기화된다. PE(85)는 캐쉬(340)로부터의 S/370 명령어 흐름에서 2배단어 데이타를 인출하고, 이를 I-버퍼(309)내에 로드시킨다. 최초의 전어가 I-버퍼(309)내에 로드된 때, PE(85)는 명령어 수행을 재차 시작한다. I-버퍼 데이타는 S/370 명령어의 수행과 동시에 캐쉬(340)로부터 인출된다. 각 S/370 명령어 수행의 제1사이클이 비-캐쉬 사이클이기 때문에, CPU는 전어를 캐쉬(340)로부터 I-버퍼(309)내로 미리 인출하기 위하여 상기 사이클을 이용한다.
제2비-캐쉬 사이클은 유효 주소 계산동안 색인법을 필요로 하거나 또는 마이크로루틴에 의하여 수행되는 S/370 명령어와 함께 유효하다. 이러한 경우에는, S/370 명령어 인출은 S/370 명령어의 수행과 완전히 일치될수 있다.
양호한 실시예에 있어서, S/370 칩 세트(160)는 송신 칩의 인터럽트 래치를 리세트함으로써 이에 긍정 응답하기 위해 인터럽트를 수신하는 칩을 필요로 하는 인터럽트 매카니즘을 통하여 통신한다.
시스템(예 : BCU 156를 통하여)이 하나 또는 그 이상의 비트를 어댑터(154)의 상태 레지스터(STR, 후에 설명)내에 세트(활성화)시킬 때마다. 상기 시스템은 또한 N-ATTN-REQ 제어회선도 활성화시켜야 한다. 이로 인하여, 현행 S/370 명령어가 수행되어졌을 때, 처리기 소자(85)에 예외가 생겨서 처리기 소자(85)로 하여금 상태 레지스터를 "조사"하게 된다. 그후에, 예외 조정기는 STR 내용을 감지하고 "인터럽트 형태"를 질의하고 적당한 시스템 마이크로루틴을 지명할 것이다. 처리기 소자(85)가 STR 내의 비트를 활성화시킬 때마다, 상기 시스템은 그에 상응하게 반응하여야 한다. 기본적으로, 2가지 형태의 인터럽트 요구가 있다.
1. 시스템 요구(system requests ; SYSREQ S)는 S/370 처리기 소자(85)에 대한 요구(BCU 156를 통하여)이다. 시스템은 인터럽트 형태를 STR 내에 세트시켜서 그 요구를 명시한다. 이에 의하여, 처리기 소자(85)에 예외가 생기고 이 소자는 제어를 예외 조정기로 전송한다. 예외 조정기는 어댑터(154)에 PROC-Bus 명령을 발할 적당한 마이크로루틴을 지명하여, 적당한 인터럽트 형태를 STR 내에 리세트시키고 인터럽트 형태에 의해 규정된 기능을 수행하고, 그 다음 S/370 명령어의 수행을 시작한다.
2. 전송 요구는 상기 시스템이나 또는 PE(85)에 의하여 호출될 수도 있고 상기 시스템 인터페이스상에 전송된 부가의 데이타를 포함할 수도 있다. 이를 위하여, STR 내에는 2개의 인터럽트 래치가 가정되는 데 ; 그중 하나는 처리기 통신 요구(Processor Communication Request ; PCR)이고 다른 하나는 시스템 통신 요구〔System Communication Request ; SCR)이다. PCR는 PE(85)에 의하여 세트되고 상기 시스템에 의하여 리세트되며 ; SCR는 상기 시스템에 의하여 세트되고 PE(85)에 의하여 리세트된다.
고속 데이타 전송 작동을 위하여, 2개의 추가 레지스터의 존재가 가정되는데, 그중 BR 레지스터(115 ; 제13도)는 PE(85)에 의하여 세트되고 상기 시스템에 의하여 판독되며, BS레지스터(116)는 상기 시스템에 의하여 세트되고 , PE(85)에 의하여 판독된다.
다음은 시스템 전송 요구에 대한 PE(85)의 예이다. PE(85)는 시스템에 전송되어질 데이타를 레지스터(115)내에 세트시키고, PCR 래치를 세트시킨다. 시스템은 레지스터(115)로부터의 데이타를 판독하고 PCR 래치를 리세트시킨다.
처리기(85)는 PCR 래치가 리세트되었는지의 여부를 알아내기 위하여 PCR 래치를 감지할 수도 있다. PE(85)는 상기 순서를 반복함으로써 시스템에 추가 데이타를 전송할 수도 있다.
시스템은 다음과 같은 방법으로 PE(85)에 데이타를 전송할 수도 있다. 시스템은 PE(85)에 전송되어질 데이타를 레지스터(116)내에 세트시키고 SCR 래치를 세트시킨다. PE(85)가 인터럽트되며, STR를 감지하며, STR 래치를 알아내며, 레지스터(116)로부터의 데이타를 판독하고, SCR 래치를 리세트시킨다. 시스템은 SCR 래치가 리세트되었는가의 여부를 알아보기 위하여 SCR 래치를 질의할 수도 있다.
3. 시스템은 상기 순서를 반복함으로써 추가 데이타를 PE(85)에 전송할 수도 있다.
데이타도 또한 IDA 기억 구역(187)을 통하여 교환될 수 있다. IDA 구역(187)으로/으로부터의 데이타를 기억/인출할 수 있게 하는 PE(85) 및 어댑터(154)용의 PROCBUS 명령이 있다.
PE(85)는 시스템에 의하여 인출되어질 데이타를 세트시키는 IDA 구역 (187)내에 지정된 한 세트의 버퍼를 갖는다. 이와 유사하게, 상기 시스템은 PB(85)에 의하여 인출되어질 데이타를 세트시키는 IDA 구역(187)내에 지정된 또 다른 버퍼 세트를 갖는다. 인터럽트 형태(IDASYS/IOAPU)는 데이타가 IOA 버퍼내에 세트되었음을 서로에게 표시하기 위하여 이용될 수도 있다.
특정 기계 검사 및 외부 인터럽션 조건은 사용중인 시스템에 의하여 제기된다. 상기 시스템은 SYSREQ 또는 XFERREQ 통신 요구를 발함으로써 인터럽션 조건을 PE에 전달한다. PE(85)는 다음의 기능을 수행한다.
a. 레지스터 STR를 감지하고, 그 내용을 질의한다.
b. 시스템 제공 마이크로루틴을 호출한다. 시스템 인터럽트 요구 조정기는 특정 인터럽트 처리를 수행한다. 적당한 시점에서, 마이크로루틴은 PROCBUS 명령을 어댑터(154)에 발하여 해당 SYSREQ 또는 XFERREQ를 리세트시킨다. 끝으로, 제어를 S/370 마이크로코드에 리턴시킨다.
c. PE(85)는 적당한 S/370 인터럽트 부류를 위한 PSW 교체를 수행하고 NSI기능을 수행한다.
I/O 인터럽션 요구는 I/O 비트를 STR 내에 세트 시킴으로써 상기 시스템에 의하여 발생된다. 현행 S/370 명령어가 완료될 때마다, 예외 조정기가 호출된다. 상기 루틴에서, PE(85)는 I/O 인터럽트 요구를 인식하기 위하여 STR를 판독한다. PE(85)는 STR 비트를 리세트시키고 PE(85) 내부에 인터럽트 요구 래치를 세트시킨다. 이 래치는 현행 PSW의 I/O 마스크로 마스크된다. 마스크가 1이고 더 놓은 우선순위 인터럽트 요구가 계류되어 있지 아니한 경우에는, 예외 조정기는 제어를 시스템 제공 I/O 인터럽트 요구 조정기로 통과시키고 이 조정기는 I/O 인터럽트 요구를 처리한다.
처리기 버스(170 ; 제11도 및 제30도) 및 처리기 버스 명령
처리기 버스(170)는 모든 S/370 칩 세트 소자간의 공통 접속이다. 논리적으로, 아래에 열거된 모든 회선은 상기 버스에 속한다.
1. 처리기 버스 회선(0-31+4 패리티)은 일반적으로한 싸이클내에 주소와 함께 명령어를 전송하고 그 다음에 그 다음 사이클에 연관 데이타를 전송하기 위해 사용된다. 버스의 사용 허가는 버스 어댑터(154)내에 위치한 아비터(arbiter)에 의하여 주어진다. PE(85)는 최하위 우선순위를 갖는다. 허가가 BUS GRANT PE 85를 통하여 주어지면, PE(85)는 상기 그 다음 사이클내에 적당한 버스 회선상에 4개의 항목을 배치한다. 기억장치 접근 작동을 위하여, 상기 명령이 PROC BUS 회선(0-7)상에 놓여지고, 그 주소가 PROC BUS 회선(8-31)상에 놓이고, 접근 키는 Key Status 버스상에 놓이고, 동시에 'N-Command-Valid' 신호가 출현된다.
2. Key/ Status Bus(0-4+패리티)는 2가지 목적, 즉 접근키를 기억장치를 보내고, 상태 보고를 회신받는데 이용된다. S/370 PSW 접근키의 4비트와 함께 PSW 제어모드 비트(BC 또는 EC)와 능동 주소 번역 비트 AND 결과를 나타내는 제5비트가 전송된다.
양호한 연산을 위하여는 리턴된 상태가 0이어야 한다. 비-제로 상태는 대부분의 경우에 있어서 PE(85)에 트랩을 야기시킨다. 주소지정된 버스 유닛내에 제어 래치를 세트시키는 "메시지"형태의 명령에 대해서는 어떤 상태도 기대되지 않는다.
3. N-BUS Busy 회선을 연산이 시작되는 동일한 사이클내에 완료될 수 없을때마다, 통화중 표시를 제공한다. N-BUs Busy는 완료를 위해 1 시이클 이상을 요하는 모든 명령에 대하여 N-CMD-Valid와 동시에 PE(85)에 의하여 활성화된다.
명령의 수행이 2사이클 이상 걸리는 경우에, N-Bus Busy를 활성 레벨로 끌어올리는 것은 주소지정된 버스 유닛의 책임이다. N-Bus Busy는, 또한 주소지정된 버스 유닛이 2사이클 동안 그 다음 명령을 받아들일 수 없는 때에도, 활성 레벨로 끌어올려진다. 여기에는 원칙에 대한 예외가 있다. 즉, PE(85)는 기억 작동 명령을 BSM 어레이 주 기억장치(162)에 발한 경우에는, 3사이클동안 N-Bus BUSY를 활성화시킬 것이다. 일반적으로 N-Bus-Busy는 앞서의 명령의 수행 보다 적어도 1사이클 적은 활성 레벨에 있을 것이다.
4. 메모리 관리 유닛(MMU) BUSY 신호는 캐쉬 제어기(153)에서 발생된다. 상기 신호는 수행하는데 1사이클 이상이 걸리는 모든 기억장치 접근 적동을 위한 상태 및 데이타의 도착을 PE(85)에 표시하는데 이용된다.
인출 작동은 원칙적으로 데이타를 그 다음 사이클(시작되어진 후)또는 그 이후에 이송한다. 데이타 및 상태가 그 다음 싸이클에 이송되면, MMU-Busy 신호는 다운레벨(down level ;0)에서 비활성을 유지한다. 데이타 및 상태가 그 다음 사이클에 이송될 수 없는 경우에는, MMU-Busy가 1이 되고 데이타 및 상태가 실제로 버스상에 놓이는 주기에서는 0으로 리턴된다.
기억 작동동안, PE(85)는 그 다음 사이클에(기억 작동이 개시되어진 후)에 Key Status Bus 상에 있는 상태를 예상한다. 상태가 그 다음 사이클에 이송될 수 있는 경우에는, MMU-Busy는 비활성(0)으로 남아있고 ; 그렇지 않다면, MMU-BuSY는 1이되고 상태가 실제로 이송되는 사이클에 0으로 리턴된다.
5. 회선 MISS IND상의 캐쉬 미스(miss) 표시기는 캐쉬 제어기(153)에 의해 DLAT-미스, 키-미스 또는 주소지정 위반을 PE(85)에 표시하기 위하여 이용된다. 상기 표시는 상태내에서도 유효한 정보의 복사이다. 상기 회선은 상태가 Key Status Bus 상에 제시되는 동일 주기내에만 유효하나, 미스 표시 회선은 몇나노초 빨리 작동된다. 미스 표시는 그 다음 사이클 PE(85)을 통하여 트랩을 강제한다.
6. 회선 Bus-Grant PE85상의 신호는 PE(85)에 대하여 버스 사용을 허가해준다. 상기 신호는 아비터(arbiter)에서 생긴다. 그 결과로, PE(85)는 허가 신호가 활성화되고 N-Bus-Busy가 활성화되지 않은 사이클에 뒤따른 사이클에 희망 연산을 위한 명령과 주소를 버스상에 배치한다.
7. 사용 : 회선 N-ATTN-REQ상의 주의 요구 신호는 어떤 다른 버스 유닛(버스 어댑터(154)와 같은)에서 생겨서 PE(85)에 대해 '감지'작동을 수행할 것을 요구한다. PE(85)는 현재 진행중인 작동(예 : 명령어 수행)이 완료되는 즉시 상기 요구를 인수한다.
8. 회선 N-CMD-VALID상의 명령 유효 신호는 PE(85)에 의해 PROCBUS 회선(0-31)과 Key Status Bus회선(0-4 ; 모든 패리티 회선 포함)상에 비트 패턴이 유효함을 표시하기 위하여 이용된다. 상기 회선은 Bus-Grant-PF85가 활성화되고 N-Bus-Busy가 비활성화 되는 사이클에 뒤이은 사이클에 활성화(다운 레벨)될 수 있다.
9. 회선 ADDR-DECREMENT는 PE85에 의해 시작 주소로부터 아래로 내림차순 위치로 진행(십진 데이터 처리 데이타 전송을 위하여 필요한 바와같은)되는 기억장치 접근 작동을 위하여 이용된다. 상기 신호는 N-COM-Vaild가 활성화되는 동안 주기내에서 활성화될 수 있다.
10. 회선 CMD-CANCEL상의 명령 취소 신호는 PE85에 의해 이미 개시된 기억장치로의 인출 접근을 취소하기 위하여 이용된다. 상기는 PE(85)가 요구된 데이타의 즉시 사용을 금지하는 조건을 검출할시에 N-COM-Vaild가 활성화된 후에 상기 사이클에서 일어날 수도 있다.
양호한 실시예에 있어서, 일반적으로 다음과 같은 널리 공지된 형태의 5개의 PROCBUS 명령 그룹이 있다 ;
CPU-기억장치 : I/O-기억장치 ; MMU 작동 ; 메시지 교환 ; 부동 수소점.
버스(171)의 제어를 요구하는 버스 유닛(PE85), 어댑터 154 또는 캐쉬 제어기(153)은 명령을 버스상에 세트시킨다. CPU-기억장치 및 I/O-기억장치 명령에 대해서도, 상기 버스 유닛은 접근 Key 및 능동 주소 번역비트를 Key Status Bus 상에 세트시킨다. 명령을 완수한 후, 상태는 동일 버스에 의해 요구하는 버스 유닛으로 리턴된다.
어댑터(154)는 CPU-기억장치 명령과 I/O-기억장치 명령을 발하는 반면에, PE(85)는 CPU-기억장치 명령만을 발한다. 이러한 명령 그룹은 다음과 같다.
동작 CPU 메모리 장치 I/O-메모리 명령
(Operation) (CPU Memory Command) (I/O-Memory Command)
1. S/370 주기억 장치
(S/370 Main Storage)
참조(Reference)
a) 인출(EETCH)
캐쉬 히트(Cache Hit) 캐쉬로부터 인출 캐쉬로부터 인출
메모리로부터 캐쉬 회선 배로드(캐스
캐쉬 미스(Cache Miss) 트 아웃(cast out) 포함) 및 캐쉬로
부터 인출
b) 기억(STORE)
캐쉬 히트(Cache Hit) 캐쉬에 기억 캐쉬에 기억
메모리로부터 캐쉬 회선 재로드(캐스
캐쉬 미스(Cache Miss) 메모리에 기억
트 아웃 포함) 및 캐쉬에 기억
2. 내부 목적 구역
(Internal Object Area ; 특정 CPU-메모리 명령은 IOA 기억
IOA) 장치 주소 검사에 접근하게 한다.
참조(Reference)
I/O-기억장치 명령은 S/370 주기억장치 주소의 검사없이도 캐쉬 제어기(153)내에서 수행된다. 이러한 검사는 STC1(155)내에서 수행된다. CPU-기억장치 명령은 수행을 위하여 제어기(153)로 향하고 1바이트 명령 필드와 3바이트 실주소 필드 또는 가주소 필드를 갖는다. 명령 필드 비트는 다음과 같다.
CMD 비트 (CMD Bit) 의미 (Meaning)
0-1=10 CPU-메모리 명령
2=1 인출 동작
2=0 기억 동작
캐쉬 바이패스, 아무런 주소 검사도
3=1
없음
3=0 주소 검사에 의한 캐쉬 접근 :
-S/370 주소 비교
-ACB 검사
4=1 아무런 DLAT 접근도 없음 ; 즉,
-아무런 키-제어 보호 검사 없음
-아무런 참조 및 변경 비트 조정 없
DLAT 접근 ; 즉,
-키-제어 보호 검사
-참조 및 변경 비트 조정
5-7=nnn 바이트 길이 카운트 ;
000=1 바이트
011=2 바이트
010=3 바이트
011=4 바이트
100=8 바이트
101=64 바이트
110=64 바이트 인출 ! BSM으로부터
느리게
111=64 바이트 인출 ! 어댑터로부터
느리게
CPU-기억장치 명령의 예는 다음과 같다.
1. 인출(10111nnn)/기억(10011nnn)실 N바이트, 실주소를 가진 기억장치(162)로/로부터 64 바이트까지 인출 또는 기억하기 위한 것임.
2. 인출(101010nn)/기억(100010nn) 캐쉬 실 N바이트, 실주소를 가진 캐쉬로/로부터 4바이트까지 판독/기록하기 위한 것임.
3. 인출(101011nn)/기억(100011nn) 캐쉬 실 N바이트, 실주소를 가진 IOA로/로부터 4바이트까지 판독/기록하기 위한 것임.
4. 인출(101000nn)/기억(100000nn) 캐쉬 가상 N바이트, 실주소를 가진 캐쉬로/로부터 4바이트까지 판독/기록하기 위한 것임.
I/O 기억장치 명령은 어댑터(154)에 의하여 개시되고 캐쉬 제어기(153)로 향한다. 상기 명령은 데이타 스터링(data strings)을 1-64 바이트로부터 올림차순 주소 순위에 따라 길이로 전송된다. 32비트 명령 포맷은 3개의 저순위 바이트내의 실 바이트 주소를 포함하고 고순위 바이트는 최고 순위 비트 "0"을 포함하며, 그 다음 최고 순위 비트는 인출 또는 기억 작동을 규정하고 나머지 6개의 비트는 데이타 전송의 길이(1-64 바이트)를 규정한다. 데이타 스트링은, 버스상에 위치 정렬이 필요한 최초 및 최종 전송을 제외하곤, 단어 경계상에 전송된다.
MMU명령은 캐쉬 제어기(153)와 DLAT, ACB, 디렉토리 등을 포함하는 상기 제어기의 레지스터를 제어하는데 이용된다.
메시지는 명령은 버스(151)에 접속된 버스 유닛간에 메시지를 전송하는데 이용된다.
S/370 기억장치 관리 유닛(81)
1. 캐쉬 제어기(153 ; 제31도)
캐쉬 제어기(제31도)는 캐쉬 기억장치(340) 및 주소지정과 비교 논리(347, 348), 인출 정렬기(343)외에도 고속 주소 번역을 위한 디렉토리 룩 어사이드 테이블(diretory look-aside table ; DLAT, 341)을 포함한다. 제어기(153)는 처리기 버스(170)로부터의 가상 주소 및 기억장치 명령어를 받아들이고, 캐쉬 기억장치(340)를 통하여 요구를 충족시킬 수 없는 때에는, 멀티플렉서(349) 및 STC 버스(157)를 통하여 기억 장치 제어 인터페이스(155 ; 제11도)로 인출 또는 기억 명령을 전송한다.
DLAT(341)는 가상 페이지 주소를 실페이지 주소로 고속 번역한다. 상기 DLAT의 2×32 엔트리는 64개의 사전 번역된 페이지 주소를 보유한다. 상기 DLAT(341)는 2-방식 세트 연관 주소 지정 방안을 사용하여 주소지정된다. 가상 페이지 크기는 되도록이면 4KB이다. DLAT 미스의 경우에, PE(85)는 인터럽트되고 가상 주소 번역은 마이크로프로그램에 의해, 널리 공지된 방식으로 S/370 주기억장치(162)내의 세그먼트 및 페이지 테이블(도시되지 않음)을 이용하여 행해진다. 그후에, DLAT(341)는 기억장치로부터 인출되어 캐쉬내에 배치된 정보의 새로운 가상 및 실 페이지 주소를 반영하기 위하여 갱신된다. 기억장치키의 복사는 S/370(Key Storage)로부터 인출되고 DLAT 엔트리내에 포함된다.
연관 캐쉬 디렉토리(342)를 가진 8KB 캐쉬(340)는 처리기 성능을 크게 향상시키기 위하여 고속 버퍼를 제공한다. 데이타 및 디렉토리 어레이는 4개의 구간(소문자)으로 분배된다. 케쉬내의 각 구간은 256×8B(바이트)로 조직된다. 캐쉬(340)로부터 데이타를 인출하기 위하여, 가상 주소내의 바이트 오프셋은 DLAT(341), 캐쉬 디렉토리(342) 및, 캐쉬(340)를 동시에 주소지정하는데 이용된다. 키 제어-보호 검사는 비교회로(345)에 의해 선택된 DLAT 엔트리에 기억장치키를 이용하여 행해진다. 4×8B 데이타가 캐쉬(340)의 출력(340a)에서 래치 업된다. 요구된 데이타가 캐쉬(340)내에 있는 경우에는, 적당한 바이트를 인출 정렬기(343)내에 게이트 시키기 위하여 앞서의 선택 신호가 이용된다.
기억 연산을 위하여 바이트에 근거한 부분 기억이 수행된다.
캐쉬 미스의 경우에는, 캐쉬 제어기(153)가 자동으로 BSM 명령을 설정하여, 요구된 64B 캐쉬 회선을 버스트 모드로 인출한다. 새로운 캐쉬 회선으로 대치되어질 캐쉬 회선이 변경되면, 그것이 로드되어야 하기 때문에, 새로운 캐쉬 회선이 로드되기 전에, 기억장치(162)에 대한 캐쉬 회선 캐스트-아우트 작동이 개시된다. I/O 데이타는 결코 캐쉬 회선 캐스트-아우트 및 로드 작동을 야기시키지 않을 것이다. 기억장치(162)로부터 인출되어질 I/O 데이타는 주기억장치(162)와 캐쉬 기억장치(340) 양자에서 양 설비에 접근함으로써 찾게될 것이다. 캐쉬 히트가 일어나면, 메모리 연산이 취소되고 캐쉬 기억장치가 데이타를 공급한다. I/O데이타가 캐쉬내에 있지 아니한 경우에는, 상기 데이타가 메모리로부터 직접 인출될 것이나, 어떤 캐쉬 회선은 대체되지 않을 것이다. 기억 장치내에 기억되어질 I/O 데이타는, 주소지정된 회선이 이미 캐쉬내에 있는 경우에는, 캐쉬(340)내에 기억될 것이다. 그렇지 아니한 경우에는, 기억장치(162)내에 직접 기억될 것이다.
4BK키 기억장치(344)는 16MB 메모리용 기억장치 키를 보유한다. 키 기억장치는 4K×8로 조직된 어레이이다. 각 바이트는 하나의 기억장치 키를 보유한다. 각 DLAY 엔트리는 그 4KB-블럭 주소와 연관된 기억장치 키의 복사를 보유한다. 이것은 페이지에 반복하여 접근하는 동안 키 기억장치에의 접근 수를 크게 감소시킨다. 기억장치 키 할당의 변경은 키 기억장치와 캐쉬 기억장치내의 임의의 복사 양자에 영향을 미친다.
캐쉬 제어기(153)에 의해 수신기 회로(355)를 통하여 처리기 버스(170)로부터 수신된 명령, 데이타 및, 주소는 명령, 데이타 및, 주소 레지스터(350, 351, 352)내에 기억된다. 주소 레지스터(347)는 관련 S/370 처리기 소자(PE85)용 유효 주소의 범위를 기억한다. 비교 논리(348)는 수신된 주소의 유효성을 검증한다. 주소 레지스터(347)와 그 연관 비교 논리(348)에 의하여 제공된 S/370 주소 비교 기능은 PE(85)와 I/O버스 어댑터(154) 양자로부터의 주소를 조정한다.
주소 비교 경계(Address Compare Boundary ; ACB) 레지스터(353) 비교 기능은 고객 구역용으로 되어있는 S/370 주기억장치 참조가 IOA 구역을 주소지정하지 못하게 한다.
ABC 레지스터(353)는 S/370 기억장치(162)의 예약된 IOA 구역과 비예약된 구역간의 분할 회선(경계)을 기억한다. S/370 기억장치에 대한 각 접근은 수신된 주소를 ACB 값과 비교하는 비교 논리(354)를 초래한다.
2. STCI(155 ; 제32a도, 제32b도)
(a)개요
기억장치 제어 인터페이스(storage control interface ; STCI, 155)는 버스 논리(178)와 시스템 버스(30 ; 제1도)를 통하여 S/370 칩 세트(150)를 S/88 듀플렉스 고장 허용 한게 기억장치(16,18)에 접속시킨다. 상기 STCI는 명령당 1-64 바이트로부터의 데이타 전송을 규정하는 모든 S/370 처리기 및 I/O 기억/인출 명령을 지원한다. 모든 ECC, 복구, 메모리, 초기화, 구성, 재시행 등은 S/88 처리기(62) 및 기억장치(16,18)에 의하여 조정된다. STCI(155)의 상세한 데이타 흐름이 제32a 및 b도에 도시되었다.
STCI(155), 기억장치 관리 유닛(83)내의 쌍으로 된 STCI(155a, 도시되지 않음) 및, 파트너 유닛(23 ; 제8도) 내의 그 대응 STCI 쌍(도시되지 않음)은 각 STCI내의 논리(408 ; 제32b도)와 같은 조정을 통하여 시스템 버스 구조(30)의 제어를 위해 함께 조정된다. STCI(155)는 제7도에 도시된 바와 같은 모듈(9)의 I/O 제어기 및 기타 다른 CPU(25,27 및 29,31)에 대하여 조정할 뿐 아니라, STCI(155)는 S/370 I/O 기능 또는 종래의 S/88 기능을 위한 버스의 제어를 요구할 수도 있는 그 연관 S/88 처리기(62 ; 및 제8도의 CPU 21,23 내의 처리기쌍 및 파트너 처리기)에 대하여도 조정 되어야 한다.
그런, 그 이외의 경우에는 조정 논리는 일반적으로 처리기 및 I/O 기판의 모듈백패널 슬롯 위치에 근거하여 Reid 특허에서 설명한 논리와 비슷한데, 이 논리가 이제 설명될 것이다. 조정 단계동안 버스 마스터가 될 수 있고 버스 사이클을 개시할 준비가 되어 있는 처리가 모듈(9)의 임의의 유닛이 버스 구조의 사용을 위해 조정된다. 상기 유닛은 버스 사이클 요구(Bus Cycle Request)신호를 가정하고 Bus Cycle Request를 또한 가정하는 고우선순위 유닛에 대해서는 조정 네트워크에 의하여 동시에 검사함으로써 상기를 행한다. 조정 단계동안 버스 구조에 대한 접근을 연속적으로 획득하는 유닛 또는 파트너 유닛 쌍은 버스 마스터라 하고 그 다음 클럭 단계동안 전송 사이클을 시작한다. 각 메모리 장치(16,18)는 결코 마스터가 되지 못하고 조정하지 못한다.
사이클의 정의 단계동안, 사이클용 버스 마스터로 결정되는 유닛은 한 세트의 사이클 정의 또는 기능 신호를 발생시킴으로써 사이클의 유형을 정의한다. 버스 마스터는 또한 주소 신호도 가정하고 주소 패리티 회선상에 주소 및 기능 신호에 대한 우수 패리티를 배치한다. 처리기 모듈의 모든 유닛은 그 내부 작동 상태에 관계없이, 주변 제어 유닛이 패리티 신호를 수신하지 않고도 작동할 수 있다하더라도, 기능 및 주소 신호를 운반하는 버스 콘덕터상의 신호를 항상 수신한다. 정의되어진 사이클은 이 당시 버스 대기(Bus Wait) 신호가 가정되면 포기된다.
응답 단계동안, 통화중인 시스템의 임의의 주소 지정된 유닛은 버스 통화중(Bus Busy) 신호를 사이클을 포기한다고 가정할 수도 있다. 예를들면, 메모리 유닛은 통화중이거나, 또는 복구 사이클 동안 Bus Busy 신호를 주소지정되는 경우라고 가정할 수 있다. 응답 단계동안 가정된 버스 에러(Bus Error) 신호는 에러가 사이클의 정의 단계동안 주소와 함께 주어졌을시에는 포기할 것이다. 데이타는 판독 및 기록 사이클 양자에 대해 데이타 전송 단계 동안 A버스 및 B버스상에 전송된다. 이에 의하여 시스템은 데이타 회선의 사용을 위한 재-조정을 사용하지 않고도, 원시 유닛 또는 수신지 유닛에 관해서 데이타를 태크할 필요없이도 버스 구조상의 판독 사이클과 기록 사이클의 혼합을 파이프라인할 수 있다.
전어 전송은 UDS 및 LDS(상부 및 하부 데이타 스크로브) 신호 양자의 가정에 의해 이루어진다. 반어 또는 바이트 전송은 이러한 스트로브 신호중 한 신호만 가정에 의해 이루어진 전송으로써 정의된다. 기록 전송은 단순히 어느 스트로브 신호도 가정하지 아니함으로써 버스 마스터에 의하여 사이클내에서 일찌기 포기될 수 있다. 판독되어진 종속 장치(slave unit)는 스토로브 신호를 데이타로 가정해야 한다. 스트로브 신호는 버스 데이타 패리티를 계산하는데 포함된다.
데이타 전송 단계동안 검출된 에러는 이를 검출한 유닛으로 하여금 최초의 사후-데이타(first post-data phase)인 그 다음의 타이밍 단계에서 하나 또는 둘의 Bus Error 신호를 가정하게 한다. 주변 제어 유닛은 데이타를 사용하기 전에 에러가 발생한 것이가를 알아보기 위하여 대기한다. 그러나, 시스템의 중앙 처리 유닛(21) 및 주메모리 유닛(16)은 데이타가 수신되는 즉시 이를 이용하고 사실상, 에러가 있는 경우에는 정확한 데이타를 예비하고 대기한다. 사후-데이타 단계동안 Bus Error 신호의 가정은 전송 사이클의 그 다음의 제6의 단계 동안 전송 단계를 반복하게 한다. 상기는 그렇지 아니하면, 제2의 사후-데이타 단계, 즉, 제6의 단계동안 버스 구조상에 전송되었어야할 데이타가 있다하더라도, 사이클을 포기한다.
설명된 시스템의 정상 후면 작동 모드는 모든 유닛이 Obey Both 모드에 있을때이며, 이 방식에서는 A 버스 및 B 버스 양자는 에러가 없는 것처럼 보인다. 예를들면, A 버스상의 에러에 응답하여, 모든 유닛은 동기적으로 Obey B 모드로 전환된다. 모듈(9)은 S/88 중앙 처리 유닛내에서 실행되는 감시 소프트웨어에 의하여 Obey Both 작동 모드로 리턴된다.
Obey B 및 Obey A 작동 모드 양자에 있어서, A 버스 및 B 버스 양자는 시스템 유닛에 의하여 구동되고 모든 유닛은 여전히 완전한 에러 검사를 수행한다. Obey B 모드의 작동과 유일하게 다른 점은 유닛이 데이타의 반복을 요구하지 않고, 임의의 사이클을 포기하지 않고도, 복종되지 아니하는 하나의 버스상의 추가 에러만을 단지 로그한다는 것이다. 그러나, 복종된 버스상의 Bus Error 신호는 전술한 바와 같이 다루어져 모든 장치를 전환시켜서 다른 버스를 복종하게 한다.
(b) 시스템 버스 단계(System Bus Phases)
제33도는 전술한 작동을 모듈(9)용 버스 구조(30)상의 4개의 파이프라인 다단계 전송 사이클로 도시한다. 파형(56a, 56b)은 도면 상단에 표시된 바와 같은 (1)에서 (21)까지 번호가 붙은 21개의 연속 타이밍 단계동안 클럭(38)이 X 버스(46)에 인가되는 S/88 마스터 클럭 및 마스터 동기화 신호를 도시한다. 파형(58a)으로 표시된 버스 구조상이 조정 신호는 각 타이밍 단계초에 변경되어 21개의 단계중 각 단계에서 #1,#2, #3, …#21 사이클 번호 범례(cycle-numbering legend)를 갖는 것으로 보이는 새로운 사이클에 대한 조정을 개시한다. 제33도는 파형(58b)을 가진 사이클 정의 신호를 나타낸다. 각 사이클별 사이클 정의 신호는, 파형(58b)상에 사이클 번호로서 표시한 바와 같이, 그 사이클에 대한 조정 신호보다 1클럭 단계 늦게 발생한다. 상기 도면에는 그외에도 Busy, Wait, Data, A Bus Error 및, B Bus Error 신호도 표시되어 있다. 도면의 밑줄은 시스템이 작동하는 후면모드를 표시하고 서로 다른 방식간의 전의를 보여준다.
제33도를 참조하면, 타이밍 단계 번호(1)동안, 모듈(9)은 사이클 #1용 사이클 조정 신호를 발생시킨다. 시스템은 지정된 바와 같은 Obey Both 모드로 작동한다. 단계(1)의 사이클 조정중 결정된 Bus Master 유닛은 사이클 정의 신호 파형(58b)상에 범례 #1로 지정된 바와 같이, 타이밍 단계(2)중 수행되어질 사이클을 규정한다. 또한 타이밍 단계(2)에서도, 제2사이클, 사이클 #2에 대한 조정이 수행된다.
타이밍 단계(3)동안에는, 사이클 #1용 버스 구조상에 아무런 용답 신호도 없는데, 이는 이 사이클이, 타이밍 단계(4)중 발생하고 데이타 파형(58e)상에 범례 #1로 지정된 바와 같은, 데이타 전송을 속행할 준비가 되어 있음을 표시한다. 또한 타이밍 단계(3)중에도, 사이클 범례 #2에 대한 사이클 정의가 수행되고 사이클 #3에 대한 조정도 수행된다.
타이밍 단계(4)에서는, 사이클 #1용 데이타가 전송되고 사이클 #3용 정의가 수행된다. 또한, Bus A Error는 상기 타이밍 단계동안 파형(58f)으로써 지정된다고 가정된다. 상기 에러 신호는 사이클 #2를 포기하고 모듈내의 모든 유닛을 Obey B 모드로 전화시킨다. 타이밍 단계(4)의 Bus A Error 신호는 앞서의 타이밍 단계(3)내에서, 시스템의 적어도 하나의 유닛이 A 버스(42)로부터의 신호에 관한 에러를 검출하였음을 표시한다. 상기 에러는, 타이밍 단계(3)중 파형(58e)내에 데이타 부재에 의하여 표시되는 바와 같이, 버스 구조상에 아무런 데이타도 없는 때에 발생하였으므로, 데이타 전송을 반복할 필요가 없다.
타이밍 단계(5)중에는, Obey B 모드로 작동하는 시스템에 대하여, 제5의 사이클이 조정되고 사이클 #4에 대한 기능이 규정되고 사이클 #3용 버스 구조상에는 아무런 응답 신호도 존재하지 아니한다. 따라서 이 사이클은 타이밍 단계(6)중 데이타의 전송을 속행한다. 또한 타이밍 단계(6)에서도, Bus Wait가 파형(58b)내에 표시된다고 가정되고 이는 사이클 #4과 관련되어 있다. 그 결과는 이 사이클이 또 다른 타이밍 단계용으로 확대되고 사이클 #5을 포기하는 것이다.
타이밍 단계(7)에서는 새로운 사이클 #7이 조정되고 사이클 #6에 대한 정의 작업이 속행된다. 타이밍 단계(80에서는 사이클 #4용 데이타가 전송을 위한 버스 구조에 인가된다. 또한, 타이밍 단계(8)에서, Busy 신호 사이클 #6에 대한 응답의 일부이고 상기 사이클을 포기한다고 가정된다.
타이밍 단계(9)에서는 조정 및 정의 작동은 또다른 버스 A 에러에 의하여 가정되는 것과 동일한 패턴을 따른다. 상기 시스템은 이미 Obey B 모드로 작동하고 이에 따라 이 신호에 대한 응답은 단순히 에러를 로그하는 것이다.
타이밍 단계(10)에서 가정되고 타이밍 단계(11)로 속행되는 But Wait 신호는 사이클 #8을 다음 타이밍 단계용으로 확대하여, 따라서 이 사이클용 데이타는 29,31 바와 같이, 타이밍 단계(13)중에 전송된다. 또한 상기 단계중에 가정된 Bus Wait 신호도, 도시된 바와 같이, 사이클 #9 및 #10을 포기한다. Wait 신호에 의해 사이클 #8의 확대를 고려하여, 단계(10), (11) 또는 (12)중에 가정된 임의의 Busy 신호는 사이클 #8을 포기할 것이다. 사이클 #7용 데이타 전송은 타이밍 단계(10)동안 Wait 및 Busy 콘턱터상의 신호에 관계없이 이 타이밍 단계(10)에서 발생한다는 것을 알아야 한다.
타이밍 단계(11), (12) 및 (14)중에 발생하는 또다른 버스 A 에러 신호는 로그되어질 시스템과는 다른 시스템이 이미 Obey B 방식으로 작동하고 있기 때문에, 이러한 시스템에 대하여는 전혀 효과가 없다. 타이밍 단계(14)중에 가정된 Wait 신호는 사이클 #13을 포기한다. 상기 Wait 신호가 사이클 #12로 확대하나, 이 사이클 #12은 타이밍 단계(14)중 가정된 Busy 신호에 의하여 포기된다. 사이클 #11용 데이타는 타이밍 단게(14)중 정상순서로 전송된다. 그외에도 사이클 #14용 데이타 전송이 타이밍 단계(17)에서 발생한다.
타이밍 단계(18)의 사이클 #15 데이타 전송 직후의 타이밍 단계(19)에서, 버스 B에러가 가정된다. 이 에러 신호는 응답 단계에 있는 사이클 #17을 포기하고 사이클 #15용 데이타 전송의 반복을 개시한다. 반복 전송은 사이클 #20중에 일어난다. 더구나, 이러한 에러 신호는 모듈을 Obey A 모드로 전환시킨다. Bus Wait 신호는 버스 마스터 유닛에 의하여 주소지정되었고 데이타 전송을 실시할 준비가 되어 있지 아니한 종속 유닛에 의하여 구동된다. STCI(155)는 결코 종속 유닛이 아니고 I/O 장치가 아니라 메모리만을 주소지정하기 때문에, 이 회선은 STCI(155)에 의하여 이용되지 아니한다.
시스템 버스 논리(178 ; 제19c도)는 STCI(155)로 부터 S/88 메모리 기판(16,18)으로 링크를 제공하고 조정 논리(408 ; 제32b도)를 포함한다. 버스(30)에 대하여 앞서 정의된 동일한 기본 전송 사이클은 논리(178)에 의하여 다음과 같이 이용된다.
1. 조정 단계-이 단계는 버스 제어기가 버스 마스터쉽을 잡기 위하여 경쟁할때 모든 사이클에 진행한다. 전형적으로 조정 우선순위는 조정 장치의 백패널 Slot ID에 근거한다. STCI 설계의 양호한 실시예에 조정 우선순위는 단일 CPU용 Slot ID에 근거하는 반면에, 다중 CPU 구현에 있어선, 실 타스크 요구상에 근거한 우선순위를 지정하기 위하여 각 CPU(PE 85 및 그의 쌍으로된 유닛)상의 FIFO Almost Full/Aiomost Empty(AFE) 플래그 회선 및 Half-full(HF) 플래그 회선(409)을 이용한다.
2. 사이클 정의 단계-이 단계는 이전의 사이클내의 버스 허가에 뒤따른다. 이 단계는 기억장치(16)에 대한 27 비트 시작 물리적 주소와 함께 16, 32 또는 64비트 R/W 전송을 명시하기 위하여 버스(30)의 Bus Fn Code A 및 B상의 4비트 기능 코드를 포함한다. 기억장치(16)는 양호한 실시예용의 256MB 이다. 모든 기억장치 주소는 16,32 또는 64 비트 경계상에 있기에, 주소 비트(0)는 사용되지 않는다. 바이트 및 단어 억세싱은 Bus Fn 코드 정의와 협력하여 제14도에 도시된 UDS, LDS 신호에 의하여 표시된다.
3. 사이클 응답 단계-이 단계는 메모리부터의 버스(30)상의 Bus 에러 또는 Bus Busy 조건을 포함할 수 있는데, 상기 메모리는 STCI(155)는 하여금 이전의 사이클 정의 단계를 재조정 및 재발행하게 할 수 있다.
4. 데이타 단계-일단 기억장치 요구가 받아들여지면(과거의 사이클 응답 단계), 데이타 단계는 사이클 응답 단계에 뒤따르는 사이클(사이클 정의 단계 이후의 2사이클)내에서 일어날 것이다. 16, 32 또는 64 비트 데이타는 판독 또는 기록상의 125ns 단계내에서 전송될 수도 있다.
5. 사후 데이타 단계-Bus 에러에 대한 검사 요구가 있으면, 데이타가 최초로 송신된 이후에 시스템 버스(30)상에 데이타(STCI 155 또는 메모리16로부터)가 2사이클 반복 된다. A 버스 및 B 버스 양자는 동일한 데이타를 운반하기 때문에, A 또는 B 버스 에러중 어느 하나는 사후 데이타 단계중에 일어날 수도 있다.
버스(30)를 조정하는 S/88 처리기(62)와 STCI(155)간의 중요한 차이를 설명하면 다음과 같다. 전형적으로, S/88 처리기(62)는 어느 순간에 5개 단계중 한 단계에서만 작동될 것이다. 그러나, STCI의 인출, 기억 파이프라인 능력(이하 설명됨) 때문에, 상기 STCI는 동시에 5개 단계 전부에서 작동할 수 있다. 예를 들면, 64 바이트 판독 작동동안, 에러가 전혀없고 STCI가 5개의 연속 사이클의 각 사이클에서 버스(30)의 조정 제어를 허가받은 경우에는, STCI(155)는 동시에 5개 단계 전부에서 작동할 수 있다. 상기는 특히, 모듈(9)의 단일 프로세서 버젼내에서 시스템 성능을 향상시킨다.
(c) STCI 특징
STCI 특징의 일부를 설명하면 다음과 같다.
1. FIFO 400-4개(64×9비트)의 First-In-First-Out 고속 RAM은, 유닛(155)이 통화중이 되기 전에, 4개의 64바이트 기억 명령을 보유할 수 있는 버퍼를 형성한다. 상기 RAM은 또한, 모든 데이타에 대해 출력까지 인입패리티를 운반한다. S/370클럭(152)은 명령과 데이타를 FIFO(400)내로 클러하고 ; S/88 클럭(38)은 명령과 데이타를 FIFO(400)외부로 클럭한다. FIFO(400)의 양호한 실시예는 1988년 1월 15일에 Cypress Semiconductor Corp.에 의해 발행된 제품 정보 편람 5-34 페이지에 상세히 기술된 CY7C409이다.
산업 표준 핸드쉐이킹 신호 이외에, Almost Full/Almost Empty(AFE) 및 Half Full(HF) 플래그가 제공된다. AFE는 FIFO가 Almost Full 또는 Almost Empty일때에는 높고 그렇지 아니한 때에는 낮다. HF는 FIFO가 Half Full일 때에는 높고 그렇지 아니한 때에는 낮다.
Input-Ready(IR)제어 신호가 높은 때에는, 메모리는 Shift-In(SI)입력의 제어하에 자신의 입력에서 9비트 병렬 단어를 받아들인다. Output-Ready(OR) 제어 신호가 높은 때에는, Shift-out(OS) 입력의 제어하에 기억된 것과 동일한 순서로 데이타가 출력된다. FIFO가 채워져 있을시에 (IR이 낮음), SI입력에서의 펄스가 무시되며 ; FIFO 비어있을시에 (OR이 낮은), SO입력에서의 펄스가 무시된다.
광역 단어용 병렬 확장은 개별 FIFO의 IR 및 OR 출력을(각기)논리적으로 합산함으로써 구현된다. AND 작동은 모든 FIFO가 더 많은 데이타를 받아들일 수 있게 준비되거나 (IR이 높음) 또는, 데이타를 출력할 수 있게 준비되게(OR이 높음)하므로 장치간의 전파 지연 시간의 변동에 대해 보상할 수 있다.
판독 및 기록 작동은 완전히 비동기적이기에, FIFO는 작동 클럭 주파수 또는 클럭 단계가 서로 크게 다른 2개의 디지탈 기계간에 버퍼로서 이용될 수 있다. FIFO(400)는 공지된 핸드쉐이킹(SI/IR, SO/OR) 신호 및 Almost Full/Almost Empty(AFE) 및 Half Full(HF) 플래그를 발생시키는데 필요한 기록 포인터, 판독 포인터 및 제어 논리를 포함한다. FIFO가 비어있으면, STCI 논리는 SO를 높게 유지하며, 따라서 하나의 단어가 기록되면 이 단어는 직접 출력까지 리플될 것이다. OR 신호는 하나의 내부 사이클 동안은 높아지고 그 다음에는 다시 낮아질 것이다. FIFO내에 더 많은 단어가 기록되면, 이들은 첫번째 단어 뒤에 정렬되고 SO가 낮아질때까지 출력상에 나타나지 않을 것이다.
데이타는 메모리를 통하여 물리적으로 전파되지 않는다. 판독 및 기록 포인터는 데이타를 이동시키는 대신에 증가된다. 기록 포인터를 증가시키고 신호를 빈(empty) FIFO의 SI입력으로부터 OR출력으로 전파하는데 소요되는 시간(fallthrough시간) 또는 판독 포인터를 증가시키고 full FIFO의 SO 입력으로부터 IR 출력으로 신호를 전파하는데 소요되는 시간(bubblethrogh시간)은 데이타가 FIFO(400)를 통해 통과될 수 있는 속도를 결정한다.
파워 업서, FIFO는 Master Reset 신호에 의하여 리세트된다. 이에 이하여 상기 장치는 빈 상태로 들어가게 되고, 이것은 IR 신호가 높아짐과 동시에 낮아질 OR 신호에 의하여 통지된다. 이러한 조건에서는, 데이타 출력(D00-D08)은 낮아질 것이다. AFE 플래그는 높아질 것이고 HF 플래그는 낮아질 것이다.
빈 위치의 이용가능성은 Input Ready(IR) 신호의 고위 상태에 의하여 표시된다. IR가 높을때에는, Shift-IN(SI)핀 상의 저. 고 전이는 입력상의 데이타를 FIFO(400)내에 로드할 것이다. 그후에 IR 출력이 낮아져, 데이타가 샘플화되었음을 표시할 것이다. SI신호의 저.고 전이는 IR신호의 고.저 전이 외에도 FIFO(400)가 거이 채워져 있거나 또는 거의 비어있는 경우에는 AFE 플래그 저.고 전이를 개시시킨다.
FIFO(400)의 출력에서의 데이타의 이용가능성은 Output Ready(OR) 신호의 고위 상태에 의하여 표시된다. FIFO가 리세트된 후 모든 데이타 출력(D00-D08)은 저위 상태에 있을 것이다. FIFO가 비어있는 채로 남아있는 한, OR 신호는 낮아질 것이고 이에 인가되는 모든 Shift Out(SO)펄스는 무시될 것이다. 데이타가 FIFO내로 시프트된 후, 상기 OR 신호가 높아질 것이다.
2개의 플라그, 즉, Almost Full/Alomost Empty(AFE)와 Half-full(HF)는 얼마나 많은 단어가 FIFO내에 기억되어 있는가를 기술한다. AFE는 그 안에 기억된 단어가 8개 또는 그 이하, 또는 56개 또는 그 이상인 때에는 높다. 그외의 경우에는 AFE 플래그는 낮다. HE 플래그는 FIFO 내에 기억된 단어가 32개 이상인 때에는 높고, 기타의 경우에는 HF 플래그가 낮다. 플래그 전이는 SI 및 SO의 하강 에지에 관련되어 일어난다.
2. SBI 논리-S/370 처리기(85)로 하여금 S/88 기억장치(16)에 대한 판독/기록을 개시하게 하는 시스템/88 Bus Interface(SBI) 논리(178). 이것에는 버스(30)에 대한 접근을 위해 모든 사이클을 조정하여 16,32 또는 64비트 전송을 개시시키는 논리(408)가 포함되어 있다. 논리(178)인터페이스 회선 및 조정 논리(408)는 본원에서 설명된 바와 같이 변경되지 아니하는 범위 안에서 되도록이면, Reid 특허에 기술된 형태인 것이 바람직하다.
3. 고장 허용 한계-FIFO버퍼(400)를 포함하는 모든 STCI 논리는 S/370 처리기 기판에 대한 자체검사를 제공할 수 있게 듀플렉스된다. 단지 심플렉스 논리만이 비교기 논리(402a-g), 중단 논리(403) 및, 클럭 발생 논리(도시되지 않음)를 포함한다. 따라서, STCI(155)에는 제8도의 기억장치 관리 유닛(83)의 일부인 실제로 동일한 쌍으로 된 STCI(155a ; 도시되지 않음)을 갖는다.
비교기 논리(402a-g)는 제8도의 비교 논리(15)를 형성하고, 중단 논리(403)는 제8도의 공통 제어 논리(75)의 일부를 형성한다. 양호한 실시예에 있어서, S/370 비교 검사는 잘못된 데이타가 버스 구조(30)를 통하여 분산디지 못하게 하기 위하여 쌍으로된 STCI(155,155a)에서만 수행된다. 그러나, S/370 기계 검사 및 패리티 에러는 버스(460)를 통하여 논리(403)에 공급된다. BCU버스(247,223)상의 일부 에러는 S/88 비교 회로(12f ; 제8도)에 의하여 픽업된다.
4. 주소 검사 -162와 같은 각 S/370 처리가 기억 공간의 크기가 위반되지 아니하게 하는 한편, 기존 오프셋(제10도)을 이용하여 시스템/88 기억장치(16)에 유효한 물리적 S/370 유저 주소를 만들어낼 수 있도록, 2개의 메모리 맵 레지스터(404,405)(MEM Base & MEM Size)가 제공된다.
5. 동기 작동-S/370 클럭(152)은, S/88 클럭(38)의 시작부터 한 S/370발진기 입력 클럭 주기내에서 클럭간의 동기화를 허용할 수 있게, 버스(30)와 동기화 논리(158 ; 제19c도)를 통하여 S/88 클럭(38 ; 제7도) 16㎒ 입력에서 파생된다. 상기에 의해 연속적인 판독(예을 들어, 64-바이트 판독 명령)이 시스템 버스(30)의 STCI(155)에 허여된다고 가정한 연속적인 사이클 간에 메모리(162)로부터 아무런 대기 상태도 갖지 않는 S/370칩 세트(150)로 파이프라인되어질 것이다.
6. STC Bus 인터페이스-모든 표준 S/370 인출/기억명령은 명령 취소와 함께 수행된다. 패리티 에러 및/또는 ECC 에러는 S/370 운영 체제에 보고되지 않을 것이고 오히려 재시도(retry ; ECC 또는 버스 패리티 에러)로서 취급되거나 또는 중단된다. (내부 기판 패리티 에러) 64바이트 회선 경계 크로싱은 주소 순환(address wraparound)를 초래할 것이다.
제11도에서 도시된 바와 같이, STCI(155)는 8KB 명령어/데이타 캐쉬(340) 외에도 64엔트리 DLAT(341 ; 디렉토리 룩어사이드 테이블, directory lookaside table)을 이용하여, S/370 작동(가상) 주소 번역을 다루는 캐쉬 제어기 유닛(153)을 통하여 S/370 처리기(85)에 인터페이스된다. 따라서, 모든 실/가상 I/O 또는 처리기 전송은 유닛(153)에 의하여 STC Bus(157)상에 발하여진 '실'주소를 초래한다. 전형적으로, 버스 어댑터(154) 또는 S/370 처리기(85)가 '실'기억 작동을 수행할시에, 유닛(153)은 STC Bus(157)상에 발하여진 후 취소되어진 명령을 초래할 수도 있는 캐쉬히트를 제외하곤, 처리기 버스(170)로부터 STC버스(157)로의 전이 스테이지로서만 행동한다.
41 STC 버스 회선(제32a도 및 제30도)의 간단한 설명이 이제 제시된다. STC 데이타/주소/명령 버스(406)는 32개의 양방향 데이타 버스 회선외에도 바이트당 기수 패리티를 갖는다. 이 버스는 명령과 주소를 하나의 사이클로 운반하고, 상기 기억 작동의 각 후속 사이클에 32비트까지의 데이타를 운반하는데 이용된다. STC Valid 회선은 명령/주소가 동일 사이클에서 STC Bus 상에서 유효하다는 것을 통지하기 위하여 유닛(153)에 의하여 STCI(155)로 구동된다. STC Cencel 회선은 앞서 발하여진 명령을 취소하기 위하여 유닛(153)에 의하여 STCI(155)로 구동된다. 그것은 STCI Valid가 발하여진 후 2사이클까지 나타날 수도 있다. 그것은 PE(85) 명령 취소 입력과 논리합된다. STC Busy 회선(440)은 "STC Valid"가 발하여진 후 1사이클로 STCI(155)에 의하여 유닛(153)으로 구동되어져, 상기 유닛이 통화중이고 새로운 명령을 받아들일 수 없음을 표시한다. 그것은 유닛(155)이 새로운 명령을 수신할 수 있기 전에 1사이클을 해제시킨다.
회선(433)상의 STC Date Invalid는 데이타 전송을 무효화시키기 위하여 데이타가 인출상에 리턴되는 것과 동일한 사이클내에서 STCI(155)에 의하여 유닛(153)으로 발하여질 수도 있다. 유닛(153)은 회선이 활성화되면, 상기 데이타 사이클을 무시한다. 이 회선은, 고속 ECC 에러가 버스(30)상에서 발생하거나, 데이타가 쌍으로된 STRI 유닛(155,155a)의 논리간에 잘못 비교되거나 또는, 버스(30)판독 사이클중 부정확한 패리티가 검출된 때에, 데이타의 동시에 송신되어질 것이다.
STC 데이타 전송(STC Data Transfer)회선(441)은, 후속 사이클에서 STR Bus(157)상의 데이타 전송을 통지하기 위하여, STCI(155)에 의하여 유닛(153)으로 구동된다. 기억을 위하여 상기는 유닛(153)이 그 다음 32비트 단어를 다음 사이클에 공급하도록 지시한다. 인출을 위하여, 그것은 그 다음 사이클에 STC Data Invalid에 의해 무시되지 않으면, 그다음 사이클이 유효 데이타를 포함할 것임을 유닛(153)에게 알린다. STCI(155) 설계는 위의 모든 상태가 하나의 S/370 CPU내에서 한 순간에 활성화되어지게 완전히 파이프라인된다. 이러한 방식으로, 버스 허가가 계속되고 아무런 버스 에러도 없다고 가정하면, STCI(155)는 32비트, 62.5ns STC Bus(157)상에 64비트 판독(125ns 시스템 버스(30)사이클 당)을 이용하여 아무런 대기 상태도 없이 파이프라인된 데이타를 인출상에 유지할 수 있다.
시스템/88 인터페이스(410)는 BCU지역 가상 주소 공간내에서 MEM Size/MEM Base 레지스터(405,404)로의 접근을 지원하기 위하여 STCI(155)내에서 이용된다. 또한, 'Broken'(403) 및 "Bus Interrupt Request(IRQ)"에러도 S/88 처리기기판(102)상에 에러와 병합되어 단일 CPU로서 버스(30)상에 저 우선순위 보수 인터럽트를 구동시킨다.
BUS IRQ에러는 통상적으로, 동일한 기판이나 파트너 기판에 의하여 서로 다르게 검출되는 버스(30)로부터의 비보호 신호로 인하여 생기는 중단 에러가 중단된 것처럼 버스(30)로부터 기판을 분리시키지 못한다는 점에서 중단 에러와 다른다. 이러한 에러는 기판이 Obey Both 모드에 있을 때에만 활성화 되었다.
그외에도, 회선(411,412,413)상의 'Obey A', 'Obey B' 및 '듀플렉스'신호는 S/370 처리기내에서 재구현되기 보다는 S/88 처리기 기판 논리(415)로부터 구동된다. Obey A/Obey B 신호는 검사 및 구동축 데이타 입력 멀티플렉서용 입력 멀티플렉서(71,73)를 각기 제어하고 Bus 에러조건의 게이팅에 이용된다회선(413)상의 듀플렉스 신호는 기판이 짝지어지는 때를 통지하기 위하여 이용된다(즉, 2개의 파트너가 연속한 슬롯내에 있을 때 함께 조정할 수 있도록 하기 위하여 버스 조정 논리(408)에 이용된다).
Obey A 및 B신호는 +Obey A 및 -Obey A, +Obey B 및, -Obey B를 제공할 수 있게 반전된다. +Obey A 및 -Obey A 신호는 레지스터(428,429)에 각기 인가된다. 레지스터(428,429)는 버스 구조(30)의 A 및 B 버스에 각기 결합된다. S/88 클럭 신호(도시되지 않음)는 상기 A 및 B버스로부터의 데이타를 모두 3개의 클럭 모드(A, B, Both)로 레지스터(428,429)에 대해 각기 클럭시킨다. 레지스터(428)내의 데이타는 버스가 Obey A 또는 Obey Both 모드로 작동할시에 버스(435,436)상에 게이트 아웃되고 레지스터(429)는 Obey B 모드중에만 버스(435,436)상에 게이트 아웃된다. 이와 마찬가지로, 제34도에서 보는 바와같이, STCI(155a)의 레지스터(428a)의 내용은 Obey B 또는 Obey Both 모드중 유사하게 게이트 아웃된다. 레지스터(428,429 및 428a, 429a)의 출력의 도트 논리합(Dot ORing)은 각각의 데이타 입력 멀티플렉서 기능(71,73 ; 제3도)를 수행한다.
레지스터(405,404)내의 MEMSize/MEM Base 값은, BCU 지역주소 공간에 의하여, S/88 처리기(62) 가상주소 공간내에 메모리 맵된다. 이러한 값은, 일단 주어진 S/370 CPU 공간(162)이 정의되면, S/88 부트 프로세스(S/88 boot process)중에 세트되어야 한다. 이 값은, 아무런 STCI 기억/인출 작동이 진행중이 아닌 한, S/88에 의하여 변경될 수 있다.
레지스터(404,405)는 지역 주소(007E01FC)를 통하여 제19a도의 주소 디코드 논리(216)에 의하여 접근되고 다음의 데이타, 즉, S/370 기억장치(162) 크기(MEM Size) 및 기억장치 기준 주소(MEM Base)와 각기 동등한 PA 비트(20-23) 및 PA 비트(20-27)를 포함하는데 ; 여기에서 MEM Size는 S/88 기억장치로부터 기억 영역(162)으로 할당된 주기억장치의 메가바이트(1 내지 16)이며 ; MEM Base는 기억 영역(162)에 할당된 기억장치(16)이 물리적 주소 공간의 주소(0)로부터의 오프셋의 메가바이트이며 ; PA는 S/88번역 가상 부소(즉, 물리적 주소)이다.
논리(216)가 주소(007E01FC)를 해독할시에, 그 크기 및 기준 주소 비트가 그 버스(161D)를 통하여 처리기(62)에 의하여 레지스터(405,404)에 세트된다. 이 작동 동안, 논리(216)는 처리기(62)를 그 연관 하드웨어로부터 분리시켜, 레지스터(404,405)의 로딩이 S/88 운영 체제에 대하여 투명하게 한다. 그외에도, S/370 운영 체제는 S/370 기억장치(162)에 접근시에 이러한 레지스터의 존재 또는 그 이용을 알지 못한다.
제30도, 제32a 및 b도가 또한 기억장치 제어 인터페이스(155)에 의하여 이용되는 신호 I/O 회선을 설명한다. 여기에는 STC Bus(157)이외에 S/88 시스템 버스(30), S/88 처리기(62) 및 S/88 CPU기판(102)상의 논리(415)에 인터페이스하는데 필요한 모든 회선을 포함한다. 설명을 쉽게하기 위하여, 제8도의 송수신기(13)는 제32a 및 b도에 도시하지 않았다.
(d) 데이타 기억 작동(Data Store Operation)
캐쉬 제어기 유닛(153)으로부터 기억 명령이 있는 때에는, STCI(155)는 이 명령을 주소/데이타 버스(406 ; STC 버스(157)의 일부임) 비트(0-7)상에 클럭시키고 이를 STC Valid 비트와 함께 명령 버퍼(416) 및 버퍼(417)에 기억시킬 것이다. STC Busy가 그 다음 사이클동안 논리(401)에 의하여 회선(440)상에 출현되어 유닛(155)이 통화중임을 표시할 것이다. 한편 버스(406)상의 24비트실 주소도 또한 A/D 레지스터(417)내에 클럭화된다.
FIFO(400)가 채워지지 아니하고 명령(FIFO 오버플로 없음)에 명시된 전체 데이타 전송 길이(64바이트까지)를 받아들일 수 있는 한, STC Data Transfer은 논리(401)에 의하여 출현되고 이 명령을 위하 모든 STC Bus 데이타 전송이 완료될때까지, 사이클마다 활동화를 유지할 것이다. 기억시에는 STC Data Transfer은 취소 명령이 발하여지지 아니하였음을(STC 유효 후 2사이클까지)확인할 때까지 (STC Valid 이후 2사이클까지)발하여지지 아니한다. (따라서, 상기 명령은 FIFO 시프트되지 않는다). 그러나, 이 시간중에, 논리(401)는 24비트 주소를 레지스터(417)로부터 레지스터(442)로 시프트시키고 데이타의 최초의 4바이트가 유닛(153)으로부터 레지스터(417)로 전송된다. 그외에도, FIFO HF 및 AFE 플래그(409)가 명령버퍼(416)로부터 디코드된 바이트 전송 길이와 비교된다. FIFO 플래그는 사용중인 4개의 버퍼 깊이 범위중 1을 표시한다. 바이트 전송길이에다가 명령 단어 데이타의 4바이트를 더한 것이 FIFO 플래그에 의하여 표시된 바와 같은, 최악의 경우의 버퍼 깊이에 부가되었을시에, FIFO 64 단어 용량을 초과하면, 모든 STC Data Transfer 활성화는 이러한 오버플로 상태가 사라질때까지 계속된다. 상기는 충분한 단어가 FIFO 외부로 시프트 되어 플래그 상태를 변동시키자마자 일어날 것이다.
아무런 취소도 일어나지 아니하고 아무런 FIFO 오버플로도 존재하지 아니하면, 멀티플렉서(447)를 통하여, 레지스터(442)로부터의 24-비트 주소와 연결된 블럭(401)으로부터의 명령 디코드가 FIFO(400)내에 기억된다. A/D 레지스터(417)로부터의 후속 32비트 데이타 블럭은, 일단 초기 기억 명령이 FIFO로 시프트되면, 레지스터(442)를 통하여 연속적인 사이클로 FIFO(400)내에 기억된다. 게이트(4230는 버스(30)상에 16비트 전송을 위하여 하위 16비트를 상위 16비트상에 멀티플렉스하는데 이용된다.
S비트는 기억을 인출과 구별하는데 이용되고 C/A비트는, 제35도에서 보는 바와 같이, FIFO(400)내의 명령단어와 데이타 단어간을 구별하는데 이용된다. 패리티는 상기 FIFO를 통하여 유지된다.
FIFO 입력 및 출력은 서로 다르게 클럭화된다. 데이타는 S/370 클럭과 함께 FIFO(400)내의 시프트되고 S/88 클럭과 함께 FIFO 밖으로 시프트된다. 이 타이밍은, FIFO(400)가 비어있을 때, FIFO(60ns)이 최악이 경우의 전체 고장 시간에 대해 허용할 수 있게 세트된다. 상기 FIFO 명령 및 데이타 단어가 제35도에 도시되는데 ; 여기에서,
S=(1=Store, 0=Fetch)
C/A=(1=Cmd/Add, 0=Data)
P01=Bytes 0, 1 Even Parity
p23=Bytes 2, 3 Even Parity
LDW=Lower Data Word Select (상위 단어상에 멀티플렉스된 하위 데이타 단어 ; 이 경우에 P01=P23)
64B OVFL=기수 주소 정렬로 이해 초과된 16 단어 전송 ; 부가의 32-비트 데이타 전송 사이클을 필요로함
32B, 16B, 8B, 4B=가중된 바이트 전송 카운트
TRL1, 0='트레일링(Trailing)'단어의 유효 바이트에 대한 엔코드(최종 32비트 데이타 전송)
FIFO(400)의 입력/출력측상의 블럭(401)내의 개개의 순서기는 FIFO내/외로의 전송을 추적한다. 출력 순서기는 실제로 현행 인출 도는 기억 명령을 위하여 계류중인 버스(30) 데이타 전송의 수를 추적한다. 일단 명령 단어가 FIFO 출력에 도달하면, C/A비트=1이 논리(401)에 디코드되고, 이전의 명령이 아직 완료되지 아니하고 미결중에 있는 한, FIFO(400)로부터의 S/370실 주소는 논리(422,423S여 기준 레지스터(404)와 병합되고, 그후에 이것이 시작 '물리적'주소로서 주소 버퍼(420)내에 로드되는 한편, 전송 카운트는 출력 순서기(401)내에 로드된다. 또한, 조정 논리(408)도 조정을 시작하도록 세트된다.
사이클 제어 논리(408)는 인출 및 기억 작동용의 모든 활성 STCI(155)버스(30)단계를 추적할 것이다. 버스(30) 상태 회선(즉, Bus Busy, Bus Error)과 함께, 정상 버스(30)단계 조작외에도 취소된 사이클 정의 또는 데이타 단계에서 초래된 에러 조건을 다루기 위하여, 상기 논리가 STCI(155)내에서 이용된다.
물리적 주소는, 논리(422)내에서 FIFO(400)로부터의 S/370 24-비트실 주소의 상위 4비트를 레지스터(405)내의 S/370 기억장치 크기값과 우선적으로 비교함으로써 형성된다. S/370 주소 비트가 S/370 처리기(85)를 위하여 할당된 크기 영역을 초과하지 아니하면, 상위 5비트가 논리(423)에 의하여 레지스터(404)내의 S/370 기억장치 기준값에 부가되고 버퍼(420)내의 하위 비트(19-1)에 연결되어 S/370 구역(162)내에 시작 S/88 주소로서 사용되는 물리적 27-비트 단어 주소를 형성한다. 그렇지 아니하면, 소프트 프로그램 검사(soft program check)가 보고된다. 임의의 64-바이트 주소 경계 크로싱은 시작 주소에 대한 순환을 초래할 것이다.
주소 U/D 카운터(421)는 출력 물리적 주소의 비트(5-2)를 보유하는데 이용된다. 그것은 출력 순서가와 동기화되어 클럭되고, 정상적으로 증가되는 동안, 사이클 응답 단계의 Bus Busy 또는 Bus Error 상태에 응답할시에는 감소될 수도 있다. 일단 출력 순서기가 로드되면, 연관 논리는 Bus Busy 또는 Bus Error 상태에 응답하는 동안 논리(408)를 통하여 버스 조정 허가에 근거한 기억 사이클을 개시한다. 적당한 S/88 기능 코드는 S/88 기억 명령에 대응하는 논리(401)에 의하여 생성되며 ; 상기 기능 코드는, 조정 사이클 요구가 허가될시에, 버스 구조(30)의 A, B 버스에 응용하기 위하여 레지스터(443)에 배치된다.
출력 순서기는 통상적으로 허가가 있을 때마다 0에 이를 때까지, 즉 현재의 명령으로 더 이상 전송할 바이트가 없음이 표시될 때까지 버스(30)에 대해 32비트 전송에 있어서는 하나씩, 64비트 전송에 있어서는 둘씩 감소된다.
사이클 정의 단계와 중첩된 사이클 응답 단계중 Bus Busy 또는 Bus Error의 경우(백-투-백터가 ; back-to-back grant)에는, 출력 순서기는 취소된 32비트 전송에 대해서는 하나씩, 64-비트 전송에 대해서는 둘씩 증가된다(인출에 한함).
동시에, 주소 U/D 카운터(421)는 취소된 32비트 전송에 대해서는 하나씩, 64비트 전송에 대해서도 둘씩 감소된다(인출에 한함).
데이타 출력 레지스터(425)는 출력 데이타를 일시 저장하기 위하여 사용된다. 후속의 Bus Error(A 또는 B버스)로 인하여 데이타를 재구동시켜야 하는 경우에, 데이타 출력 보유 레지스터(426)가 필요하다. 이 경우, 후속의 데이타(고위 주소에 대한)는 데이타 전송이 초기 전송후에 2사이클이 반복되아야 하기 때문에 Bus Error와 연관되어 있는 이전의 사이클 데이타보다 더 일찍 받아들어서 기억장치(16,18)에 기억시킬 수도 있다(기억과는 달리, 인출된 데이타는 순서를 벗어나서는 수신될 수 없다). 한편, 버스 조정 논리(408)는 , 모든 전송이 버스(30)상에서 개시되고 받아들여질 때까지 계속적으로 사이클을 조정한다. 조정 및, 시스템 버스(30)와 기억장치(16)에 대한 데이타 전송은 (b)항에서 이미 설명된 것과 유사하다.
끝으로, FIFO 설계는 통화중이 되기 전에 64단어(거의 4그룹의 64바이트 기억 전송)까지를 기억할 수 있음을 알아야 한다. 기억에 대해서는, FIFO가 채워지지 아니하고 기억장치와 연관되 명령 및 데이타를 단어를 받아들일 수 있느 한, FIFO는 채워질 때까지 계속적으로 로드된다. 따라서, STC Busy는, 각 기억 명령이 수행된후, 드롭되고 유닛(153)을 해제시키고 S/370처리기(85)가 계속 수행할 수 있게 한다. 유닛(153)내의 고 캐쉬 히트비를 가정하면, FIFO의 거의 4개의 64-바이트 기억장치의 등가(equivalent) 또는 32개의 1-4바이트 기억장치를 일시 기억함으로써 성능이 크게 개선된다.
STCI(155)는 STCI쌍(155,155a)의 "구동"측이고 STCI(155a)는 에러 "검사"측이라고 가정된다. 그러므로, STCI(155)만이 제32b도에 도신된 바와 같은 버스 구조(30)로 신호(제어, 주소, 데이타)를 구동시킨다. 신호가 2개의 버스(A,B)용으로 되어 있는 경우에는, STCI(155) 구동 회선이 2개의 버스에 결합(제32b도에 도시되지 아니한 송수신기(13)를 통하여)되어 있는 것으로 도시되어 있다. STCI(155a)에 있어서, 상기 대응 회선은 버스 구조(30)에 결합되어 있지 아니하고 비교 논리(402a-g)에만 결합되어 있다.
비교 논리(402g)는 버퍼(420)으로부터 주소 비트(27-6), 주소 U/D카운터(421)로부터의 주소 비트(5-2)변경된 주소 비트(1) 및 패리티 발생기 논리(445)로부터의 패리티 비트 및, 레지스터(443)로부터의 기능 코드를 STCI(155a)로부터의 대응 비트와 비교한다. 잘못 비교된 경우에는, 논리(402g)는 에러 신호를 중단 논리(403) 및 Bus Error A 및 B 회선에 인가시킨다.
논리(402e)는 데이타 출력 레지스터(425)로부터의 데이타 출력 비트를 STCI(155a)로부터의 대응 비트와 비교하고 잘못 비교된 신호를 논리(403) 및 Bus Error A,B 회선에 인가시킨다. 논리(402d)는 FIFO논리(401)로부터의 비트를 STCI(155a)로부터이 대응 비트와 비교한다. STC Busy 신호가 회선(440)상에서 활성화중인 동안에 STC Valid 신호가 출현되면, AND 게이트(446)는 논리(403)에 에러 신호를 제공한다.
(e) 데이타 인출 작동(Data Fetch Operation)
인출 명령은 전술된 바와 같이 레지스터(416,417,442)와 FIFO(440)를 통하여 기억 명령과 동일한 경로를 따른다. 한가지 차이점은 데이타가 버스(30)를 통하여 기억장치(162)로부터 레지스터(428 또는 429)내에 수신되었음이 알려질 때까지, STC Data Transfer 신호가 STC Bus 논리(408)상에 출현되지 않는다는 점이다. 인출 명령과 STC Valid 신호는 레지스터(417)에 수신 및 기억된다. 상기 명령 및 그 초기 기억장치 주소가 레지스터(417)에 기억된다. STC Bus 논리(401)는 그 다음 STC Bus 사이클중 STC Busy 신호를 발하여, STC Busy가 제거될 때까지, 캐쉬 제어기(153)가 또다른 명령을 보내지 못하게 한다.
따라서, 인출 명령이 수신되었을 때, 캐쉬 제어기(153)가 수신되어질 인출 데이타를 기다리고 있기 때문에, 인출 명령이 완전히 수행될 때까지는, STC Busy 신호가 논리(401)에 의하여 유지된다(기억 사이클중 STC Busy는 모든 기억 데이타가 제어기(153)로부터 FIFO(400)로 전송되자마자 이동된다). 인출 명령 사이클중, STC Busy는, FIFO(400)내의 기억 명령의 일부 또는 전부가 수행될 때까지 유지되어야 하며 그 다음에야 인출 명령이 수행된다. 그후에야 비로서 STC Busy가 제거될 수 있어, 그 다음 명령을 STCI(155)에 전송할 수 있다.
레지스터(416,417)에 명령을 기억시킨 다음의 사이클에서는, 명령과 주소가 레지스터(442)내로 전송되고 그 다음에는 FIFO(400)내로 전송된다.
S/370 인출 명령이 FIFO(400)의 최종 스테이지에 수신되고 전술한 바와 같이출력-준비가 높을 때에는, C/A 및 기타 명령 비트가 논리(401)내에서 디코드된다. 디코드된 S/370 명령 비트에 대응하는 S/88 기능 코드는, 조정 사이클 요구가 허가된 때에 버스 구조(30)에 인가할 수 있도록 레지스터(443)에 배치된다.
허가 및 후속 사이클 정의 단계 및 사이클 응답 단계에 뒤이어, STCI(155)는 사이클 응답 단계중 아무런 버스 통화중 또는 버스 에러도 보고받지 못한 것으로 가정하는 데이타 단계로 엔터될 것이다. 비트(DP, UDS 및 LDS)와 함께 최초의 32비트가 A, B버스 구조에 의해 기억장치(16) 및 파트너의 구역(162)내 적당한 위치로부터 수신되고 버스(30) 사이클의 후반을 시작하는 S/88 클럭에 의하여 레지스터(428,429)내로 래치된다. 데이타는 Obey Both 모드 또는 Obey A모드가 활동중이라고 가정하면, 데이타는 그 다음 S/88 클럭 사이클(그 다음 버스(30) 사이클의 시작)에 레지스터(428)로부터 버퍼(430)상에 게이트될 것이다. 64비트 전송을 위하여, 두번째 32비트는 이전의 데이타의 버퍼(430)로의 전송과 동시에 레지스터(428 및 429)내에 래치된다. 패리티 발생기(431)는 기수 패리티를 430에 기억된 데이타 단어에 부가한다. 이러한 데이타와 패리티 비트는 수신된 UDS, LDS 및 DP 비트와 함계 버스(435,436)를 통하여 논리(402c)에 인가된다. 논리(402c)는 이러한 비트를 쌍으로 된 STCI(155a)내에서 발생된 대응 비트와 비교한다. 이때 버퍼(430)는 최초의 데이타 단어외에도 패리티를 버퍼(432)상에 게이트시킬 것이고, 그 다음 STC버스 사이클 동안 이들을 구동시켜 STC 버스(157)의 버스(406)를 통하여 캐쉬 제어기(153)에 전송할 것이다. 버퍼(432)는 STC 버스 사이클이 S/88 클럭의 활성화 후에 시작되도록 S/88 클럭과 동기화되는 S/370 클럭과 함께 클럭화된다. S/88 및 S/370 클럭양자에 대하여는, 동일한 62.5ns 주기가 정의되기 때문에 이에 의하여 버스(30)로부터 STC버스로 연속 판독의 파이프 라이닝을 허용한다. 따라서, 양호한 실시예에 있어서, 2개의 STCI(155)사이클은 125ns의 각 버스(30)사이클별로 수행된다.
STCI(155)에 대한 연속적인 허가를 가정하면, 제2데이타 단계가 전술한 제1데이타 단계를 뒤따를 것이다. (버스 에러 등이 없다고 가정함). 64비트 전송을 가정하면, 데이타는 버퍼(428 ; 또는 Obey B모드에 있어서는 429)로부터 버퍼(430)내에 클럭화된 데이타와 동시에 레지스터(428 & 429)내로 클럭화된다. 그후에 버퍼(430) 데이타가 그 다음 32비트를 버퍼(432)에 인가하여 전술된 바와 같이 제어기(153)로 전송시킬 것이다. 그러므로, 양호한 실시예에 있어서, 파이프라인된 데이타 흐름을 유지하기 위하여 연속적인 64비트 전송이 어떻게 이용될 수 있는지를 알게된다.
고속 ECC에러, 데이타의 잘못된 비교 또는 패리티에러가 데이타 단계중에 발생하면, 논리(420c)에 의하여 STC 주소/데이타 버스(406)상의 데이타와 함께 회선(433)상에 STC Data Invalid가 발하여진다. 그외에도, 후속 데이타는 데이타가 무효화된 사이클 이후의 사이클에 도달하면, 상기 데이타 사이클에 뒤따른양 A 및 B버스상에 STCI SBI 논리에 의하여, Bus 에러 조건이 강제된다. 이에 의하여 데이타가 2사이클(즉, Bus에러가 보고된 후 1사이클)뒤에 다시 구동될 것이고, 따라서, 인출된 데이타를 순서대로 전송함으로써 STC 버스상의 데이타 완전성과 기능성을 유지한다. A 및 B 버스 양자성의 버스 에러를 구동시키는것은 ECC 에러 조건 대 '참(ture)'버스 에러를 보고하여, 시스템 버스(30)상에 모든 제어기에 따라 버스 Obey 논리에 변경을 야기시키지 아니하는 메모리(16)에 상당하는 것이다.
이와 마찬가지로, 버스(435,436)를 통하여 인입한 데이타와 검사 패리티를 비교하는데 이용되는 동일한 논리(402c)가 레지스터(428 또는 429)를 통하여 시스템 버스(30)로부터 "역순환(loopback)"데이타 비교를 수행함으로써 420e내의 데이타 출력 비교의 결과를 검증하기 위하여 기억 작동에서도 또한 이용된다. 이것은 기판(101)상의 송수신기(13) 문제를 더 빨리 식별하는데 도음을 주고 잘못된 비교가 있고 그 다음 버스 주기에 버스 에러가 보고되지 않은 경우에, 기판 중단 논리(403)를 기억장치상에 세트시킨다. 그외에도 인출 및 기억 작업에 유효한 잘못된 비교에 대한 고장 조건을 만들어내는 모든 비교기 출력(402a-g)이 논리(403)내에 중단 조건을 발생시킬 것이다. 중단의 초기 세팅은 A 및 B버스 양자상에 버스 에러 신호를 발생시켜, 이전의 사이클내에서의 데이타 전송이 반복되게 하는 한편, 이전의 사이클내에서의 임의의 사이클 정의 단계가 포기된다.
인출에 대해서는 기억과는 달리 이전에 FIFO 내에 있는 모든 명령은, 상기 유닛이 STC Busy 회선(440)을 드롭시키고 또다른 명령을 받아들일 수 있기 전에, 현행 인출과 마찬가지로 수행되어야 한다. 캐쉬 제어기(153)는, 또다른 기억 명령이 발하여지기 전에, 인출 명령을 위한 데이타를 수신하여야 한다.
유효한 판독/기록 사이클 형태의 정의가 제36a 내지 d도에 도시되었는데 : 여기에서
UU=상위 단어의 상위 바이트(Upper Byte of Upper Word)
UM=중간 단어의 상위 바이트(Upper Byte of middle Word)
LM=중간 단어의 하위 바이트(Lower Byte of middle Word)
LL=하위 단어의 하위 바이트(Lower Byte of lower Word)
MEM 16=16 비트 메모리 사이클
MEM 32=32 비트 메모리 사이클
MEM 64=64 비트 메로리 사이클
LW=긴 단어(32비트 ; Longword, 32bits)
UDS=상위 데이타 스트로브(Upper Data Strobe)
LDS=하위 데이타 스트로브(Lower Data Strobe)
유닛(155)의 양호한 실시예에서는 하드웨어를 최소화하는데 역점을 두기 때문에, 64비트 기록은 이용할 수 없다. s/370로부터의 32비트 기억 전송을 지원하기 위하여는 64×36FIFO만으로도 충분하다. 32비트 기록만을 사용함으로써 초래된 하나의 성능 제한은 인터리브드(interleaved) 기억장치(16)내의 각 S/88 메모리 기판 '입(leaf)'은 72비트 길이(64비트+8 ECC비트)이기 때문에, 일단 기록상에 접근되면, 각 입은 3개의 부가의(125ns) 사이클에 대해서 통화중 상태로 머무르게 된다는 것이다. 상기는 동일한 리프가 연속 기록상에 5사이클(625ns)마다 한번씩만 접급될 수 있음을 의미한다. 모든 S/370 32비트 기록은 연속 주소용으로 정의되기 때문에, 상기는 동일한 64비트 경계내에서는 연속 전송이 5사이클(625ns)마다 보다도 더 빨리 행하여질 수 없는데 반하여, 서로 다른 64비트 경계상에서의 연속 전송 연속 125㎱ 사이클로(조정이 성공하였음을 가정하고)행하여질 수 있음을 의미한다.
64비트 판독 사이클이 지원되고, 이 경우, 연속 판독이 동일한 입에 접근하지 아니하는 한, 이들은 연속 사이클내에서 수행될 수 있다. 기타의 경우에는, 이들은 2사이클(250ns)마다 수행될 수 있다. 각 32비트가 버스(30)에 의하여 64비트 판독상에 62.5ns마다(예를들어, 125ns 버스(30) 사이클마다 두번씩) 수신되기 때문에, 데이타가 수신된 후, 이들이 시스템 버스(30)로부터 STC Bus(157)에 파이프라인될 수 있도록 STC Bus 버스(30) 사이클 시간이 부합된다. 2개의 여분의 버퍼링 레벨(버퍼 430 및 432)이 레지스터(428,429)에 사용되어, 사이클의 적절한 동기화를 지원하고 각 데이타 바이트의 패리티를 발생시킬 수 있게 한다.
각 27비트 주소 및 4비트 기능 코드는 버스(30) 사이클 정의 단계중 수반된 패리티 비트와 함게 보내진다. 32비트 데이타도 또한 버스(30) 데이타 단계중 연관된 패리티 비트를 운반한다. 버스(30)상의 기본 125ns 사이클은 정상의 16 및 32비트 전송뿐 아니라, 125ns 윈도우내의 64비트 판독 전송도 허용한다. 선택적으로, 부가의 하드웨어는 STCI(155)내의 연속 64비트 기록 전송을 지원하는데 이용될 수 있다.
S/370 I/O 지원(S/370 I/O Support ; 제37도)
제37도는 S/370 I/O 기능을 지원하기 위하여 이용되는 S/88 하드웨어 및 응용 코드의 개요를 도시적으로 설명한다. 하드웨어 장치는 601, 602, 615-619, 621 및 623-625이다. 소프트웨어(또는 펌웨어) 루틴은 603-614, 620, 622 및 626이다.
이들 몇개 소자의 기능을 설명하면 다음과 같다. 블럭(606)은 블럭(606 내지 614)으로 구성되는 S/88 응용 코드의 메인 제어이다. EXEC370으로 알려져 있는 이러한 블럭 세트는 에뮬레이션에 관계된 모드 S/88 응용 코드 기능을 수행하고 S/370 외부 장치, 서비스, 구성, 오퍼레이터의 콘솔 등을 지원한다.
블럭(603)은 S/370 마이크로처리기내에서 실행되는 마이크로코드이다. 그것은 S/370 CPU 기능을 지원한다. 블럭(603)과 블럭(606)간의 프로토콜은 이러한 블럭이 S/370 I/O 작동의 개시, 그 완료 및 S/370 I/O 장치 및 채널 상태 정보에 관한 요구 및 응답을 서로 교신할 수 있게 한다. 상기 프로토콜은 또한 블럭(606)에 대해 블럭(603)이 특정한 S/370 CPU 기능을 수행할 것을 요구할 수 있다. 블럭(605)은 S/370 기억장치이고 이것이 직접 블럭(603) 및 블럭(606) 양자에 접근할 수 있다. 블럭(606)은 S/88 데이타 화일인 블럭(602)내에 포함된 데이타를 통하여 적당한 S/370 구성을 제공한다.
블럭(604)은 S/88 터미널 장치를 통하여 S/370 오퍼레이터 패널을 제공하는 분리 실행 타스크이다. 이 타스크는 S/370 프로세스의 논리 기능을 방해하지 않고도 언제든지 시작 또는 중지될 수도 있다. 블럭(607)은 EXEC370의 일부이고 S/370 프로세스와 블럭(604)간에 인터페이스 에뮬레이션 기능을 제공한다.
블럭(601)은 그 BCU(156)를 포함하는 S/370의 디버깅(debugging)을 위하여 특별히 기록되어진 S/370 목적 코드를 포함하는 S/88 데이타 "패치 화일(patch file)"이다. 이러한 "패치 화일"중 하나의 블럭(605)을 선택하고 그 블럭(605)내에 로드흘 할 수 있는 블럭(604)에 의하여 제공된 디버그(debug) 패널이 있다.
블럭(608-1)은 S/370 채널을 에뮬레이팅하게 응답가능한 코드로 구성된다. 이 블럭은 S/370 CCW's 인출, 블럭(605)으로/으로부터의 데이타 이동, 블럭(603)에 대한 S/370 I/O 인터럽트 정보의 보고 및, 적당한 Control Unit 코드 에뮬레이터이 선택을 수행한다. 하나 이상의 S/370 채널(예 : 608-2)이 있을 수도 있으나, 동일한 코드가 이용된다.
블럭(609-1)은 S/370 Control Unit 에뮬레이터 코드이다. 시스템 3700은 여러가지 형태의 제어 유닛, 즉, DASD 제어기, 테이프 제어기, 통신 제어기 등을 구비한다. S/370 제어기 기능은 블럭(609-1)과 특칭(particular) 장치(블럭 610 내지 614)간에 분배된다. 블럭(609-1)의 주목적은 주소분리 기능이나, 기타의 Control Unit 특별 기능이 블럭(609-1)내에 상주할 수도 있다. 그러므로, 하나 이상의 이러한 형태의 블럭(예 : 블럭 609-2), 즉, DASD 제어기 에뮬레이터, 통신 제어기 에뮬레이터 등이 존재할 수도 있으나 ; 지원받는 이들 S/370 Control Unit와의 1 : 1 대응은 없다.
블럭(610)은 S/370 콘솔을 에뮬레이팅하는데 필요한 코드를 나타낸다. 블럭(611)은 S/370 터미널을 에뮬레이팅하는데 필요한 코드를 나타낸다. 블럭(612)은 S/370 판독기를 에뮬레이팅하는데 필요한 코드를 나타낸다. 상기는 표준 VM 판독기 가상 입력 장치이다. 그것은 전형적으로는, 테이프 또는 디스켓인 또다른 소스로부터 생겨난 순차 화일의 입력을 제공한다.
블럭(613)은 S/370 프린터를 에뮬레이팅하는데 필요한 코드를 나타낸다. 실제 S/88 프린터는 나중의 스풀 프린팅(spool printing later)에 의하여 구동되어질 수도 있거나 또는, S/370 데이타를 이러한 스폴 프린팅에 의하여 S/88 화일에 기록할 수도 있다. 블럭(614)은 S/370 디스크를 에뮬레이팅하는데 필요한 코드를 나타낸다. 2개의 포맷, 즉, Count Key 및 Data와, Fixed Block이 서로 다른 2세트 코드에 의하여 지원받는다.
블럭(615)은 S/88 터미널, 전형적으로는, S/88 콘솔 출력 장치를 나타낸다. System/88 콘솔은 S/370에 3278 또는 3279 터미널로 나타난 디스크상의 로드에 메시지를 로깅하는 것 이외에 S/88 오퍼레이터 메시지 및 S/370 오퍼레이터 메시지 둘다를 디스플레이한다.
블럭(616)은 S/88 터미널을 나타낸다. 블럭(617)은 S/88 디스크상의 S/88 순차 데이타 화일을 나타낸다. 블럭(618)은 S/88 프린터 또는 S/88 디스크상의 순차 데이타 화일을 나타낸다. 블럭(619)은 S/88 디스크상의 S/88 데이타 화일을 나타낸다. 블럭(620)은 S/88 테이프 장치상에 장착된 System/370 테이프를 읽고, 그것이 원래의 S/370 테이프상에 나타날 때 이를 블럭(617)내에 포맷화하는 코드이다. 블럭(621)은 S/370 기록 테이프가 장착된 S/88 테이프 구동기를 나타낸다.
블럭(622)은 퍼스널 컴퓨터(Personal Computer)로부터 S/88 내로 엔터된 화일을 읽고, 이것이 S/370 System 상에서 발생했을 시에 본래 나타난대로 블럭(617)내에 이를 포맷화시키는 코드이다.
블럭(623)은 S/88 및 시스템/370 둘다로 데이타를 송신하고 이로부터 데이타를 수신하도록 구성된 Personal Computer이다. 블럭(624)은 S/370 System이다. 블럭(625)은 S/88 스풀 프린터를 나타낸다. 블럭(626)은 S/88 화일을 에뮬레이트된 System/370 DASD 장치내에 포맷화하는 코드이다. 이것은 화일을 지원받고자 하는 S/370 DASD중 어느 것에 포맷화시키는 S/88 분리 실행 타스크이다.
S/370 I/O 작동, 펌웨어 개요(S/370 I/O OPERATIONS, FIRMWARE OVERVIEW)
시스템/370 I/O를 간략히 개관하면 다음과 같다. S/370 아키텍쳐는 여러가지 형태의 I/O 명령어, 프로그램 시험가능 조건 코드(condition-code ; CC) 기법 및, 프로그램 인터럽트 매카니즘을 제공한다. 개념적으로는, I/O 명령어는 'I/O channel'쪽으로 향하게 되고 이 I/O 채널은 다른 CPU 처리와 병행하여 I/O 작동 작업을 지시 및 제어하며, I/O 명령어가 수행되거나(조건 코드를 통하여) I/O 연산이 완료된 때(프로그램 인터럽트를 통하여), 그 상태를 CPU에 보고한다.
S/370 명령어, 조건 코드, 인터펍트 및, I/O 장치(DASD, 테이프, 터미널 등)는 긴밀하게 구성되어 있다. 그러나, I/O channel은 설계 허용범위(latitude)를 제공할 수 있도록 느슨하게 구성되어 있고 여러가지 다른 구현도 존재한다.
고장허용 한계 시스템 S/370(Fault Tolerant System/370) 개선의 일반적인 의도는 S/370 CPU(주문형 펌웨어가 달린 칩 세트)와 S/88 CPU 및 Operating Syetem(OS)의 타입 슬라이스(time-slices)로 구성되는 '의사 I/O-channel'이며 S/370 I/O 장치 에뮬레이션과 시스템 콤플렉스의 전면 제어 둘다를 제공하는 특별 펌웨어와 응용-레벨 소프트웨어(EXEC370)의 부가이다. 이러한 콤플렉스의 S/88 부분은 고장허용한계 CPU, OS, I/O 장치, 전원/패키징, 버스 및 메모리를 제공하며 ; S/370 CPU는 하드웨어 여유도 및 부가된 비교된 비교논리를 통하여 고장 허용 한계를 만든다.
요구되는 주문 펌웨어(즉, 마이크로코드)는 다음의 두 그룹으로 나뉜다.
a. S/88 처리기(62)상에서 실행되는 S/88 BCU-구동기, 펌웨어(S/88 BUC-driver firmware ; ETIO)-BCU/DMAC 하드웨어, DMAC 인터럽트 서비스 및, 상태 및 에러 조정이 초기화 및 제어를 위한 서비스 루틴
b. S/370(처리기,85) 마이크로코드-I/O 명령어, I/O 인터럽트 조정 및, 리세트, IPL, 정지 등의 호출과 같은 일부 특별 제어, 여러가지 펌웨어 작동의 문맥을 이해하는 하나의 방편으로서, 전형적인 I/O 작동에서 일어나는 다음의 간단한 사건 순서 ; 에뮬레이트된 S/370 3278 디스플레이 터미널에의 80-바이트 메시지의 S/370 기록을 고려한다.
상기 실시예에 대해서 초기화가 이미 행하여졌다고 가정하면, 제43도 및 제19a-c도를 참조하면, S/370 및 S/88이 정상적으로 작동하고, 다른 S/370 I/O 작동은 진행되지 않는다. PE(62)와 BCU(156)의 소자간의 각각의 데이타/명령 전송은 제20도와 관련하여 전술된 "분리" 매카니점을 이용하여 수행된다. 제43도의 흐름도는 이러한 전형적 시작 I/O 작동을 도식적으로 설명한다.
a. S/370 처리기(85)는 Start I/O(SIO) 명령어와 조우한다(양호한 실시예에서는, 칩 세트(150)내의 모든 I/O 명령어가 마이크로코드화된다).
b. SIO용 주문 펌웨어가 호출된다 ; 그것은 몇개의 파라미터를 고정 우편함 위치(188 ; S/370 주메모리의 IOA 구역내)로 이동시키고 서비스 요구(PU-BCU 요구)를 BCU(156)로 보내고, 응답을 기다린다.
c. BCU 하드웨어는 요구를 검출하고 S/370 IOA 고정위치로부터의 16-바이트 우편함을 판독하라는 명령을 발생시켜, BCU-PU ACK(요구가 서비스 되었음을 의미)를 통하여 상기 의미를 리세트시킴으로써 S/370 처리기(85)에 응답한다.
d. S/370 처리기(85)에서는, SIO 펌웨어가 해제되어, SIO 명령어를 종료시키고 그다음 순서 명령어에서 처리를 속행한다.
e. 사건 'c'의 결과로서, 사건 'd'와 동시에, S/370 하드웨어는 우편함 데이타의 16바이트를 버스(170)를 통하여 어댑터(154)내의 BCU 인터페이스 버퍼(259)로 전송한다.
f. 데이타가 버퍼화(4바이트 블럭으로)되기에, BCU 하드웨어는 DMAC(209, 채널 0)에 반복해서 신호를 보내, 우편함 데이타(4-바이트 블럭의)를 지역 기억장치(210)내의 WORK QUEUE 블럭으로 전송하게 한다.
g. 16바이트 전송이 완료되면, DMAC(209)는 S/88 처리기(62)에 인터럽트(NOTIFY, 제43도)를 제시하고 그 다음에는 상기 DMAC 자체는 그 다음의 링크-리스트 항목을 로딩함으로써 앞으로의 우편함 작동을 준비한다. 이러한 인터럽트는 처리기(62)에 대한 8개의 DMAC 인터럽트중 하나, 즉 "정상" DMAC 채널(0) 인터럽트이다.
h. S/88이 DMAC 인터럽트(마스킹으로 인하여 예상되는 지연에 따라)를 받아들이면, 주문 펌웨어 서비스 루틴(ETIO 내의)이 수행되며 ; 그것이 DMAC(209) 상태를 검사하고, 링크 리스트에 대한 참조로 방금 수신한 WORK QUEUE 블럭을 찾아내고, 이 블럭을 EXEC370 응용 프로그램으로 통과시키기 위하여 대기 행렬에 넣는다.
i. EXEC370은 WORK QUEUE를 검사하고, WORK QUEUE 블럭을 대기행렬 히제시키고, WORK QUEUE 블럭에 데이타 요구를 구성하고, 펌웨어 루틴을 호출하여, 80바이트의 데이타를 3278 터미널로 보내게 한다.
j. 펌웨어는 DMAC(209 ; 채널 1)를 준비 및 시작하고, 그다음에 명령을 BCU 하드웨어로 보내어, 어댑터(154), 버스(170) 및 기억장치 제어기(155)를 통하여 특정 S/370 메모리 위치로부터의 80바이트를 판독하기 시작한다.
k. BCU 하드웨어(156), 어댑터(154) 및 DMAC(209)는 80바이트를 WORK QUEUE 블럭으로 전송하고 DMAC(209)는 인터럽트를 S/88에 제공하는데 ; 이것은 위의 f 및 g항의 작동과 유사하다. 이러한 인터럽트 즉, "정상" DMAC 채널(1) 인터럽트는 전술된 8개의 DMAC 인터럽트중 하나이다.
1. 펌웨어 이터럽트 서비스 루틴은 재차 DMAC 상태를 검사하고 WORK QUEUE를 블럭 포인터를 EXEC370용을 대기행렬에 넣는다.
m. EXEC370은 임의의 필요한 데이타 변환을 행하고, 그다음에 S/88 OS이 서비스를 이용하여 에뮬레이트된 3278 터미널에 데이타를 기록한다. 얼마 후, EXEC370은 이 작업이 종료(정상 또는 에러)를 통지받는다. 그후에 WORK QUEUE 블럭에서, 상태를 포함한 적당한 S/370 인터럽트 메시지를 작성하고, 재차 펌웨어 루틴을 호출하여 이를 S/370 메시지 대기행렬에 기록하게 한다.
n. 펌웨어가 DMAC(채널3)을 준비 및 시작하고 그 다음에, 명령을 BCU 하드웨어에 보내어, 16바이트를 S/370 메시지 대기행렬에 기록한다. 상기는 이 경우에 어댑터(154)가 작동의 종료(마스킹 지연에 따라)시에 S/370 처리기(85)내에 마이크로코드-레벨 예외 인터럽트를 발생시킨다는 것을 제외하곤, 역방향-우편함 판독과 유사하다. DMAC(209)는 또한 단지 상기 g항 및 k항에서와 같이 S/88 처리기(62)를 인터럽트한다(NOTIFY, 제43도). 이러한 인터럽트, 즉, "정상" DMAC 채널 3 인터럽트는 상기 8개의 DMAC 인터럽트중 하나이다.
o. S/370 처리기(85)내에서는, 주문 펌웨어가 예외를 다루고 지연 가능성에 대하여 채널 마스크를 시험하여야 하며 ; 인터럽트가 실행 프로그램에 제공될 수 없을 정도로 마스크된 경우에는, 근본적인 데이타는 메시지 대기행렬 구역(189)으로 부터 펜딩-인터럽트 대기행렬(pending-interrupt queue)로 이동되고, 또 다른 주문 펌웨어는 채널이 다음에 인터럽트용으로 이용가능하게 되었을 때 이를 서비스할 것이다. 마스크되지 아니한 경우에는, 이 펌웨어는 S/370의 문맥을 상기 프로그램의 인터럽트 루틴으로 즉시 전환시킨다.
개선된 FT 시스템의 일반적인 의도는 부착된 종속 I/O 처리기-S/370용의 I/O 조정기 또는 의사-채널로서 S/88 역활의 개념화이다. 그러나, 실제로, 처리기간의 모드 기준 통신은 S/88로부터 개시되어야 한다. (설계 때문에). 또한 S/88은 EXEC370을 통하여 모든 S/370 메모리 및 마이크로코드 공간에 접근할 수 있는 반면에, 그 반대는 그러하지 못하다. 즉, S/370 처리기(85)는 S/88 기억장치에 우연이라도 전혀 접근할 수 없다. 따라서, S/370의 참모습은 S/88에 종속되어 있으나, S/370 I/O를 가진 정상 자립 S/370의 내부 영상을 가지고 있다.
그러나, S/370 프로그램이 S/88과 비동기적으로 실행되고 지장을 받아서는 안돼야 하기 때문에, S/370 I/O 명령어는 행동을 개시(INITIATE)하게 할 수 있어야 하며, 이러한 설비는 S/370이 S/88을 대기하는 고-우선순위 메시지(통상적으로, I/O 명령어)를 가졌다는 색다른 의미를 가진 PU-BCU 요구회선(256a)에 의하여 제공된다. 이러한 서비스 요구의 우선순위 특징이 자동 우편함 기법과 DMAC 채널(0)의 링크 리스트 프로그래밍에 대한 이유이다.
DMAC(209)는 BCU 하드웨어 설계의 필수부분이다. 상기 DMAC는 S/88 펌웨어에 의하여 초기화되고 기본적으로 제어되고, 데이타 전송은 각 채널별로 하나씩 4개의 요구(REQ) 입력 회선(263a-d)을 구동하는 BCU 논리에 의하여 조정된다. 그외에도, 각 우편함 전송이 종료됨에 따라, 외부 BCU 논리가 Channel(0) PCL 회선(257a)을 활성화시킴으로써, DMAC(209)가 S/88 처리기(62)에 인터럽트 요구를 제시하게 한다.
S/370과 S/88간에는 4가지 기본 데이타 전송 작동이 있다.
Figure kpo00002
DMAC(209)의 초기화 및 프로그래밍은 완전히 표준이며 MC 68450 아키텍쳐에 일치하는 것이 바람직하다. 이를 요약하면 다음과 같다 ; 모든 4채널-단어(16비트) 전송 크기 ; REQ 회선이 전송제어, 기억장치(210)내의 메모리 주소 합계 ; 장치(BCU 데이타 버퍼 레지스터) 주소는 카운트되지 아니함. 인터럽트 가능 ; 보유없는 사이클-도용 ; 긍정응답/묵시적으로 주소지정된/단일 주소지정 모드를 가진 장치 ; 16비트 장치 포트 ; PCL=상태 입력.
상기 이외에,
CH0 : 장치 대 메모리(기억장치 210) 전송 ; 링크 배열 연쇄화 ; PCL=인터럽트를 가진 상태 입력
CH1 : 장치 대 메모리(기억장치(210) 전송, 연쇄화 없음
CH2 & 3 : 메모리(기억장치 210) 대 장치 전송, 연쇄화 없음
DMAC는 상기 장치가 16비트 데이타를 가진 것으로 '생각'하나, 외부논리가 32비트를 전송하게 한다. CH0(DMAC 209의 채널 0)에 이용되는 링크 배열 연쇄화 모드는 링크 리스트가 존재하고 그것이 ETIO 초기화 루틴에 의하여 설정되었음을 암시한다. 일단 CH0가 시작되면, 상기는 에러 조건 또는 링크 리스트내의 최종 유효 엔트리와의 직면에 의해서만 중지된다. 정상 작동에 있어서는, DMAC(209)가 우편함 판독을 완료할 때마다, S/88에 대한 인터럽트가 발생하고, 펌웨어는 실시간에 링크 리스트를 모니터하고 보충하며 ; 따라서, 리스트의 최종 유효 엔트리가 결코 도달되지 아니하고, CH0는 계속적으로 실시(유휴)된다.
각 DMAC 채널에는 2개의 인터럽트 벡터 레지스터(NIV,EIV ; 제18도)가 제공되는데, 그중 하나는 "정상적인 작동 끝"용이고 다른 하나는 검출된 에러에 의하여 '강제된 끝'을 위한 것이다. 이 개선은 마이크로코드 기억장치(174)내의 8개의 분리 ETIO 인터럽트 루틴을 가진 8개의 벡터를 모두 이용한다. 추가로, 채널(0) 정상 인터럽트는 2가지 가능한 의미, 즉, PCL에 의하여 '수신된 우편함' 및 소수의 공통의 '링크 리스트의 끝으로 인하여 중지된 채널'을 가진다. 인터럽트 조정기는 DMAC 상태 비트를 검사함으로써 이것들을 구별한다.
S/88 펌웨어는 또한 EXEC370 응용 프로그램을 위한 4개의 서비스 엔트리, 즉 초기화 및, 전술된 3가지 기본 데이타 전송-데이타 판독, 데이타 기록 및, 메시지 Q기록도 제공한다.
ETIO-INITIALIZE 엔트리는 통상적으로 파워-엎 후 즉시 호출되나, 에러 회복 시도를 위해 재초기화 하는 데에도 이용될 수 있다. 이 엔트리가 BCU 하드웨어 및 DMAC(209)를 리세트시키고 그후에, 구성 및 제어값을 가진 모든 4개의 채널에 DMAC 레지스터를 프로그램한다. 이 엔트리는 또한 필요한 링크 리스트를 작성하고 Channel(0)을 시작함으로써, DMAC(209)로 하여금 최초의 링크 리스트 파라미터 세트를 자동 로드시키고 그후에 BCU 하드웨어로부터의 요구 전이를 회선(263a)상에 대기시킨다.
다른 3개의 서비스 엔트리가 호출되어, DMAC 채널 1(데이타 판독), 2(데이타 기록) 및, 3(메시지-Q기록)을 시작시킨다. 호출 프로그램(EXEC370)은 데이타 주소, 카운트 등이 미리 세트되어 있는 WORK QUEUE 블럭에 포인터를 제공한다. 이러한 루틴은 DMAC(209) 및 BCU 하드웨어를 즉시 시작하거나 또는, 요구된 DMAC 채널이 통화중인 경우에는 상기 작동을 대기행렬에 넣는다(제41e도에 도시된 분리 '작업-계류' 대기행렬은 각각의 이들 3개의 채널에 대해 유지된다). 일단 요구된 서비스가 시작되거나 대기행렬에 넣어지면, 제어가 호출 프로그램으로 리턴되고 인터럽트 조정기는 종료에 이르기까지 작동을 계속한다.
작으면서도 매우 중요한 S/88 주문 펌웨어의 제3구역은 8개의 DMAC 인터럽트를 주문 조정기에 인터셉트 및 벡터화하되 S/88 OS에 대하여 투명한 S/88 OS(Operation System)의 변경이다. 이것은 레벨(6)용 OS(이것은 통상적ㅇ로 전원 고장에 대해 자동벡터화 된다)내의 표준 아키텍쳐 MC68020 벡터 테이블에 대한 수정과 주문 인터럽트 조정기를 OS 내로 배치하는것을 포함한다. 이것이 양호한 구현이지만 ; 이하의 인터럽트용 초기화 루틴에 관하 부분에서 알 수 있듯이, 논리가 BUC(156)내에 제공되어 벡터를 지역 버스(223)상에 배치함으로써 벡터 변경의 필요를 제거할 수 있다.
양호한 실시예용의 모든 S/88 펌웨어는 MC68020 어셈블리 언어로 기록되어졌기에, 적당히 마이크로코드라고 부를 수는 없다. 그것은 그 기능의 특성상 펌웨어라 여겨진다.
S/370 처리기(85)용으로 필요한 주문 펌웨어는 다음의 4범주가 있다.
1. S/88의 의사-채널로 가는 마이크로코드화된 I/O 명령어
2. I/O 인터럽트를 포함하여, S/88로부터 나오는 비동기 메시지의 조정,
3. 모든(에뮬레리트된) S/370 I/O 장치의 구성 데이타 및 상태의 유지 및,
4. 유저 수동 작동의 서브세트 구현.
모든 이러한 특별 펌웨어는 S/370 마이크로코드로 기록되고 가능하다면 어디에서나 기존 기능 서브루틴을 사용한다.
S/370 내에는 10개의 I/O 테이프 명령어가 있으며, 이에 대하여는 제44a 내지 i도의 설명과 관련하여 더 상세히 논의된다.
CLRCH-채널 소거(OP 전용 채널)
CLRIO-I/O 소거
HDV-장치 정치
HIO-I/O 정지
RIO-I/O 재개
SIO-I/O 시작
SIOF-고속 I/O 시작
STIDC-채널 ID 기억(OP 전용 채널)
TCH-채널 검사(OP 전용 채널)
TIO-I/O 검사
각각의 이러한 명령어는 S/370 아키텍쳐에 대한 적합성을 유지하면서, 우편함 매카니즘을 통하여 모든 주요 정보를 S/88 내의 EXEC370으로 통과시킬 수 있도록, 마이크로코드로 구현된다.
어댑터(154)내의 몇개의 서로 다른 하드웨어 조건은 S/370 처리기(85)내의 마이크로코드-레벨 '강제된 예외(Forced Exception)'의 몇가지 가능한 하나인 '어댑터 주의환기(Adapter Attention)' 요구를 활성화시킨다. 마이크로코드에 의한 이와 같은 예외의 서비스는 S/370 명령어간에(PE(85)가 대기 상태에 있는 경우에는 즉시) 일어난다. 가장 빈번하고 공통된 'Adapter Attention' 사유는 E(85)에 의한 I/O 의사 채널 S/88로부터 S/370 주 메모리의 IOA 부분의 고정된 메시지-Q 구역(189)으로의 메시지의 수신다.
현존 S/370 마이크로코드 예외 조정기는 'Adapter Attention' 경우에 대해 변경된다. 상기 코드는 어댑터(154) 상태를 검사하여 상기 요구의 사유를 결정하고, 'Q-not-empty'(수신된 메시지를 의미한다) 조정만을 주문하며 ; 임의의 다른 사유는 조정을 위하여 현존의 비변경된 코드로 리턴된다.
수신된 메시지의 정의된 범주는 다음과 같다.
0000 NOP : 작동 없음
0001 RESET : 현존 S/370 프로그램 리셋(Program Reset) 루틴을 호출한다.
0002 CLEAR RESET : 현존 S/370 소거 리셋(Clear Reset) 루틴을 호출한다.
0003 HALT : S/370 프로그램 수행을 정지(Halt)하고, ISTEP 모드로 전환시킨다.
0004 STEP : 명령어 단계 ; 하나의 명령어를 수행하고 그후에 정지한다.
0005 RUN : ISTEP 모드로 리셋하며 ; 프로그램의 수행을 재개한다.
0006 LPSW : 메시지내에 제공된 PSW를 이용하여, S/370 'Load PSW 기능을 수행한다. HALTED 상태를 남긴다.
0007 SMSG : 메시지 상태-지역(IOA) 장치 상태 테이블(Device Status Table)에서 하나 또는 그 이상으로 구성된 I/O 장치에 대한 상태 비트를 갱신한다.
0008 IMSG : 메시지 인터럽트-Channel Mask 상태에 따라, S/370 I/O 인터럽트를 대기행렬에 넣거나 또는 즉시 제공한다.
상기 메시지 형태(0001-0006)은(에뮬레이트된) S/370 시스템 콘솔(System Console)에서 유저 입력에서 생기는 상태 제어용 S/370 수동 작동이다. 상기 메시지 형태는 또한 에러 회복 또는 동기화를 위하여 필요할 시에 EXEC370에 의하여 직접 강제될 수도 있다. 메시지 형태(0007)는 전원 손실, ON/OFF-LINE 변경, 장치-검출 에러 등과 같이, I/O 장치의 비동기적 상태변화를 S/370에 통보하는데 이용된다. 그것은 또한 S/88로부터 S/370으로의 범용 통신용으로 확장될 수도 있다. 메시지 형태(008)는 I/O 작동 상태 끝을 S/370-정상 또는 에러 끝 조건-에 보고하는 매개체이다. 그것은 언제나 S/370에 최종의 프로그램 인터럽트 및 장치 상태 테이블(Program Interrupt Device Status Table) 변경을 초래할 것이다.
특정한 ETIO 및 EXEC370 기능, 인터페이스, 프로토콜 및 명령어 흐름의 세부사항이 이제 논의될 것이다.
시스템 마이크로코드 설계(System Microcode Design)
1. 소개
제38도는 본 발명의 양호한 실시예용의 마이크로코드 설계를 설명한다. S/370 처리 유닛(85와 같은 각처리 소자)내에서 실행되는 코드는 제어 기억장치(171)내에 유지되고 S/370 명령어가 PE(85)에 의하여 수행되는 때에는 이를 해석한다. Start I/O, 인터럽트 조정, 오퍼레이터 기능, 기계 검사 및 초기 마이크로프로그램 로드/프로그램 로드(initial microprogram load/program load ; IML/IPL)용의 마이크로코드화 명령어는 특히 도면에 도시된 바와 같이 S/88 마이크로코드와 인터페이스되도록 설계된다. 인터페이스는 지역 기억장치(210), S/370 캐쉬(340) 및, 2개의 처리기(85,62)의 마이크로코드에 대한 인터럽트 능력을 가진 S/370 실 기억공간(162)을 포함한 인터페이스 논리(81)의 공통 하드웨어 설비를 포함한다. S/88 코드에서는, S/370 마이크로코드 드라이버는 CCW 변환, 인터럽트 조정기, 에러 조정기, IML/IPL 및, S/88 응용 인터페이스(EXEC370) 및 S/88 OS와 상호 작용하는 동기화 코드를 포함한다.
고장 허용 한계 처리기(62)는 모드 I/O, 진단, 고장 분리, IPL/IML 및, 시스템에 대한 동기화를 수행한다. 이 시스템은 S/370 프로그램이 유저의 관점에서 보아 수행되는 유일한 프로그램이기 때문에, 공동처리기 시스템으로는 보지 않는다. 시스템 관리자는 S/88 고장 허용 한계 운영체제를 통하여 시스템 속성을 제어할 수 있다. S/88 SO와 응용 EXEC370의 기본 기능은 다중 370 채널 외관에 대한 I/O 변환이다. 모든 시스템 에러 및 회복 기능과 동적 자원할당 기능은 S/88 OS에 의하여 조정된다. S/370 OS에 의하여 이전에 조정된 기계 검사 및 오퍼레이터 기능이 S/88로 통과되어 이 기능이 고장 허용 한계 방식으로 조절될 수 있다.
제39도는 이 실시예에서는 시작 I/O 명령인 S/370 I/O 명령 수행을 설명한다. S/370 명령어, S/370 마이크로코드, 결합 하드웨어(PE85 대 PE62), 결합 마이크로코드 ETIO(PE62상에서 수행되는) 및, S/88 프로그램 EXEC370에 의해 취해진 작동이 간략히 도시되었는데, 최종 단계는 S/88 처리기(PE62)상에서 S/370 SIO를 수행하는 것이다.
제40도는, SIO 수행중 이용되는 EXEC370 및 마이크로코드 드라이버와 관련하여, 제어 흐름, 데이타 흐름, 신호 및, 하드웨어/코드 분할과 함께 개선된 시스템의 특정의 소자 및 기능을 간략히 설명하는 단순화된 개요이다.
2. ETIO/EXEC370 프로그램 인터페이스(ETIO/EXEC370 PROGRAM INTERFACE) 제41a 내지 h도, 제42도
이하 용어는 다음과 같은 부분에 사용된다 ;
EXEC370-S/370의 외부 장치, 서비스, 구성, 오퍼레이터 콘솔 등의 에뮬레이션 및 지원에 알맞고 PE62에서 실행되고 마이크로코드 기억장치(174)내에 기억된 모든 S/88 소프트웨어, 드물게 이용되는 EXEC370 코드도 캐쉬(173)내에 기억될 수 있다.
S/370 MICROCODE-S/370 처리기 작동을 지원하는 S/370 처리기(85)내에서 실시되고 기억장치(171)내에 기억된 마이크로코드
ETIO-EXEC370과 BCU(156)하드웨어 사이와 기억장치(174)내에 보유되어 있는 마이크로코드 인터페이스
S/370 PE(85) 마이크로코드 및 EXEC370은 제41a도의 "프로토콜"을 통하여 서로 통신한다. PE(85) 마이크로코드는 I/O와 같은 기능의 수행을 요구하는 EXEC370 메시지를 보내고, EXEC370은 I/O 기능의 완료를 표시하는 메시지, I/O 장치 및 채널 상태 변화에 관한 메시지 및 PE(85) 마이크로코드를 요구하는 메시지를 보내 특수한 S/370 CPU 기능을 수행하게 한다. 이러한 메시지(이후에 상세히 설명됨)는 캐쉬 제어기(153), 어댑터(154), BCU(156) 및, DMAC(209)등을 포함하는 하드웨어를 통하여 PE(85) 마이크로코드와 EXEC370간에 전송된다. 상기 메시지 전송 서비스는 ETIO에 의하여 EXEC370에 이용할 수 있게 된다.
ETIO와 EXEC370간의 인터페이스 및 PE(85) 마이크로코드와 EXEC370간의 프로토콜이 이제 설명된다.
EXEC370, S/88에 의하여 수행되는 S/370 외부(External) 지원 소프트웨어와 PE(62)상에서 실행되는 BCU 마이크로코드 드라이버(ETIO)간의 인터페이스(제41b도)는 기억장치(210)내에 상주하는 한 세트의 대기행렬 및 버퍼, 하나의 사건(id), EXBUSY 변수 및, 서브루틴 호출 순서로 구성된다. 서브루틴 호출(CALL) 인터페이스는 S/88과 S/370간의 데이타 전송 작동을 개시하고 S/88 리부트(reboot) 시간에 DMAC(209) 및 BCU(156)를 초기화한다. 대기행렬 인터페이스는 작업 항목이 처리될 때가지 작업 항목의 트랙을 유지하는데 이용되며, 사건 ID 인터페이스(S/88에 대한 인터럽트)는, 작업이 대기행렬이 추가되었을 경우, 이를 EXEC370에 통지한다.
기억장치(210)에는 16개의 4KB 블럭(500)이 있다(제41c도). 14개(500-0 내지 500-13)는 4KB 블럭 버퍼로서 이용된다. 나머지 2개는 32개의 256바이트 블럭(501-0 내지 501-3)으로 나뉜다. 4개의 블럭(501-0 내지 501-3)은 하드웨어 통신용으로 이용되고, 하나(501-4)는 대기행렬(Qs) 및 EXEC370과 ETIO에 공통인 기타 변수용으로 이용된다. 나머지 27개는 작업 큐 버퍼(Work Que Buffers ; WQB ; 501-5 내지 501-31)로서 이용된다. 블럭(501-0, 501-1)에 상당하는 주소 공간에서는, BUC(156) 명렬(PE62에 의하여 수행되는)은 256바이트가 지정되고 DMAC 레지스터 주소는 BUC(156) 작동에 관하여 설명한 바와 같이 PE(62)에 의하여 접근되는 256바이트가 지정된다. 각각의 27개의 Work Que Buffer는 하나의 특정한 타스크 또는 서비스 요구에 속한 데이타를 보유한다. 26개의 WQB는 PE(85) 마이크로코드 개시 요구를 서비스하는데 이용된다. 나머지 WQB(EXWQB ;501-31)는 S/88에 의하여 발생되고 PE(85) 마이크로코드에 보내지는 요구를 서비스하기 위해 예야되며 ; 결코 사용되지 않는 Q상에는 나타나지 않는다. 각 WQB는 기준 주소와 DMAC(209)에 기억된 오프셋 값에 의해 주소지정된다.
각 WQB(제41d도)에는 16바이트 우편 블럭(505), 16바이트 파라미터 블럭(506) 및, 224바이트 장치 특정 작업 구역(507)을 포함한다. 우편 블럭(505)은 EXEC370과 PE(85) 마이크로코드간에 통과된 데이타를 포함한다. 그 내용은 ETIO 인터페이스 양단에 투명하다. 파라미터 블럭(506)은 통상적으로 지역 기억장치(210)와 주 기억장치(162)간의 데이타 전송에 관하여, ETIO와 EXEC370간에 통과된 데이타를 포함한다. 작업 구역(507)은 EXEC370에 의하여 소유된다. 이 작업 구역은 요구된 작동의 진행에 관한 정보, 현재의 S/370 장치 상태, 가능한 유저 데이타, S/88 장치의 형태, 다른 EXEC370 제어 블럭에 대한 포인터, 에러 발생 정보 등을 포함한다.
우편 블럭(505)은 PE(85) 마이크로코드와 EXEC370간에 통과된 S/370 I/O 정보가 들어있는 4개의 필드를 포함한다.
OP-이 필드는 EXEC370 또는 PE(85) 마이크로코드로부터의 요구를 포함한다.
CUA-16비트 채널 유닛 주소(16bit Channel Unit Address)
CAW-관련 I/O 명령어가 발하여졌을 때, S/370 기억장치(162)내의 16진수 위치(48)의 32비트 S/370 채널 주소 단어.
CCW-위의 CAW에 의하여 주소지정된 S/370 채널 명령 단어.
EXEC370이 입터럽트 표시를 리턴시키면, 이 필드는 CSW, S/370 채널 상태 단어를 포함한다.
파라미터 블럭(506)은, EXEC370에 의하여 기억장치(210)와 주 기억장치(162)간의 데이타 전송이 요구되었을 때, 이용되는 6개의 파라미터를 포함한다.
1. req-ETIO 요구 필드 ;
0 ; 작동없음
1 ; PE(85) 메시지 대기행렬(189)내의 우편 블럭의 내용을 기억장치(162)에 기록한 다음에 BCU to PU 요구를 회선(256a)상에 말한다.
2 : S/370 메모리로부터의 데이타를 판독함.
3 : S/370 메모리에 데이타를 기록함
2. ret-"req"필드에 의하여 행하여진 요구의 결과. 이 필드는 EXEC370에 의하여 처음에는 0이 되도록 보장된다. 비 제로로 리턴되면, ETIO가 어떤 형태의 에러를 표시하고 있는 것이다.
3. COUNT-전송되어질 바이트의 수
4 : S/370 ADDR-데이타 구역이 시작되는 S/370 구역의 위치. 이것은 반드시 CCW 주소 필드 값은 이니다.
5. key-이 16비트 필드는 다음의 비트 패턴을 포함할 것이다.
ppkkkk10 00000000
여기에서 pp(우선순위)=00이고 kkkk=적당한 S/370 기억장치 보호 키이다.
Buff Addr-데이타 구역이 시작되는 기억장치(210)의 위치. 그것은 4K 버퍼 또는 WQB내에 있을 수도 있다.
EXEC370은 다음의 관계를 보장할 서이다. (S/370 ADDR 모듈로 4)=(Buff Addr 모듈로 4)
EXEC370은 WQB를 유지시키기 위하여 대기행렬을 이용한다. 대기행렬 통신 구역(501-4)은 256 바이트 길이이고 기억장치(210)내의 오프셋(400, 16진수)에 상주한다. 제41e도는 WQB에 포인터 엔트리를 보유시키기 위하여 ETIO와 EXEC370간에 정의된 대기행렬을 도시한다.
freeQ 510 포인터를 동시에 이용되지 않는 상기 WQB에0 보유시킴.
workQ 511 포인터를 EXEC370에 의해 서비스되어지길 대기하는 WQB에 보유시킴.
S/3701Q 512 포인터를 EXEC370으로부터 PE85로의 베시지 전송을 대기하는 WQB에 보유시킴.
S/3702Q 513 포인터를 캐쉬 제어기(153)로부터 S/88로의 데이타 전송을 대기하는 WQB에 보유시킴.
S/3703Q 154 포인터를 S/88로부터 캐쉬 제어기(153)로의 데이타 전송을 대기하는 WQB에 보유시킴.
S88Q 515 ETIO 서비스가 완료되어진 후에 포인터를 WQB에 보유시킴.
제41e도는 대기행렬을 통하는 WQB의 경로를 도시한다. 모든 대기행렬은 S/88 리부트중 EXEC370에 의하여 초기화된다. 빈 WQB는 사용되지 않는 Q상에 유지된다. ETIO는, 링크 리스트(516)을 채울 필요가 있는 때에는, 이러한 WQB를 사용되지 않는 Q로부터 이동시킨다. DMAC(209)는, 링크 리스트(516)를 통하여, 기억장치(162)의 우편함 구역(188)으로부터의 S/370 우편함 엔트리를 빈 WQB의 우편 블럭 구역내에 배치시킨다. 채워진 링크 리스트상의 WQB는 ETIO에 의하여 작업 Q(511)로 이동된다. ETIO가 하나(또는 그 이상)의 WQB를 작업 Q(511)상에 놓으며 EXEC370이 통화중이 아닌 때에는, ETIO는 EXEC370 사건(ID)를 통지한다. EXEC370은 작업 Q가 상기 요구를 서비스하기 전에 작업 Q로부터 WQB를 이동시킨다.
요구 처리중, 데이타는 캐쉬 제어기(153)와 버퍼(WQB 또는 블럭 버퍼)간에 전송되어져야 할 수도 있거나 또는 메시지가 PE(85)) 마이크로코드로 보내져야 할 수도 있다. ETIO는 이러한 서비스를 EXEC370에 제공한다. EXEC370은 ETIO를 호출하고 상기 ETIO는 적당한 BCU(156) 작동을 개시하거나 또는, 하드웨어 자원이 통화중이면, WQB를 적당한 S/370상에 놓는다. 각각의 3가지의 서비스(메시지를 S/370으로 전송, 데이타를 S/370으로 전송 및, S/370으로부터의 데이타를 전송)는 각각 그 자체의 대기행렬(512,513,514)를 갖는다. WQB는 EXEC370 스레드(thread)상에 있는 동안 ETIO 코드에 의하여 S/370 대기행렬중 하나에 가산된다. I/O 서비스가 완료된 때에는, ETIO 인터럽트 루틴은 WQB를 S/88Q(515)상에 놓고 ; EXEC370이 통화중이 나닌 경우에는, EX370 사건(ID)를 통지한다.
제42도는 EXEC370, ETIO 인터페이스 하드웨어(89)와 S/370 마이크로코드간의 인터페이스와 함께 대기행렬을 통한 WQB의 이동을 설명한다. 원작업 요구가 완전히 완료되었을 때, 즉 데이타 전송이 완료되었을 때, IO 인터럽트(있는 경우에는)는 PE(85)로 보내지고 EXEC370은 WQB를 사용되지 않는 Q로 리턴시킨다. 그후에 EXEC370이 먼저 S/88 Q(515)를 그 다음에는 작업 Q(511)를 검사함으로써 그 다음 타스크에 착수한다. 2개가 모두 비어있는 경우에는, EXEC370은 EXBUSY 변수를 제로로 세트시키고 EX370 사건의 통지를 대기한다. 통지가 있는 때에는, EXEC370은 처리를 시작하기 전에 EXBUSY를 1로 세트시킨다.
모든 대기행렬, EX370 사건(ID) 및 EXBUSY 변수는 제41f도에 도시한 바와 같이 기억장치(210)의 대기행렬 공동구역(501-4)내에 상주한다. 각 대기행렬은 제41g도에 도시한 바와 같이 특질상 원형이며, 2개의 인덱스형 포인터, 즉, 채움 인덱스(517)와 빈 인덱스(518)를 갖는다. 채움 인덱스(517)는 채워야 할 그 다음 대기행렬 엔트리를 가르키고, 빈 인덱스가 채움 인덱스와 동일한 경우에는, 대기행렬은 비어있다. 모두 6개의 대기행렬은 각각 32개의 엔트리를 가지며 27개의 WQB만이 있기 때문에, 결코 오버플로(overflow)되지 않을 것이다.
각 대기행렬은 다음도 포함한다. ;
qid 이 대기행렬을 식별한다.
QSIZE 이 대기행렬(n)내의 엔트리의 수
Q(1) 대기행렬내의 WQB를 가르키는 주소 엔트리
하드웨어 통신 구역은 1024 바이트를 포함한다. BCU 통신 구역은 512 바이트의 주소 공간을 사용한다. 링크 리스트(516)는 480 바이트를 취한다. 32 바이트는 다른 하드웨어 통신용으로 예약된다. 링크 리스트(516 ; 제41h도)가 DMAC(209)에 의해 사용되어 기억장치(162)이 우편함 구역(188)으로부터의 항목을 우편 블럭내로 보내는데 이용된다. 사용되지 않는 Q(510)로부터의 WQB는 링크 리스트(516)내의 엔트리를 채우는데 이용된다. 각 링크 리스트 엔트리는 10개의 바이트를 포함하고, 데이타를 집어넣을 기억장치(210)내의 WQB의 주소, 전송되어질 데이타의 바이트 카운트(16) 및, 리스트내의 그 다음 링크 엔트리 주소를 식별한다. DMAC(209 ; 채널 0)는 제로 그 다음 링크 리스트 엔트리에 왔을 때 S/88를 인터럽트한다. 리스트에서 DMAC(209 ; 채널 0)의 현 위치는 언제든지 소프트웨어에 이용할 수 있다.
ETIO는 그 인터럽트 엔트리 포인터 이외에 다음과 같은 2개의 외부 호출가능 엔트리 포인트를 갖는다.
etio init
etio(wbn)
EXEC370은 S/88 리부트 당 1회씩 etio init를 호출하고, 동시에 초기화한다. 대기행렬은 이미 초기화되어 왔고 사건 ID 필드가 유효하게 된다. PE(85) 마이크로코드가 아직 작동하지 않을 것이나, IML(초기 마이크로프로그램 로드)의 과정중에 있을 수도 있다.
EXEC370은 데이타 또는 메시지를 S/370로 또는 S/370으로부터 전송되거나 전송받고자 할 때마다 etio(wbn)를 호출한다.
파라미터(wbn)는 서비스 요구가 들어있는 WQB를 식별하는 2-바이트 정수형 Work Que Buffer Number이다. wbn은 0에서 27까지의 인덱스 값이다. 서비스 요구는 파라미터 블럭내의 req 필드에 의하여 식별된다. req 필드 값은 다음과 같다 ; 1=상기 우편 블럭의 내용을 기억장치(162)내의 S/370 메시지 대기행렬(189)내에 기록하고 그후에 BCU to PU 요구를 말한다 ; 2=S/370 기억장치(162)로부터 특정한 기억장치(210) 구역으로 가는 데이타를 판독한다 ; 3=특정한 기억장치(210) 구역으로부터 S/370 기억장치로 송신되는 데이타를 기록한다.
요구된 I/O 기능이 즉시 개시될 수 없는 경우에는, 서브루틴 ETIO는 상기 WQB 를 S/3701Q, S/3702Q 또는 S/3703Q상에 대기행렬시킨다. ETIO 인터럽트 루틴은, 이전의작동이 완료된 때에는, 적당한 S/370 Q로부터의 그 다음 WQB를 대기행렬 해제시킨다.
req 필드가 1을 포함하는 경우에는, PE(85) 마이크로코드는, 우편 블럭 엔트리가 기억장치(162)의 S/370 메시지 대기행렬 구역(189)내에 있을 때까지, 통지(예 : 인터럽트에 의하여)되지 않아야 한다.
S/370 메시지 대기행렬(189)이 채워진 경우에는, Parm 블럭의 ret 필드내의 에러가 상기 문제점을 EXEC370에 식별시킬 것이다. 필요한 경우에는, EXEC370은 백업(backup) 대기행렬 지원을 제공할 수 있다.
3. EXEC370, S/370 마이크로코드 프로토콜
EXEC370과 S/370 마이크로코드간의 통신은 S/370 기억장치(162)내의 각 I/O 장치별로 하나의 엔트리를 가진 Device Status Table(DST)을 필요로 한다. EXEC370과 S/370 마이크로코드는 전후로 송신되는 16-바이트 메시지(제41d도의 우편 블럭(505)를 참조)를 통하여 서로 교신한다. 메시지를 각 말단부상의 수신기용으로 FIFO 순서로 보유하는 대기행렬이 있다. 또한 통지 메카니즘(PU to BCU 및 BCU to PU 회선)도 있다. 우편 블럭(505)에서, 16-비트 S/370 오피코드(opcode) 필드 "OP"는 EXEC370이나 또는 S/370 미이로코드로부터의 요구 또는 응답을 포함한다. 16-비트 Channel Unit Address(CUA)는 S/370 I/O 명령어의 오퍼랜드 주소이다. I/O 명령어가 발하여지고 기억장치 키를 포함하고 있을시에는, CAW가 S/370 기억장치(162)이 16진수 위치(48)의 32비트 내용이다. 8-바이트 CCW는 상기 CAW에 의하여 주소 지정된다. EXEC370이 인터럽트 표시를 리턴할시에, 상기 필드는 CSW를 포함한다. PE(85)는, CSW가 I/O 인터럽트를 야기할시에, S/370 16진수 위치(40)내에 상기 CSW를 기억시킨다. CUA 필드는 변경되지 않을 것이다.
OPERATION 메시지는, EXEC370에 의해 부분적으로 또는 완전히 조정되어야 할 S/370 명령어가 조우될 때마다, OPERATION 메시지는 S/370 마이크로코드에 의하여 EXEC370에 보내진다. OPERATION 메시지는 제41d도의 우편 블럭(505)에 관하여 전술된 정보를 포함한다.
S/370 마이크로코드에 보내진 EXEC370 메시지는 다음 사항을 포함한다 ;
1. RESET 메시지(OP=1)는 S/370 마이크로코드가 S/370 리세트(Reset)를 처리할 것을 요구한다.
2. CLEAR RESET 메시지(OP=2)는 S/370 리세트 및 소거 기억장치(Reset 및 Clear Storage)를 요구한다.
3. HALT 메시지는 S/370 마이크로코드가 S/370 명령어를 인출하는 것을 억제시키고 또 다른 명령어를 대기한 것을 요구한다. 상기 HALT 메시지는 OP 필드=3를 포함한다.
4. STEP 메시지(OP=4)는 S/370 마이크로코드가 하나의 S/370 명령어를 인출 및 수행하고 그후에 HALT 모드에 엔터할 것을 요구한다.
5. RUN 메시지(OP=5)는 S/370 마이크로코드가 S/370 명령어를 인출 및 실행하는 정상 모드에 엔터할 것을 요구한다.
6. LPSW 메시지(OP=6)는 S/370 마이크로코드가 LPSW 메시지의 ADDRESS 필드내에 명시된 주소를 사용하여 S/370 LPSW(Load Program Status Word)를 수행할 것을 요구한다. 그것을 HALT 조건에서 S/370 마이크로코드를 취하는데 이용될 수도 있다.
7. SMSG 메시지(OP=7)는 하나 또는 그 이상의 구성 S/370 I/O 장치에 대한 상태 변경을 표시한다.
8. IOINTR 메시지OP=8)는 I/O 작동의 완료를 표시한다. 상기 채널이 OFF를 마스크시키지 않으면, S/370 마이크로코드는 I/O 인터럽트를 개시할 것이다. 채널이 OFF를 마스크시키면, S/370 마이크로코드는 CSW를 Device Status Table에 세이브시킬 것이고 상기 Device Status Table를 01(기억된 CSW)로 세트시킨다. IOINTR 메시지는 또한 CUA 및 NC(DST CUA에 둠) 그 다음 필드로 포함한다.
S/88 로부터 캐쉬 제어기(153)로의 2개의 메시지 즉, FETCH 및 STORE 는 메시지라기 보다는 오히려 논리 기능이다. CNT 및 ADDRESS 필드용으로는 우수 또는 기수 값을 허용하는 것이 필요하다. 그 필드는 다음과 같다.
BUF-2 기억장치(210)내의 버퍼 주소
CNT-2 바이트 카운트
ADDR-4 바이트 S/370 기억장치 주소 w/key
S/370 마이크로코드는 각 주소지정가능 S/370 장치 (Device)의 상태에 관한 정보를 포함하는 테이블을 유지한다. 주요 정보는 다음과 같다.
Device Condition-TIO, SIO 등등 이후에 CR(S/370 조건 레지스터)를 즉시 세팅할 수 있다.
Device nett-I/O 인터럽트를 취할 때 이용되어진 그 다음 조건.
Device CSW-마스크된 S/370 I/O 인터럽트용으로 유지된다.
DST(CUA)내의 4개의 서로 다른 장치 조건은 370 장치용으로 가능하다.
00 장치 준비 완료(Device Ready)
01 장치 준비되지 않음, CSW 기억된(Device not ready, CSW stored)
10 장치 통화중(Device Busy)
11 장치 작동중이 아님(Device not Operational)
S/370 장치상에서의 I/O 연산의 완료시에, CSW(Channel Status Word)는 채널에 의하여 CPU로 보내진다. 상기 Channel이 마스크 OFF 되면, CPU는 CSW 를 받아들이지 않는다.
이 응용에 있어서, Channel이 마스크되면, S/370 마이크로코드(Microcode)는 CSW를 세이브하고 DST(CUA) 조건을 01로 세트시킨다. 후속 TIO 또는 SIO는 기억되어진 세이브된 CSW와 CR에 배치되어진 조건 코드(01 ; 기억된 CSW)를 초래할 것이다. S/370 마이크로코드가 초기화되면, 그것은 모든 Device가 작동하지는 않는다고 가정할 것이다. S/88은 지원되어질 각 장치에 대해 ONLINE 메시지를 보낼 것이다. 장치는 그 CPU(Control Unit Address)에 의하여 식별된다.
4. S/370 마이크로코드와 EXEC370간의 명령어 흐름
(Instruction Flows Between S/370 Microcode and EXEC 370)
PE(85)가 S/370 프로그램 명령어 스트링을 수행함에 따라, 때때로 이 응용예에 있어서, 상기 PE(85)는 s/88 처리기(62)와 관련 하드웨어, 펌웨어 및, 소프트웨어에 의하여 수행되는 I/O 명령어와 조우될 것이다.
제44a 내지 l도(및 전술된 제43도)는 이러한 S/370 I/O 명령어의 수행을 위하여 이용되는 마이크로코드 순서 흐름을 도시한다. BCU(156 ; 및 어댑터 154)는 S/88 하드웨어에 의해 최종 S/370 I/O 명령을 수행하는 기준 하드웨어 결합 매카니즘이다. BCU(156)내에서, CMAC(209)는 연산과 데이타의 흐름을 조정하는 주요 "트렉픽 콤(traffic cop)"이다 DMAC(209)는 채널(0)은 S/370으로부터의 I/O 명령을 수신하고, 채널(1)은 S/370으로부터이 데이타 흐름을 다루며, 채널(2)는 S/370으로의 데이타 흐름을 다루고 채널(3)은 인터럽트(및 기타) 메시지를 S/370으로 보낸다. BCU(156)내의 지역 기억장치(210)는 S/370과 S/88간의 통신 구역을 형성한다.
지역 버스(223/247)은 S/88 처리기(62)를 DMAC(209)와 지역 기억장치(210)에 결합시킨다. 지역 버스(223/247)는 DMAC(209) 및 기억장치(210)를 BCU(156)내의 가속 하드웨어 및 어댑터(154)를 통하여 S/370에 결합시킨다.
S/370 I/O 명령어는 S/370내서의 조정용 S/370 마이크로코드 루틴에 디스페치되고, S/88 응용 프로그램 EXEC370(그 관련 S/88 ETIO 마이크로코드와 함께)은 최종 I/O 수행을 실시한다. 어댑터(154) 및 BCU(156)는 S/370과 S/88 코드간의 하드웨어 접속을 형성한다. 시작 I/O 마이크로코드 루틴은 각 장치의 상태, 예를들어, 현재 이용할 수 있는가, 이미 SIO를 발하였는가, 통화중인가, 인터럽트를 회신 받았는가 등을 계속적으로 추적하는 테이블(DST)을 갖는다. 이러한 정보는 조건 코드(CC)내에 포함된다.
이 항은 여러가지 S/370 I/O 작동을 위한 명령어 흐름을 설명한다. 이 항에서 사용된 일부 특정 프로세스와 용어 상기 항 말미에 정의 되어 있다. 상기 작동은 다음과 같다.
1. Clear Channel(제44a도)-이 명령어는 주소지정된 채널상의 모든 장치에 전달된 리세트와 함께, 주소지정된 채널내에서 I/O System Reset가 수행되게 한다. S/370 마이크로코드는 어느 장치가 실제로 채널상에 있는지 알지못하게 하여, 모든 DST 엔트리용의 CC=3을 이 채널상에 세트시킨다. 그 다음에, EXEC370은 구성을 재정의하기 위하여 SMSG를 이 채널로 보낼 것이다.
소거되어질 채널은 명령어 주소 비트(16 내지 23)에 의하여 주소지정된다. S/370 마이크로코드가 디스패치로부터 제어를 수신한 때에는, 상기 마이크로코드는 채널 주소를 검사하기 시작한다. 채널 주소는 유효하거나 또는 무효일 것이다. 채널 주소가 유효이면, 조건 레지스터(CR)는 3에 세트되고 S/370은 그 다음 순서 명령어로 리턴된다. S/370 마이크로코드에 의하여 지원을 받는 채널은 유효한 채널 주소를 가진 것으로 간주된다. 유효 채널 주소에 대해서는, S/370 마이크로코드는 소거 채널 메시지를 EXEC370으로 보낸다. 그 다음에는, 상기 코드가 이 채널용의 모든 장치 상태 테이블(DST) 엔트리를 통해 진행한다. 모든 조건 코드 필드는 이용불가를 의미하는 3으로 세트되고, 임의의 발견된 계류 인터럽트 테이블(PIT) 엔트리는 사용되지 않은 피트 리스트(free pit list)에 대해 해제된다. 그 다음에, S/370 마이크로코드는 조건 레지스터를 0으로 세트시키고 그 다음 순서 명령어로 간다. 한편, EXEC370이 소거 채널 메시지를 수신하였을 때, 상기 EXEC370은 주소지정된 채널상의 모든 장치를 위하여 I/O 시스템 리세트를 수행한다. 그 다음에 EXEC370은 어느 장치가 회선상에 있는가를 확인하고 상태 메시지를 S/370 마이크로코드로 송신하여 이 채널상의 구성을 재정의 한다. S/370 마이크로코드가 상태 메시지를 수신한 때에는, S/370 마이크로코드는 상태 메시지로 상기 코드에 주소지정된 각 장치를 상태 테이블이 조건 코드를 변경한다.
2. Clear I/O(제44b도)-이 명령어는, 주소지정된 CUA용의 IMSG가 EXEC370에 의하여 리턴될 때까지, PE(85)내에서 처리되는 S/370 명령어의 수행을 중단시킨다.
S/370 마이크로코드가 디스패치로부터 제어를 수신한 때에는, 상기 코드는 명령어의 상위 끝 주소로부터 제어 유닛 주소 CUA를 얻는다. S/370 마이크로코드는, 제어 유닛 주소를 이용하여, 이 장치용의 정확한 장치 상태 테이블(DST) 엔트리를 발견한다. 상기 코드는 조건 코드(CC)의 값을 검사한다. 여기에는 다음과 같은 3가지 선택이 있다 : 즉, (1). CC는 0 또는 3과 동등하며, (2). CC는 2와 같거나 CC는 1과 같고 그 다음 조건(NC)은 2와 같고, (3). CC는 2와 같거나 CC는 1과 동등한다.
제1선택에 있어서는, CC는 0 또는 3과 같고, S/370 마이크로코드는 단순히 조건 레지스터를 CC의 값으로 세트하고 그 다음의 순서 명령어로 간다.
CC가 1과 동일한 경우에는, 계류 인터럽트 테이블(PIT)에는 계류 인터럽트가 있다. 이 경우에는, S/370 마이크로코드는 계류 인터럽트 테이블 엔트리로 가서 NC의 값을 검사한다.
CC가 2와 동일하거나 CC가 1과 동일하고 NC가 2와 동일한 경우에 있어서는, S/370은 소거 I/O 메시지를 EXEC370으로 보낸다. S/370은 금정응답을 대기하고 정치와 연관된 임의의 계류 인터럽트 엔트리를 소거한다. 그 다음에는, S/370은 EXEC370에 의하여 리턴되어질 인터럽트 메시지를 대기한다. 한편, EXEC370이 클리어 I/O 메시지를 수신한 때에는, EXEC370은 주소지정된 장치의 선택적 리세트를 수행하고 장치용 제어 상태 단어를 작성하고 인터럽트 메시지를 S/370 마이크로코드로 역리턴시킨다. S/370 마이크로코드가 인터럽트 메시지를 수신한 때에는, 상기 코드가 PIT 엔트리를 만들어내어 상기 메시지로부터의 NC 및 CSW에 채운다. 그 다음에, 피트 엔트리가 DST 엔트리에 접속된다.
이 점에서, CC=2 또는 CC=1인 제3선택에 이르게 된다. 2개의 경로중 하나에 의하여 이 점에 도달한다. 제1경로는 장치가 통화중이거나 또는 장치가 펜싱 인터럽트를 보내나 여전히 통화중인 경우이다. 이것은 선택 리세트가 발하여지는 경우이다. 제2경로는 장치가 계류 인터럽트를 가지나 더 이상 통화중이 아닌 경우이다. 이 2가지 경로에 있어서, CC는 2나 또는 1과 동일하게 될 것이다. 이것이 바로 제3선택이다. /370 마이크로코드는 인터럽트를 팝(POP)시키고, CSW를 S/370 기억장치내에 두고, 조건 레지스터를 1로 세트시키고 그 다음 순서 명령어로 리턴한다.
3. HaH Device(제44c도)-S/370 마이크로코드가 HaH 장치 명령어용 디스패치로부터 제어를 수신하였을 때에는, 상기 마이크로코드는 주소지정된 정지 상태 테이블 엔트리용 조건 코드를 검사한다. 여기에도 3가지 선택, 즉, 조건코드=0 또는 2, 조건코드=1 또는, 조건코드=3이 있다. 조건코드=0 또는 2인 제1선택에 있어서는, S/370 마이크로코드는 정지장치 메시지를 EXEC370으로 보낸다. 그 다음에, S/370 마이크로코드는 S/370 CSW의 16상태 비트를 제로로 돌리고, 조건 레지스터를 1로 세트시키고, 그 다음 순서 명령어로 리턴된다. 한편 EXEC370이 정지 장치 메시지를 수시한 때에는, EXEC370은 주소지정된 장치상에 적당한 기능을 수행하고 정상 인터럽트를 마이크로코드를 리턴시킨다. CC=1일 때, S/370 마이크로코드는 PIT 테이블로부터의 인터럽트를 팝시키고, CSW를 S/370 기억장치내의 적당한 위치에 집어넣고, 조건 레지스터를 1로 세트시키고 그 다음 순서 명령어로 진행한다. CC=3인 제3선택에 있어서, S/370 마이크로코드는 단순히 조건 레스터를 3에 세트시키고 그 다음 순서 명령어로 진행한다.
4. Halt I/O(제44c도)-이 단계의 설명에서, 정지 I/O의 기능은 정지 장치의 기능과 같다.
5. Resume I/O(제44d도)-S/370 system에서, RIO 명령어는 상기 명령어를 받아들이기 전에 채널이 작동중인가의 여부를 확인하기 위하여 단순히 검사한다. S/370 마이크로코드는 다른 I/O 명령어에 대해서와 같이 특정한 CUA를 위해 CC를 검사하여야 한다. CAW는 참조되지 않고, CCW는 이 명령어를 위하여 인출되지 않는다.
S/370 마이크로코드가 재개 I/O 명령어를 위해 디스패치로부터 제어를 수신한 때에는, 상기 마이크로코드는 주소지정된 장치 상태 엔트리를 위한 조건코드를 검사한다. 여기에는 2가지 선택이 있다. 즉, CC=0, 1 또는 2 및, CC=3이다. CC=0, 1 또는 2에 대해서는, S/370 마이크로코드는 Resume I/O 메시지를 EXEC370으로 보내고 조건코드를 2로 세트시키고 조건 레지스터를 0으로 세트시키고 그 다음 순서 명령어로 진행한다. 한편, EXEC370이 재개 I/O 메시지를 수신한 때에는, EXEC370은 제어 유닛 주소를 조사하고 이전에 중단된 I/O 작동을 속행한다. CC=3인 제2선택에 있어서는, S/370 마이크로코드는 단순히 조건 레스터를 3으로 세트시키고 그 다음 순서 명령어로 간다.
6. Start I/O(제44e도)-S/370 마이크로코드가 시작 I/O 명령어용 디스패치로부터 제어를 수신하였을 때, 상기 코드는 제어 유닛 주소를 이용하여 장치 상태 테이블 엔트리를 찾는다. 그 다음에는, 상기 코드는 조건 코드를 검사하는데 여기에는 4개의 선택이 있다. 즉, CC=0, CC=1, CC=2, CC=3이다. CC=0에서는, 상기 장치는 준비완료되고 있고 S/370 마이크로코드는 시작 I/O 메시지를 EXEC370으로 보내고, 통화 중임을 의미하는 CC=2로 세트시키고, 조건 레지스터를 받아들였음을 의미하게 조건 레지스터를 0으로 세트시키며, 그 다음 순서 명령어로 리턴한다. 한편, EXEC370이 시작 I/O 메시지를 수신한 때에는, EXEC370은 제어 유닛 주소를 이용하여 특정 장치를 찾고 이 장치에서 정상 I/O작동을 시작한다. CC=1인 제2선택에 있어서, S/370 마이크로코드는 인터럽트를 팝시키고, CSW를 S/370 기억장치내로 집어넣고, CSW 통화중 비트를 "on"에 세트시키고, 조건 레지스터를 1로 세트시키고, 다음의 순차 명령어로 진행한다. CC=2인 제3선택에 대해서는, S/370 마이크로코드는 CSW와 S/370 기억장치 위치(40X를 모두 제로로 세트시키고, CSW 통화중 비트를 "on"으로 전향시키고, 조건 레지스터를 1로 세트시키고, 그 다음 순차 명령어로 진행한다. CC=3인 제4선택에 대해서는, S/370 마이크로코드는 단순히 조건 레지스터를 3에 세트시키고(장치가 작동중이 아님을 의미), 그 다음 순차 명령어로 진행한다.
7. Start I/O(제44f도)-S/370 마이크로코드는 시작 I/O 고속 명령어용 디스패치로부터 제어를 수신하였을 때, 상기 마이크로코드는 주소지정된 DST 엔트리용 조건 코드를 검사한다. 여기에는 CC=0, 1 또는 2 및 CC=3인 2가지 선택이 있다. CC=0, 1 또는 2인 제1선택에 있어서, S/370 마이크로코드는 시작 I/O 고속 메시지를 EXEC370으로 보내고, CC를 2로, 조건 레지스터를 0으로 세트시키고 그 다음 순차 명령어로 진행한다. 한편, EXEC370이 시작 I/O 고속 메시지를 수신한 때에는, 가능한 경우에는 I/O 작동을 시작하고 ; 그렇지 아니하면, EXEC370은 S/370 마이크로코드에 의하여 수신되었을 때, 정상 인터럽트로서 행동하는 지연 조건 코드를 포함하는 CSW와 함께 인터럽트를 메시지를 리턴시킨다. 조건코드=3인 제2선택에 있어서, S/370 마이크로코드는 다만 조건 레지스터를 3에 세트시키고 그 다음 순차 명령어로 진행한다.
8. Test I/O(제44g도)-S/370 마이크로코드가 검사 I/O 명령어용 디스패치로부터 제어를 수신한 때에는, 상기 S/370 마이크로코드는 조건 코드를 검사한다. 여기에서 CC=0 또는 3, CC=1 또는 CC=2라는 3가지 선택이 있다. CC=0 또는 3에 있어서는, 마이크로코드는 조건 레지스터를 CC값에 동일하게 세트시키고 그다음 순차 명령어로 진행한다. CC=1인 제2선택에 있어서는, 마이크로코드가 인터럽트를 팝시키고 CSW를 S/370 기억장치내에 두고, 조건 레지스터를 CSW가 기억되었음을 의미하는 1로 세트시키고 그다음 순차 명령어로 진행한다. CC=2인 제3선택에 있어서는, 마이크로코드는 S/370 기억장치내의 CSW 구역(40X)을 제로로 놓고, CSW 통화중 비트를 "on"으로 세트시키고, 조건 레지스터를 1과 동일하게 세트시키고, 그다음 순차 명령어로 진행한다.
9. Store Channel ID(제44h도)-S/370 마이크로코드가 기억채널(ID) 명령어용 디스패치로부터의 제어를 수신하면, 상기 S/370 마이크로코드는 채널 주소를 검사한다. 여기에는, 채널 주소 유효 및 채널 주소 무효라는 2개의 선택이 있다. 채널 주소 무효 선택에 있어서는, 상기 마이크로코드는 조건 레지스터를 3과 동일하게 세트시키고 그다음의 순차 명령어로 진행한다. 채널 주소 유효 선택에 있어서, 상기 마이크로코드는 S/370 기억 장소에 A8 16진수 내지 16진수(20000000)를 세트시킨다. 그다음에, 상기 마이크로코드는 조건 레지스터를 0으로 세트시키고 그다음의 순차 명령어로 진행한다.
10. Test Channel(제44i도)-S/370 마이크로코드가 시험 채널 명령어용 디스패치로부터의 제어를 수신하였을 때, 상기 마이크로코드는 채널 주소를 검사한다. 이 흐름에서는 2가지 대선택과 3가지 소선택이 있다. 채널 주소 무효인 제1대선택에서는, 상기 마이크로코드는 조건 레지스터를 3에 세트시키고 그다음의 순차 명령어로 진행한다. 채널 주소가 유효인 제2선택에 있어서는, 상기 마이크로코드는 이 채널용의 모든 DST 엔트리를 검사한다. 특정 장치가 계류 인터럽트를 가지고 있음을 의미하는 CC=1을 가진 상기 특정 장치용 DST 엔트리를 상기 마이크로코드가 발견한 경우에 상기 1소선택이 발생한다. 이러한 경우에 있어서, 상기 마이크로코드는 조건 레지스터를 1로 세트시키고 그다음의 순ck 명령어로 진행한다. 상기 마이크로코드가 이 채널용 DST 엔트리 목록의 끝까지 갔을 때, 상기 마이크로코드가 CC=1의 엔트리를 찾지 못한 경우에는, CC=2를 가진 적어도 하나의 엔트리가 있는가의 여부를 검사한다. 하나라도 있는 경우에는, 이것이 제2소선택이고 이 경우에는, 마이크로코드는 조건 레지스터를 2로 세트시키고 그다음의 순차 명령어로 진행한다. 그렇지 아니한 경우에는, 제3소선택이 일어나고, 마이크로코드는 조건 레지스터를 0으로 세트시키고 그다음의 순차 명령어로 진행한다.
11. Primary and Secondary Interrupts(제44j,44k도)-1차 및 2차 인터럽트라는 용어는 S/370 용어이다. 1차 인터럽트는 I/O 작동에서 초래된 CSW 내의 적어도 Channel End(CE) 상태 비트를 포함한다. 2차 인터럽트는 I/O 작동을 위한 Device End(DE)를 포함하는 제2의 인터럽트이거나 또는 서비스를 요구하는 장치에 의하여 개시되는 비동기적 인터럽트이다.
이 설명의 단계에서, 1차 인터럽트와 2차 인터럽트간에는 아무런 차이도 없으며 ; 따라서 1차 인터럽트만이 설명된다. 제44j도와 제44k도에 도시한 I/O 마스크 인터럽트와 I/O 사용가능한 인터럽트간의 차이는 I/O가 마스크되느냐 이다. 즉, S/370 처리기가 채널로부터 인입한 인터럽트를 받아들이냐의 여부이다. 인터럽트가 S/370 처리기에 의하여 받아들여지지 않으면, 채널은 이 인터럽트를 스택(stack)한다. S/370 처리기가 사용가능하게 되는 시간까지를 계류 인터럽트이라고 한다. EXEC370이 특정 장치 작동을 에뮬레이팅 하고 있는 동안 인터럽트 조건이 생긴 때에는, EXEC370은 CSW를 작성하여 그것을 메시지내에 기억시키고 이 메시지를 S/370 마이크로코드로 보낸다. 상기 마이크로코드가 이러한 인터럽트 메시지를 수신하면, 상기 마이크로코드는 I/O가 마스크되었는지 아니면 사용 가능한지의 여부를 알아내기 위하여 S/370 마스크를 검사한다. I/O가 마스크되었으면(제44j도), 상기 마이크로코드는 이 인터럽트를 스택한다. 스태킹 인터럽트 프로세서(stacking interrupt process)의 설명은 이하에 설정된다. S/370 마이크로코드가 마스크를 검사하고 I/O가 사용가능한 경우에는(제44k도), 인터럽팅 장치용 DST 엔트리내의 조건 코드 필드는 인터럽트 메시지내의 그다음 조건(next condition ; NC)과 동일하게 세트되고, 메시지로부터의 CSW가 S/370 기억장치내에 넣어지고, 마이크로코드는 I/O 인터럽트가 수행되게 한다.
12. S/370 I/O Masking Events(제44l도)-EXEC370이 인터럽트 메시지를 S/370 마이크로코드로 보낼시에 I/O가 마스크되면, 상기 인터럽트는 계류 인터럽트 테이블(pending interrupt table ; PIT) 엔트리내에 스택된다. 그다음 시점에서, 어떤 S/370 사건이 일어날 것이고 이것이 I/O 인터럽트를 사용가능하게 한다. 이것은 로드 PSW 명령어, 세트 시스템 마스크 명령어 또는, 마스크가 I/O를 사용가능하게 하는 임의의 인터럽트로 인하여 야기될 수 있다. PSW 시스템 마스크가 이전에 마스크된 I/O를 가능하게 하는 방식으로 변경되는 때에는, 어느 시점에서도 S/370 마이크로코드는 어느 인터럽트가 이러한 채널에 대해 계류되어 있는가를 검사하여야 한다. 하나도 찾지 못하는 경우에는, 상기 마이크로코드는 단순히 그다음의 순차 명령어로 나간다. 그러나, 하나로도 찾으면, 상기 마이크로코드는 테이블로부터의 인터럽트를 팝시키고 CSW를 S/370 기억장치내에 두고 I/O 인터럽트를 수행한다.
이하에는 직전에 언급되었던 이들 프로세스의 설명이 포함된다.
1. 스택된 인터럽트(stacked interrupt)-스택된 인터럽트라는 용어는 S/370 I/O가 마스크 업 되었을 때, S/370 마이크로코드에 의해 수신되는 인터럽트 메시지와 함께 사용된다. 상기 인터럽트는 계류 인터럽트 테이블 또는 PIT라고 하는 장치 상태 구역내에 스택된다. PIT 엔트리는 인터럽트를 야기시키는 S/370장치를 나타내는 DST 엔트리에 FIFO 순서대로 연쇄된다. 인터럽트의 스태킹은 PIT 엔트리를 사용되지 않는 리스트로부터 얻어서, 이를 이러한 DST 엔트리용 PIT 리스트의 끝에 연쇄시키고, CSW를 PIT 엔트리의 상태 필드내에 두고 NC값을 PIT 엔트리의 NC 필드내에 두고, DST의 CCW 필드를 "1"로 세트시키는 단계를 포함한다. CC를 "1"에 세트시킨다는 것은 이 장치를 위한 계류 인터럽트가 있음을 표시한다.
2. 팝 인터럽트(POP Interrupt)-인터럽트를 팝시키는 것은 DST/PIT 리스트의 상단에 있는 PIT 엔트리를 변경시키지 아니하고, DST 조건 코드를 PIT 엔트리의 NC 필드내에서 찾아낸 값으로 세트시키고, S/370 CSW를 포함하는 PIT 엔트리의 상태 필드를 세이브하고 PIT 엔트리를 사용되지 않는 리스트로 리턴시키는 단계를 포함한다.
3. EXEX370으로의 메시지 송신(Send Message to EXEC370)-제43도는 한 예로서 상기 설명에 대해 참조될 수도 있다. 선택 CC=0인 점에서, S/370 마이크로코드는 메시지를 EXEC370에 송신할 필요가 있다고 결정한다. 메시지는 특히 시작 I/O 메시지이다. 상기 메시지 또는 S/370 마이크로코드가 보내는 임의의 다른 형태의 메시지는 그 절차가 동일하다. S/370 마이크로코드는 기억장치(162)내의 우편함 엔트리내의 데이타 필드를 메시지의 내용을 채운다. 그 다음에 상기 S/370 마이크로코드 BCU 논리(253)에 의해 수신되는 PU to BCU 요구를 발신한다. 그다음에 S/370 마이크로코드는 긍정응답이 회신되기를 대기한다. 한편, BCU 논리가 PU to BCU 표시를 수신할시에 상기 BCU 논리는 기억장치 접근 및 DMA 작동을 시작하여, 우편함 박스로부터 BCU 기억장치(210)로 데이터를 전송한다. DMA가 완료되면, 상기 DMA는 긍정 응답 신호를 S/370 마이크로코드에 리턴하고 그다음에 이 S/370 마이크로코드는 그다음 순차 프로그램 명령어를 속행시킨다. 동시에 DMAC 논리는 System 88을 인터럽트한다. 소프트웨어 루틴은 제어를 수신하고, 작동의 유효성을 검사하고, 그다음에, 작업 대기행렬로부터의 메시지를 대기행렬 해제한다는 통지를 exec370으로 보낸다.
4. S/370 마이크로코드로의 메시지 송신(Send Message to S/370 microcode)-EXEC370이 S/370 마이크로코드로 보내는 몇가지 서로 다른 형태의 메시지가 있다. S/370 I/O Masking Events(제44l도)는 이러한 인터럽트 메시지의 일예이다. EXEC370은 BCU 논리에 간섭하는 ETIO 마이크로코드를 호출한다. ETIO는 메시지를 BCU 기억장치(210)로부터 S/370 기억장치로 전송하는 DMA 작동을 개시한다. DMA가 완료되면, BCU to PU 메시지가 S/370 마이크로코드로 보내지고 인터럽트는 System(88)로 송신되는데, 이 시스템은 ETIO 인터페이스 루틴으로 하여금 EXEC370에 통지를 보내게 한다.
베어스제어장치(BCU ; 156)의 작동(OPERATION OF THE BUS CONTROL UNIT(BCU, 156))
1. 소개
전술된 특정의 시스템 소자 및 그 기능이 간략히 요약될 것이다. BCU(156 는 S/370 칩 세트(150)와 S/88 PE(62) 및 그 연관 시스템과 모듈(10)내의 I/O 소자로 구성되는 I/O 서브시스템 간의 I/O 인터페이스 기능을 수행한다. S/370 칩 세트(150) 및 I/O 서브시스템은 버스 어댑터(154)를 통하여 통신한다. S/88 주기억장치(16)내의 S/370 기억장치 구역(162)은 본원에서는 때때로 기준 기억장치 모듈(basic storage module ; BSM. 162)라고 언급된다. 여기에는 BCU(156)와 버스 어댑터(154)를 결합시키는 2세트의 어댑터 버스 인터페이스 회선(249,250(채널 0) 및, 251,252(채널 1)이 있다.
BCU(156)는 64KB 지역 기억장치(210), 직접 메모리 접근 제어기(direct memory access controller ; DMAL, 209). 32비트 지역 주소 버스(247), 32비트 지역 데이터 버스(223) 및, 인터페이스 논리(205)를 포함한다.
이상에서 상세히 설명한 바와 같이, DMAC(209)는 다음의 4개의 데이터 전송 채널을 포함한다.
Channel 0-우편함 명령은 PE(85)에서 BCU(156)으로 전송된다. 메시지는 S/370 기억 영역(162)으로부터 지역 기억장치(210)로 판독된다.
Channel 1-S/370 PE(85) 기록 데이타, 데이타는 S/370 기억 영역(162)으로부터 지역 기억장치(210)로의 전송을 위하여 판독된다.
Canne1 2-S/370 PE(85) 판독 데이타, 데이타는 지역 영역(210)에서 S/370 기억 영역(162)으로 전송된다.
Canne1 3-BCU(156)로부터 S/370 PE(85)로의 고우선순위 메시지 전송, 메시지는 지역 기억장치(210)로부터 S/370 기억영역(162)으로 전송된다.
DMAC(200)는 버스 어댑터(154)와 지역 기억장치(210)간에 2배 단어(32비트)를 전송한다. 상기 DMAC는, I/O 데이터 전송이 완료되면, I/O 서브시스템(S/88 PE 62)도 인터럽트한다. 지역 기억장치(210)는 I/O 및 메시지 데이터 버퍼(WQB)와, DMAC(209)를 경유하여 자동-우편함 로드를 위한 링크 리스트 데이터를 포함한다.
BCU 논리(205)는 S/88 PE(62)와 DMAC(209)와 지역 버스, 즉, 데이터 버스(223) 및 주소 버스(247) 접근하려고 경쟁하는 지역 버스 조정 유닛(216)을 포함한다. 주소 디코드 및 조정 유닛(216)에 의하여 다음의 주소(제41ㅊ도 참조)가 검출될 때마다 PE 62 버스 요구(Bus Request) 회선(190)이 활동한다 ;
임의의 지역 기억 장소 ; 프로그램된 BCU 리세트(Programmed BCU reset), BSM 기록 셀렉트 엎(BSM write select up), BSM 판독 셀렉트 엎(BSM read select up) 및, 판독 BCU 상태(Read BCU status)를 포함하는 임의의 BCU 직접 명령(any BCU directed command) ; 지역 버스 인터럽트 긍정응답 사이클(Local bus interrupt acknowledge cycle) ; 및 임의의 DMAC 직접 판독 또는 기록 레지스터 명령(any DMAC directed read or write register command).
DMAC 버스 요구 회선(DMAC Bus Request line ; 269)은 DMAC 순서(지역 기억장치(210)를 판독 또는 기록) 또는 링크 리스트 로드순서(지역 기억장치로부터 판독)를 위해 지역 버스(223,247)를 재차 제어하고자 하는 때에 활동한다. 버스 허가 회선(268)은, 지역 버스의 제어가 논리(216)에 의하여 주어졌을 때, 출현되고 회선(191)은, 제어가 PE(62)에 주어졌을 때, 출현된다.
BCU 논리(205)는 버스 어댑터(154)와 I/O 서브시스템간의 DMAC(209) 전송 타이밍을 제어하고 4KB I/O 전송까지를 채널(0,1)상의 버스 어댑터(154)용 64바이트를 블록 전송으로 전환시킨다.
BCU 논리(205)는 임의의 블럭 전송용 64바이트 경계 크로싱을 검출한다. 이것이 일어나면, 블럭은 2개의 분리 전송으로 분할된다. BCU는 제1전송을 위하여 64바이트 경계까지의 단어 수를 계산할 것이다. 상기는 버스 어댑터(154)에 대해 시작 주소와 함께 제공될 것이다. 나머지 단어는 새로운 주소와 함께 후속명령(BSM 판독/BSM 기록)을 통하여 버스 어댑터(154)에 제공될 것이다. BCU 논리(205)는 또한, 고우선순위 메시지 또는 우편함 판독 요구가 있을 때, I/O 데이터 전송(64바이트 경계상에)의 선점(pre-empt)도 제공한다. 고우선순위 메시지 요구 및 우편함 요구는 BCU(156)내에서 동시에 조정될 수 있다. 'BSM 판독'도는 "BSM 기록" 작동도 BCU(156)내에서 동시에 조정될 수 있다.
BCU(156)는 다음 4가지의 I/O 작동을 수행한다.
우편함 판독 작업(Mailbox Read operation) : 이 작업은 'PU to BCU REQ' 회선(256a)을 통하여 S/370 I/O INSTRUCTION MICROCODE에 의하여 개시된다. 우편함(188)은 S/370 BSM(162)내에 위치된다. 이 우편함은 I/O 서브시스템(Start I/O 등)에 의하여 수행될 I/O 명령을 기억하는데 이용된다. 상기 우편함은 I/O 서브시스템이 PE(85)로부터 수신하는 상태 또는 기타 정보를 포함할 수 있다. 'Mailbox Select Up' 명령은, 'PU to BCU Select 회선(210)'이 어댑터 버스 채널(0)상에서 활성될시에, BCU(156)에 의하여 개시된다. S/370 I/O 기록 작동(어댑터 버스 Channel 0)은, 'PU to BCU Request'가 S/370 PE(85)에 의하여 활성화되는 경우에는, 64바이트 경계상에서 선정된다.
S/370 I/O 판독 및 기록 작동 : 상기는 S/370 기억장치(162)와 어댑터 버스 채널(0,1)상의 I/O 장치 기억 데이터 전송(최대 4KB 블록)용으로 제공된다. 모든 데이터 전송은 'BSM SELECT UP' 어댑터 버스 명령을 통하여 I/O 서브시스템(S/88 PE62)에 의하여 개시된다.
고 우선순위 메시지 전송 ; 인터럽트, 상태, 에러 등 I/O 서브시스템으로부터 S/370으로 통과되는 고 우선순위 특성의 메시지. 모든 전송은 'Q SELECT UP' 명령을 통하여 BCU(156)으로부터 개시된다. S/370 I/O 판독 작동(어댑터 버스 Channel 1)은, 고 우선순위 메시지 요구가 생긴 경우에는, 64바이트 경계상에 선점될 것이다.
2. S/370 START I/O SEQUENCE FLOW의 일반설명 및 상세한 설명
'Start I/O 명령 SIO', 'Channel Address Word'(CAW) 및, 제1'Channel Control Word'(CCW)는 S/370 기억장치(162)내의 선정된 '우편함'위치에 기억된다. 이 정보는 BCU 인터페이스 논리(205) 및 버스 어댑터(154)를 통하여 지역 기억장치(210)로 통과된다.
제18도에 도시한 DMAC Channel(0) 레지스터는 우편함 판독 작동용으로 이용된다. 이러한 레지스터는 S/88 PE62에 의하여 프로그램되어 '링크 어레이 연쇄 모드(Linked Array Chanining Mode)'로 작동할 것이다. PE62는 일련의 '링크 리스트'(테이블)을 지역 기억장치(210 ; 제41h도)내에 세트시킴으로써 상기 모드를 초기화한다. 그다음에는, 제1의 '톱 링크 리스트 주소(top linked list address)'를 DMAC Channel 0 기준 주소 레지스터(32비트 ; BAR)내에 세트시킨다. 이 주소는 링크 리스트 데이터의 기억장치(210)내의 제1의 위치를 가르킨다.
DMAC 'PCL'(Peripheral Control Line ; 257a)은 PE62에 의하여 프로그램되어, DMAC(209)로 하여금 PCL 회선(257A)이 활성화될 때마다 그 IRQ 인터럽트 출력 회선(258)을 활성화시키게 한다. 상기 'PCL'회선(257a)은 어댑터 버스(259)를 통하여 주기억장치(162)로부터 지역 기억장치(210)로의 우편함 데이터 전송의 완료 후에 활성화될 것이다. 상기 인터럽트는 S/88 처리기(PE62)에게 우편함 로드가 방금 완료되었음을 알려줄 것이다.
링크 리스트 데이터(제41h도)는 데이터 블록의 시작 기억 주소, 기억장치 전송 카운트, 그다음 테이블 엔트리로의 링크 주소로 구성된다. 테이블내의 최종 링크 주소는 제로일 것이다.
S/88 처리기(162)는 톱 링크 리스트 주소를 DMAC Channel 0 기준 주소 레지스터내에 세트시킨다.
S/88 처리기(PE62)는 "1"을 그 Channel 0 채널 제어 레지스터(CCR)의 비트 7('START' 비트)내에 기록함으로써 DMAC(209)를 활성화시킬 것이다. 그다음에, DMAC(209)는 채널 0 레지스터내에서 제1의 링크 리스트를 다음과 같이 판독할 것이다.
메모리 주소 레지스터(MAR, 32비트)내에서 기억장치(210)의 데이터 블록 WQB의 시작 주소를 판독하며 ; 전송 카운트(우편함 테이타의 바이트)를 메모리 전송 카운트 레지스터(MTC)내에서 판독하며 ; 링크 주소를 그다음 데이터 블록 주소 레지스터(BAR)내에서 판독한다.
특히, 명령어 수행중 S/370 PE85는 'START I/O'명령어를 디코드하고 'START I/O'명령, Channel Address Word 및, 제1의 채널 제어 단어를 S/370 메모리(162)내에 포함되는 연속 '우편함'위치내에 배치한다. 우편함의 시작 주소(기준+대기 행렬 길이)는 초기화 당시 버스 어댑터(154)의 기준 레지스터내에 기억된다.
S/370 PE85는 활동하는 비트(11)를 가진 처리기 버스를 통하여 'LD OSCW'제어를 op를 발한다. 이것은 버스 어댑터(154)의 제어 단어에 'PU to BCU REQUEST'비트를 세트시킨다. OSCW 비트(11)는 어댑터 버스(channel 0)상에 'PU to BCU 요구'를야기시킨다. I/O 데이터 전송중 'PU to BCU REQ'가 생기면, BCU(156)는 I/O 전송을 64바이트 경계상에서 선점하여 우편함 로드가 일어나게 한다.
그다음에, BCU(156)는 제45a도에 도시된 포맷(여기에서, 비트(0,1)는 명령 비트이고 비트(2-7)는 바이트 카운트임)으로 'Read Mailbox Select Up'명령을 버스(290)상에 발생시키고 이를 Channel 0 명령 레지스터(214)내에 기억시킨다. 우편함 주소 비트는 제45b도에 도시된 포맷(여기에서 비트(7)는 기억장치(162)내의 IOA 구역을 식별하고 ; 비트(24-26)는 BCU Channel Number를 비트(27-31)는 우편함 오프셋을 식별한다)으로 버스(209)를 통하여 레지스터(219)내에 기억된다.
BCU(156)는 레지스터(214,219)를 채움으로써 COMMAND/STATUS 버스(249)와 ADDR/DATA 버스(250)를 활성화시킨 후, 'TAG UP'명령을 회선(262a)상에 출현시키고 버스 어댑터로 부터의 데이터를 대기한다. BCU는 'TAG DOWN'회선(262b)을 샘플링함으로써 이를 행한다. 데이터가 준비되어 있지 않는 한, 'TAG DOWN'가 활동한다. 'TAG DOWN'이 버스 어댑터(154 ; 데이터 준비완료)에 의하여 비활성화 되자마자, 우편함 데이터의 최초의 4바이트가 2개의 채널 0 서브사이클을 통하여 Channel 0 판독 버퍼(226)내에 래치된다.
그다음에, BCU 논리(253)는 'REQUEST'회선(263a)을 DMAC(209)의 채널 0상에 출현시킨다. 그다음에, DMAC(209)는 'BUS REQUEST'(BR)를 LOCAL BUS 조정 회로(216)로의 회선(269)에 출현시킨다. 저역 버스가 S/88 처리기(62)에 의하여 이용되지 아니하면, 버스 허가(BG) 회선(268)를 통하여 DMAC(209)로의 버스 접근이 허가된다. 그다음에, DMAC(209)는 WQB 지역 우편함(기억장치(210)의)의 시작 주소를 MAR로부터 주소 버스(Address Bus ; 247)로 전송하고 'ACKO'(DMAC Channel 0 긍정응답) 회선(264a)에 출현시킨다. 'ACKO'신호는 데이터 버스(223)를 통하여, 버퍼(226)로부터 기억장치(210)내의 WQB의 Local Mailbox 부분으로의 데이터와 전송을 개시한다. 'DTACK'회선(265)이 활성화되어 작동이 완료되었음을 DMAC(209)에 알린다.
BCU 클럭 신호(제25도)는 버퍼(259)로부터 레지스터(226)로 우편함 데이터를 계속하여 전송한다. BCU(156)는 각 지역 기억장치(210)/DMAC(209) 순서(32비트)에 대해 2개의 어댑터 버스('TAG UP'/'TAG DOWN')순서(각 16비트)를 수행한다.
DMAC 사이클이 완료된 때(DTACD 활동), DMAC(209)는 'Data Transfer Complets'(DTC) 회선(267)에 BCU 논리(253)를 출현시키고 이 BCU 논리는 또다른 'REQUEST'를 회선(263a)상의 DMAC(209)로 발하여 레지스터(226)로부터 WQB 우편함으로의 4개의 2차 바이트를 판독한다. DMAC 사이클은 전체 우편함 데이터(16바이트)가 전송되었을 때까지(4지역 버스 사이클)반복된다. 그후에, 'PCL'회선(257a)은 BCU 논리(253)에 의하여 DMAC(209)에 대해 활성화될 것이다. 이에 의하여, 'IRQ' 회선(258)은 DMAC(209)로부터 S/88 처리기 우선순위 엔코더/인터럽트 논리(212)로 활성화된다. 그다음에, PE(62)는 우편함 요구를 다룰 것이다.
DMAC(209)가 링크 리스트로부터 그 채널 0 레지스터 로드를 완료한 때에는, 그다음에, DMAC(209)는 그다음의 우편함로드를 시작하기 위하여 BCU 논리(253)로부터 Channel 0 ' REQ'회선(263a)상의 신호를 대기한다. 일단 시작되면, DMAC Channel (0)은 원형 링크 리스트를 제어하는 S/88 처리기(62)와 'REQ'회선(263a)을 불활동적으로 유지함으로써 데이터 전송을 정지시키는 BCU(156)에 의하여 무한히 활동한다. 채널(0)이 '리스트 끝'조건으로 인하여 중지된 경우에는, S/88 처리기는 종료 인터럽트를 수신할 것이고 적당한 때에, Channel (0)을 다시 시작한다.
3. S/370 I/O 데이터 전송 순서 흐름 일반적인 설명(S/370 I/O DATA TRANSFER SEQUENCE FLOW, GENERAL DESCRIPTION)
모든 I/O 판독 및 기록 전송은 어댑터 버스 아키텍쳐 'BSM READ SELECT UP' 및 'BSM WRITE SELECT UP'명령을 통하여 S/88 처리기(62)로부터 시작된다. S/370 CCW 명령 및 시작 주소(S/370 메모리(62) 내의)는 'START I/O'용의 CCW로부터 파생된다. 데이터의 S/88 처리기(62)에 의하여 각 I/O 장치와 지역 기억장치(210)내의 지역 버퍼 간에 이동된다.
지역 기억장치(210)는 S/88 처리기(62)에 의하여 관리되는 I/O Write Operation용 기억 블록의 대기행렬을 포함한다. 이 대기행렬이 적어도 하나의 엔트리를 포함하고 있으면, 상기 대기행렬은 I/O Write 작동을 시작할 준비가 되어 있다. 이 블록중 선택된 한 블록용 시작 주소는 기록 작동의 개시에 앞서 S/88 처리기(62)에 의하여 DMAC(209)내에 있는 DMA채널(1) 레지스터내에 기억된다. DMA 채널(1) 레지스터는 지역기억장치(210)를 통하여 S/370 I/O 기록 작동(S/370 기억장치 162 대 I/O)용으로 예약된다. 어댑터 데이터 버퍼(259 ; 64바이트)는 우편함 판독 및 S/370 기억장치 162 대 I/O)용으로 예약된다. 어댑터 데이터 버퍼(259 ; 64바이트)는 우편함 판독 및 S/370 I/O 기록 작동(S/370 메모리(162)로부터 지역 기억장치(210)로의 데이터 전송)용으로 예약된다. 상기 버퍼는 Channel 0어댑터 버스(249,250)와 연관된다. 버퍼(260 ; 64바이트)는 메시지 기록(S/370으로의) 및 S/370 I/O 판독 작동(지역 기억장치(210)로부터 S/370 메모리(162)로의 데이터 전송)용으로 예약된다. 상기 버퍼는 Channel 1어댑터 버스(251,252)와 연관된다. S/88 처리기(62)는 DMAC Channel(1,2) 메모리 주소 레지스터의 고 순위 단어를 제로(0)로 초기화한다. 상기는, 이러한 레지스터가 연산 순차중 로드될 시에, 여분의 버스 사이클을 세이브하는데, 이는 지역 기억장치(210)가 16비트 이상의 주소를 필요로 하지 않기 때문이다.
(a) I/O Write Operation(S/370 기억장치 162 대 지역기억장치 210)
S/88 처리기(62)는 제45c도에 도시된 바와 같이 정보를 DMAC 주소 및 데이터 버스(248 ; 버스(BUS)161a, 드라이버(DRIVER) 271, 버스(BUS) 247 및, 래치(LATCH) 233을 통해)상에 배치함으로써 지역 버퍼 시작 주소를 DMAC 채널(1) 메모리 주소 레지스터(MAR)내에 세트시키는데 여기에서, 비트 31-08=007EOO='DMAC Register Select'명령이고 비트 07-00=DMAC Channel(1) 메모리 주소 레지스터(로 ; low)선택이다. S/88이 버스상의 최상위 및 최하위 비트를 S/370 프로토콜의 역인 "31" 및 "0"으로서 식별한다.
제45d도에 도시된 내용(MAR 용으로 의도된)은 데이터 버스(223)상에 배치되는데, 여기에서, 비트 31-16=I/O 기록 데이터용 기억장치(210)내의 지역 버퍼의 시작주소이다. 고 순위 데이터 버스 비트(31-16)는 채널(Ⅰ) 메모리 주소 레지스터의 저 순위(15-00) 부분내에 로드될 것이다. MAR 고 순위 비트(31-16)는 초기화 중 0으로 세트된다. DMAC(209)는 16비트 포트 'DSACK'신호 회선(266a,b)에 대하여 BCU 논리(253)를 통하여 S/88 처리기(CPU)에 응답한다. S/88처리기(62)는 BCU 데이터(바이트 카운트, 기억 장치 키, 어댑터 버스 우선순위 및, 주문자/IOA 공간 데이터) 및 DMAC 채널(1)메모리 전송 카운트 데이터를 지역 주소 버스(247)상에 배치한다. 제45e도는 주소 버스상의 명령을 도시하는데, 여기에서 비트(31-08)=007EOO-'DMAC Register-Select'명령이고 비트(07-00)=BCU Select 및 DMAC Channel(1) MTC Select이다.
바이트 카운트, 기억장치 키(CCW로부터 파생된), 어댑터 버스 우선순위 및 주문자/IOA 공간 비트는 S/88 처리기(62)에 의하여 제45f도에 도시된 포맷으로 데이터 버스(223)상에 배치되는데, 여기에서 비트지정은 다음과 같다.
31-27=예약된 비트
26=고 순위 바이트 카운트 비트, 이 비트는 최대 바이트 카운트(4K 바이트)가 전송중인 때에만 1이 될 것이다.
26-16=DMAC Channel(1) MTC 레지스터내에 로드된 바이트 카운트
26-14=BCU 레지스터(220)내에 로드된 바이트 카운트(최대 4096) 및 상기 카운트중 적어도 일부는 이하의 바이트 카운트 작동에서 설명되어질 바와 같은 레지스터(221)내에 로드된다. 버스 어댑터(154)는 4096바이트(바이트 카운트 -1)를 전송하기 위하여 1111 1111 1111의 카운트가 필요하다. 그러므로, BCU(156)는 바이트-오프셋 비트(15-14 ; 64바이트 블록내의)와 함께 2배단어 경계 비트(26-16)를 버스 어댑터(154)에 제공하기 전에 일단 이러한 2배단어 경계 비트(26-16)를 감소시킬 것이다.
15-14=저 순위 바이트 카운트 비트(BCU ; 156). 이 비트는 2배단어 경계로부터 1이 마이너스된 바이트 오프셋(버스 어댑터 조건용)을 나타낸다. 이 비트가 2배단어만을 전송하기 때문에, 상기 비트는 DMAC(209) 또는 BCU(156)에 의하여 이용되지 않는다. 이 비트는 S/370 BSM(162)에 제공하기 위하여 버스 어댑터(154)로 통과한다.
13-12=어댑터 버스 채널 우선순위
11-18=기억장치 키
07 =주문자/IOA 공간 비틋
06 =S/88 처리기는 하나의 추가 지역 기억장치 접근이 필요하다는 것을 표시하기 위하여 상기 비트(1)를 활성화시킨다. 상기는 시작 S/370 기억 주소가 2배단어(32비트) 경계상에 있지 아니한 때에 일어난다. 모든 BCU 접근이 2배단어 경계에서 시작되어야 하기 때문에, 제1의 접근은 지정된 시작주소에 있는 바이트와 상기 2배단어 주소에 포함된 선행 바이트를 포함할 것이다. 상기 선행 바이트는 버려진다.
05-00=예약된 비트
DMAC(209)는 데이터 버스의 고 순위 단어(즉, 바이트 카운트)를 Channel(1) MTC 레지스터내에 로드시킬 것이다. BCU(156)는 데이터 버스 내용을 다음과 같이 포획할 것이다. 비트 24-14-BSM Read Select Up Byte Counter(220)로 비트 13-06-어댑터 버스 채널(0) A/D 레지스터(209)로, 그러나 재배열된다.
하나의 S/88 처리기 기계 사이클내에서 발생한 2배 단어 저송에 대해서는, 주소가 2배단어 경계상에 있어야 한다. DMAC Channel(1) MTC의 주소가 2배단어 경계상에 있지 않기 때문에(비트 07-00=01001010), BCU(156)와 DMAC(209)를 하나의 S/88 처리기 명령과 함께 로드하기 위하여 다음과 같은 행동이 일어난다. BCU(156)는 주소 비트(1)를 반전시킬 것이고 이를 다른 레지스터 선택 비트와 함게 DMAC(209)에 제공한다. 이에 의하여 Channel(1)용 MTC 레지스터가 적절히 선택e되어질 수 있다.(주소 비트 07-00=01001010). 이러한 배열은 또한 Chnnel(2) I/O 판독 작동용 MTC 레지스터의 선택에도 응용한다. DMAC(209)는 회선(265)상의 'DTACK'신호를 가지고 BCU 논리(253)에 응답한다. BCU 논리(253)는 상기 'DTACK'신호를 S/88 처리기(62)에 대한 회선(266a,b)상의 32비트 포트 'DSACK'응답으로 변환시킨다. 전송 바이트 카운트는 잔여 데이터 베스 데이터와 함께, 후속 'BSM READ SELECT UP' 명령중 버스 어댑터(154)에 제공될 것이다. BSM 판독 경계 카운터(221) 또는 BSM 판독 선택 바이트 카운터(22 0)는 Channel(0)판독 명령 레지스터(214)내에 로드될 것이다.
그다음에, S/88 처리기(62)는 버스(247)상에 제45g도에 도시된 포맷으로 'BSM READ SELECT UP' 명령을 발생시킬 것인데, 여기에서 비트 31-00=007E0108='BSM Read Select Up'명령이다.
S/88 처리기(62)는 또한 BSM 시작 주소를 제45h도에 도시된 포맷으로 데이터 버스(223)상에 배치시킬 것인데, 여기에서 비트 23-0=기억장치(162)내의 시작 주소이다.
버스(223)상의 BSM 시작주소는 A/D 레지스터(219) 및 BSM 판독 주소(Read Address) 레지스터(231)내에 기억된다. 이 주소는 이후에 S/370 기억장치(162)에 제공하기 위하여 버스 어댑터(154)로 보내질 것이다. 그다음에, BCU(156)는 S/88 처리기(62)로의 'DSACK'회선(266a,d)을 활성화시킨다. 이점에서, S/88 처리기는 해제되고 더 이상 이 작업에 관여하지 않는다.
BCU(156)는 'BSM SELEC UP'(Read) 명령을 버스(290)를 통하여 레지스터(214)내에와 제45i도에 도시된 명령/상태 버스(249)상에 배치하는데, 여기에서 비트 0-1=11, 'BSM Select Up'명령(Read), 및 비트 2-7=1이 마이너스된 필드 길이(최대 64바이트)
상기 필드 길이는 사전에 레지스터(220 또는 221)로부터 레지스터(214)내로 전송된다. 레지스터(219)는 주소 정보를 제45j도에 도시된 포맷으로 버스(250)상에 배치하는데, 여기에서
비트 0-3=기억장치 키
비트 4 =1
비트 5-6=우선순위(버스 어댑터(154) 대 처리기 버스(170)
비트 7 =1=주문자 구역 접근(Customer Area Access), 0=마이크로코드 구역 접근(Microcode Area Access)
비트 8-31=기억장치(162)내의 데이터 필드의 제1바이트의 주소
그 다음에, BCU 논리(253)는, 필드 길이 데이터 명령을 어댑터 명령 레지스터(124 ; 제13도)내에, 키 주소 데이터 명령을 레지스터(122)내에 래치하기 위하여, 버스 어댑터(154)로의 회선(262a)상에 TAG UP을 출현시킨다. 버스 어댑터(154)는, 데이터가 유효하지 아니한 경우에는, BCU 논리(253)에 TAG DOWN을 출현시킨다. BCU 논리(253)는 TAG DOWN이 드롭될 때까지 대기한다. 버스 어댑터(154)는 어댑터 버스 BSM SELECT UP 명령을 제45k도 및 제45l에 도시된 바와 같은 처리기 버스 I/O 메모리(Memory) 명령으로 변환시키는데, 여기에서 처리기 주소/데이타 버스(170)상의 비트는 다음과 같이 표현되고 ;
0=0=I/O 메모리 명령(I/O Memory Command)
1=1=인출 작업
2-7=필드 길이
8-31=실 바이트 주소
처리기 키/상태 버스 비트는 다음과 같이 표현된다.
0-3=기억장치 키
4=0=동적 번역 없음
주소지정된 데이터가 S/370 메모리(162)로부터 리턴되었을시에, 상기 데이터는 버스 어댑터 데이터 버퍼(259 ; 채널 0)에 래치된다. 그다음에, 버스 어댑터(154)가 어댑터 버스 채널(0)상의 TAG DOWN 회선(262b)을 비활동화시킨다. 이조건은 BCU(156)에 경보를 발하여 2바이트(16비트)의 데이터를 래치시키고 클럭 좌 및 클럭 우 신호를 통하여 Channel 0판독 버퍼(Read Buffer ; 226, 4바이트)내의 또다른 21바이트가 즉시 뒤따르게 한다. 그 다음에, BCU(156)는 그 'REQ 1'회선(263b, DMAC Channel 1 요구)를 DMAC(209)에 대해 활성화시킨다. DMAC(209)는 지역 버스 사이클을 수행하기 위하여 회선(269)상의 'BUS REQ'를 BCU 지역 버스 조정 논리(216)에 발한다.
회선(268)상의 버스 허가 신호가 BCU 조정 논리(216)로부터 리턴되었을 때, DMAC(209)는 Channel(0)판독 버퍼(259) 대 지역 기억장치(210) 작동을 시작한다. DMAC는 회선(264b)상의 ACK 1(DMAC Channel 1긍정응답)을 BCU 논리(253)에 리턴시키고, DMAC 채널1레지스터(MAR)의 지역 기억주소를 버스(248), 래치(233), 주소 버스(247) 및, 멀티플렉서(232)를 통하여 기억장치(210) 주소 지정 회로(도시되지 않음)에 게이트시킴으로써 이 작동을 행한다. BCU 논리(253)는 회선(264b)상의 ACK 1신호와 회선(210a)상의 RAM 선택 신호를 이용하여 버퍼(226)로부터의 제1의 데이터(4바이트)를 MAR 레지스터에 의해 명시된 주소에서 기억장치(210)내에 기억시키기 위하여 데이터 버스(223)에 게이트시킨다. DTACK가 BCU 논리(253)에 의하여 회선(265)상에 리턴되면, DMAC(209)가 DTC(데이타 전송 완료)를 회선(267)상에 출현시킨다.
BCU(156)는 레지스터(220)내에 유지되어 왔던 바이트 카운트(MTC)를 감소시키고 ; 채널 1 MAR을 증가시키며 ; 버스 어댑터(154)로부터 수신되는 데이터의 각 2배단어(4바이트)용의 주소 레지스터(231)를 64바이트까지 감소시킨다. 전술된 순차는 BCU 명령의 각 4바이트(64까지)별로 반복된다. 전송 바이트 카운트가 64보다 더 크면, 그다음에 BCU(156)는 그 다음의 64바이트를 인출하기 위하여 새로운 BSM 시작 주소를 레지스터(231,219)를 통하여 버스 어댑터(154)에 제공할 것이다. 레지스터(231)는 전술된 바와 같은 각 4바이트 전송별로 감소되었기에, 적당한 그다음 시작 주소를 갖는다. 버스 어댑터(154)는, 명령에 의하여 요구된 전체 데이터 전송(4KB까지)이 완료될 때까지, 각 시작 주소별로 64바이트의 데이터를 버퍼화시킨다.
BCU(156)는 버스 어댑터 버퍼(259)가 비어있는 경우에는, 그다음 유효 데이터 단어가 수신될 때까지 DMAC(209)를 유혹 상태로(REQ를 출현시키지 아니함으로써) 남겨둘 것이며 ; 태그 다운의 상태는 버퍼(259)내의 유효 데이터의 이용가능성을 반영한다. REQ/ACK 사이클은 바이트 카운트가 제로가 될 때까지 계속되며, 이때 DMAC(209)는 S/88 처리기(62)로의 회선(258)상에 IRQ를 출현시킨다. 상기는 S/88 처리기(62)에 경보를 발하여 적당한 처리를 위해 S/370 기억장치(162)로부터의 데이터 판독을 포함하는 지역 기억장치 버퍼를 판독하게 한다.
(b) I/O 판독 작업(I/O Read Operation : 지역 기억장치 210 대 S/370 기억장치 162)
I/O Read Operation(EXEC 370 제어하에)은 기억장치(210)내의 I/O Read 대기행렬내에 적어도 하나의 엔트리가 존재할시에 시작된다. S/88 처리기(62)는 지역 버스가 DMAC(209)에 의하여 이용되지 아니하는 경우에, 상기 지역버스의 제어를 얻는다. S/88 처리기(62)는 제45m도에 도시된 정보를 247 버스상에 배치시키는데, 여기에서 비트 31-08=007E00=DMAC 레지스터 선택(Register Select) 명령, 비트 07-00=DMAC Channel 2 M emory Address Register(Low)Select이며) 시작 주소(기억장치(210)의 버퍼의)를 제45n도에 도시된 바와같은 데이터 버스(223)상에 배치함으로써(여기에서 비트 31-16=지역 버퍼 I/O 판독 데이터의 시작 주소, 비트 15-00=예약)지역 버퍼 I/O 판독 시작 주소를 DMAC Channel 2 메모리 주소 레지스터(MAR)내에 세트시킨다.
고 순위 데이터 버스 비트(31-16)는 Channel 2 메모리 주소 레지스터의 저 순위(15-00) 비트내에 로드 될 것이다. MAR의 고 순위 비트(31-16)는 초기화 중 제로로 세트된다. DMAC(209)는 회선(265)상의 DTACK 신호에 대해 응답하는데, 이 신호는 S/88 처리기(62)로의 회선(266a,b)상의 DSACK 신호로 변환된다. 그다음에, S/88 처리기(62)는 선택된 지역 기억장치 I/O 판독 버퍼의 시작 주소를 이용하여, I/O 제어기(20 또는 24)로부터 S/88 프로그램 제어를 통하여 지역 기억장치(210)로 데이터(4KB까지)를 이동시킨다.
데이터 전송이 완료되었을 때, S/88 처리기(62)는 DMAC Channel 2 메모리 전송 카운트 선택을 제45 O도에 도시된 포맷으로 주소버스(247)상에 배치하는데 여기에서 비트 31-08=007E00=DMAC Register Select 명령, 비트 07-00=BCU 및 DMAC Channel 2 MTC Select
바이트 카운트, 기억장치 키(CCW로부터 파생된), 어댑터 버스 우선순위 및, 주문자/IOA 공간 비트는 S/88 처리기(62)에 의하여 제45p도에 도시된 포맷으로 데이터 버스(223)상에 배치되어질 것인데, 여기에서
비트 31-27=예약 비트.
26 =고 순위 바이트 카운트 비트.
이 비트는 최대 바이트 카운트가 전송되고 있을 때에만 1일 것이다.
26-16=DMAC 채널 2 MTC 레지스터의 바이트 카운트
26-14=BCU(156)내에 로드된 바이트 카운트(최대 4096).
버스 어댑터(154)는 4096 바이트(바이트 카운트 -1)를 전송하기 위하여 1111 1111 1111의 카운트를 필요로 한다. 그러므로, BCU는 2배단어 경계 비트를 바이트-오프셋 비트(15-14 ; 64바이트 블록내의)와 함께 버스 어댑터(154)에 제공하기 전에 일단 이러한 2배단어 경계 비트(26-16)를 감소시킨다.
15-14=저 순위 바이트 카운트 비트.
이 비트는 2배 단어(32비트) 경계로부터 1을 마이너스한 바이트 오프셋(버스 어댑터 조건용)을 나타낸다. 이 비트는 상기 비트가 2배단어만을 전송하기 때문에, DMAC(2090 또는 BCU(156)에 의하여 이용되지 않는다. 상기 비트는 S/370 BSM(162)로의 제공을 위해 버스 어댑터(154)로 통과된다.
13-12=어댑터 버스 채널 우선순위
11-08=기억장치 키
07 =주문자/IOA 공간 비트
06-00=예약 비트
DMAC(209)는 데이터 버스(223)의 바이트 카운트를 채널 2MTC 레지스터내에 로드할 것이다. 상기 BCU(156)는 전술한 명령이 주소 버스(247)상에 나타날시에, 데이터 버스 내용을 포획할 것이다. 비트(26-16)는 BSM 기록 선택 바이트 카운트(222)내에 기억된다. 비트(13-07)는 어댑터 버스 채널 1 A/D 레지스터(227)의 고 순위 바이트내에 기억된다. DMAC는 회선(265)상의 DTACK 신호를 가지고 BCU 논리(253)에 응답한다. 논리(253)는 DTACK 신호를 S/88 처리기(62)로의 회선(266a,b)상의 32비트 포트 DSACK 응답으로 변환시킨다. 전송 바이트 카운트는, 잔여 데이터 버스 데이터와 함께, 후속의 BSM 기록 선택 명령중 버스 어댑터(154)에 제공될 것이다. BSM 기록 경계 카운터(224 ; 최종 전송은 제외) 또는 BSM 기록 바이트 카운터(222 ; 최종 전송)의 카운터가 어댑터 채널(1) 기록 명령 레지스터(225)내에 로드된다.
그다음에, S/88 처리기(62)는 BSM 기록 선택 명령을 제45q도에 도시된 포맷으로 지역 주소 버스(247)상에 발생시키는데, 여기에서
비트 31-00=007E104=BMS 기록 선택 명령
S/88 처리기는 또한 BSM 시작 주소를 제45r도에 도시된 포맷으로 데이터 버스(223)상에 배치하는데, 여기에서
비트 31-24=예약 비트
23-00=BSM 시작 주소
데이터 버스(233)상의 BSM 시작 주소는 Channel 1 A/D 레지스터(227) 및 BSM 기록 주소 레지스터(228)의 저 순위 바이트에 의하여 포획될 것이다. 이러한 주소는 이후에 S/370 기억장치(162)로의 제공을 위해 버스 어댑터(154)로 보낼 것이다. (이하에서 알수 있듯이) 그다음에, BCU(156)는 S/88 처리기(62)로의 DSACK 회선(266a,b ; 32비트 포트)를 활성화시킨다. 이 점에서, S/88 처리기(62)는 해제되고 더 이상이 작동에 관여하지 않는다.
BCU 논리(253)가 BSM 선택 명령을 발하고, 비트 "01"를 버스(290)를 통하여 명령 레지스터(225)의 고순위 비트내로 게이트시키고 레지스터(225)의 명령 및 필드 길이를 제45s도에 도시된 포맷으로 버스(252)상에 배치하는데, 여기에서
비트 0-1=BSM 선택 명령(기록)
2-7=1을 마이너스한 필드 길이(최대 64바이트)
레지스터(227)의 내용이 제45t도에 도시된 포맷으로 주소/데이타 버스(251 ; 2개의 서브 사이클로)상에 배치되는데, 여기에서
비트 0-3=기어장치 키
4 =1
5-6=우선순위(버스 어댑터 대 처리기 버스)
7 =1=주문자 구역 접근
0 =마이크로코드 구역 접근
8-31=데이타 필드내의 제1의 바이트의 S/370 주소 명령, 필드 길이는 어댑터(154)의 레지스터(125)내에 기억된다. 키/주소 데이터는 SYNC 레지스터(113)을 통하여 어댑터(1540의 레지스터(123)내에 기억된다. BCU 논리(253)는 DMAC 채널(2)로의 회선(263c)상의 REQ2 신호를 활성화시킨다. DMAC(209)는 I/O 버퍼 시작 주소를 MAR로부터 버스(248), 래치(233), 버스(247), 멀티플렉서(232)를 통하여 기억장치(210)로 보내어 데이터의 2배단어를 기억장치(210)로부터 A/D 레지스터(227)로 전송한다. ACK 2(DMA Channel 2 긍정응답)는 회선(264c)상에 출현된다. 이에 의하여 어댑터(154)로의 회선(262a)상에 Tag Up이 야기된다.
그다음에, 어댑터(154)는 레지스터(113)를 통하여 2개의 서브사이클내에 데이터의 2배단어를 레지스터(227)로부터 버스 어댑터 버퍼(260)로 전송한다. Tag Up 명령에 뒤따르는 REQ/ACK 신호의 기록 순서는 데이타의 각 2배단어를 전송하도록 반복된다. BCU(156)는 레지스터(222,224)내의 바이트 카운트, 레지스터(228)내의 주소 및, 버스 어댑터(154)에 제공되는 각 2배단어(32비트)용 DMAC 채널 2의 MTC를 64바이트까지 감소시킨다.
전송 바이트 카운트가 64보다 더 큰 경우에는, 그다음에(Write Operation에 관련하여 전술된 바와 같이) BCU(156)는 그다음 64바이트용 새로운 시작 주소를 제공한다. 버스 어댑터는 각 시작 주소별로 64바이트 데이터를 버퍼화시킨다. 이 순차는 레지스터(2220내의 바이트 카운트(최대 4KB)가 제로로 될 때까지 반복될 것이다.
버스 어댑터(260)가 채워지면, BCU(156)는 버스 어댑터가 Tag Down 회선(262c)을 통하여 버퍼 가용지시를 제공할 때까지 기록 순차를 정지시킬 것이다.
버스 어댑터(154)는 어댑터 버스 BSM Select Up 명령을 제45u도 및 제45v도에 도시된 포맷에 따라 처리기 버스(170)와 키/상태 버스상의 S/370 처리기 Bus I/O Memory 명령으로 전환시키는데, 여기에서
처리기 버스 비트(Processor Bus Bit)
0=0=I/O 메모리 명령(I/O Memory Command)
1=0=기억장치 작동
2-7=필드 길이
8-31=실 바이트 주소
키/상태 버스 비트(Key/Status Bus Bit)
0-3=기억장치 키
4=0=동적 번역 없음(NO Dynamic Translation)
모든 데이터가 전송되었을 때(바이트 카운트=0), DMAC(209)는 S/88 처리가 우선순위 엔코더(212)로의 인터럽트 회선(258a)을 활성화시킨다.
(c) S/370 고 우선순위 메시지 전송 순차 흐름(S/370 HIGH PRIORITY MESSAGE TRANSFER SEQUENCE FLOW)
모든 고 우선순위 메시지 전송은 I/O 서브시스템(S/88 처리기 62)에서 생긴다. DMAC 채널(3)은 데이터 전송(16 바이트)을 수행하기 위하여 S/88 처리기(62)에 의하여 설정될 것이다. BCU(156)는 데이터 통신(Q Select Up 명령)용 어댑터 버스 채널(1)을 이용할 것이다.
BCU(156)는, S/88 처리기(PE62)가 채널 3의 레지스터 NTC에 DMAC 메모리 전송 카운트 로드를 수행할 시에, 고 우선순위 메시지 요구를 검출한다. 그 결과로서, BCU(156)는 채널(1)의 어댑터 버스(252)상에 S/370 PE85에 대한 Q Select Up 명령을 발생시킨다. 상기 요구가 검출되었을 시에, S/370 I/O 판독 데이터 전송(어댑터 버스 채널 1)이 진행중이면, 그후에 BCU(156)는 상기 요구를 인수하기 전에 현행 64-바이트 블록 전송이 완료될 때까지 대기한다.
어댑터 버스 채널(1)상에 I/O 활동이 없는 경우에는, 그다음에 상기 요구가 즉시 처리될 것이다.
상기 고 우선순위 메시지 전송이 이제 더 상세히 설명될 것이다. PE(62)는, DMAC(209)에 의해 지역버스(223,247)가 이용되고 있지 아니한 경우에는, 상기 지역버스(223,247)의 제어를 얻는다. 그다음에, PE(62)는 메시지 데이터를 프로그램 제어를 통하여 지역 기억장치(210)내에 기억시킨다. PE(62)는 제45W도에 도시된 포맷으로 지역 주소 버스(247)상에 정보를 배치함으로써 지역 버퍼 메시지 시작 주소를 DMAC 채널(3) 메모리 주소 레지스터(MAR)내에 세트시키는데, 여기에서 비트 31-08=007EOO=DMAC 레지스터 선택 명령(DMAC Register Select command)
70-00=DMAC 채널(3) 메모리 주소 레지스터(Low) 선택(DMAC Channel 3 Memory Address Req(Low) Select)
메모리 주소 레지스터용으로 예정된 지역 버퍼 메시지 데이터의 시작 주소는 제45x도에 도시된 포맷으로 데이터 버스(223)상에 배치되는데, 여기에서
비트 31-16=기억장치(210)내의 지역 버퍼 메시지 데이터의 시작 주소
15-00=예약 비트
고 순위 데이터 버스(비트 31-16)는 DMAC 채널(3) 메모리 주소 레지스터(MAR)의 저순위(비트 15-0) 부분내에 로드될 것이다. MAR의 고순위 비트(31-16)는 초기화중 제로에 세트된다. DMAC(209)는 회선(265)상의 DTACK 신호를 가지고 응답하는데 이 신호는 S/88 처리기(62)에 대한 BSU 논리(253)를 경유하여 회전(266a,b)상의 16-비트 포트 DSACK 신호로 변화된다.
그다음에, S/88 처리기(62)는 명령을 제45y도에 도시된 포맷으로 지역 주소 버스(247)사에 배치하는데, 여기에서,
비트 31=08=007EOO=DMAC Register Select 명령
07-00=BCU DMAC 및 채널(3) MTC 선택
바이트 카운트, 기억장치 키 및 주문자/IOA 공간 비트는 S/88 처리기(62)에 의하여 제45z도에 도시된 포맷으로 데이터 버스상에 배치되는데, 여기에서
비트 31-20=예약 비트
19-16=전송 바이트 카운트 비트. 이 비트는 DMAC(209) 및 BCU(156)내에 로드된다. 상기 비트는 DMAC 및 BCU(156)에 대한 2배단어 카운트(최대 64 바이트)를 나타낸다.
15-12=제로
11-08=기억장치 키
07=주문자/IOA 공간 비트
06-00=예약 비트
DMAC(209)는 데이터 버스(223)의 고 순위 단어(바이트 카운트)를 채널(3)메모리 전송 카운트 레지스터(MTC)내에 로드할 것이다. BCU(156)는, 이 특수한 명령어 비트(19-16)를 Q Select Up 카운터(254)내에 기억시키고 비트(11-07)를 채널(1) A/D 레지스터(227)내에 기억시킴으로서 주소 버스(247)상에 나타날 때, 데이터 버스 내용을 포획할 것이다.
DMAC(209)는 DTACK 신호를 가지고 논리(253)에 응답하는데, 논리는 상기 신호를 PE(62)에 대한 회선(226a,b)상의 32 비트 포트 DSACK 응답으로 변환시킨다. 상기 작용은 BCU(156)에 경보를 발해 지역 기억장치(210)로부터 S/370 BSM(162)로의 고 우선순위 메시지 전송을 개시하게 한다. 전송 바이트 카운트는, 제45z도에 도시된 추가 데이터와 함께, BCU가 Q Select Up 명령을 만들어내는 동안, 버스 어댑터(154)에 제공된다. Q Selact 카운터(254)는 채널(1) 기록 명령 레지스터(225)의 비트(4-7)내에 로드된다. BCU(156)는 Q Select Up 명령을 버스(290)를 통하여 레지스터(225)내에 배치하고 ; 레지스터(225)내의 데이터는 제45AA도에 도시된 포맷으로 어댑터 버스(252 ; 채널 1)상에 배치되는데, 여기에서
비트 0-1=Q Select Up 명령(기록)
2-7=1을 마이너스한 필드 길이(16 바이트)
레지스터(227)를 통하여 주소/데이타 버스(251)상에 배치된 정보는 제45AB도에 도시되는데, 여기에서
비트 0-3=기억장치 키
4-6=제로
7=1=주문자 구역 접근
0=마이크로코드 구역 접근
8-31=무관심
버스(252,251)상의 데이터는 어댑터 레지스터(125,123)내로 각기 전송된다. 그다음에, BCU 논리(253)는 REQ 회선(263d ; DMA Channel 3 요구)를 활동시킨다. DMAC(209)는 I/O 버퍼 시작 주소(MAR로부터)를 지역 버스(247)상에 배치하고, ACK(DMAC Channel 3 긍정응답)을 회선(264d)에 출현시킨다. 그다음에, BCU(156)는 데이터의 최초의 4 바이트를 SYNC 레지스터(113)를 통하여 2개의 서브사이클내에 지역 기억장치(210)내의 주소지정된 I/O 버퍼로부터 어댑터 버퍼(260)로 전송한다. 그다음의 4 바이트 블록은 Tag Up 명령에 의하여 지시된 순차에 따라 버스 어댑터(154)와, DMAC에 대한 REQ/ACK 회선(263d,264d)으로 전송된다. BCU(156)는 버스 어댑터(154)에 제공되는 각 2배단어(32 비트)별로 바이트 카운트를 감소시킨다.
버스 어댑터(154)는 Q Select Up 명령을 S/370 처리기 버스 I/O 메모리 명령으로 변환시켜서, 메시지를 기억장치(162)의 구역(189)으로 송신하고 ; 상기 명령의 제45ac도에 도시되는데, 여기에서
PROC BUS 170비트
0=0=I/O 메모리 명령
1=0=기억 작동
2-7=필드 길이(최대 64 바이트)
8-31=실 바이트 주소(어댑터 레지스터 110,112로부터) 처리기(85) 키/상태 버스는 제45ad도에 도시된 포맷으로 된 데이터를 갖는데, 여기에서
비트 0-3=기억장치 키
4=동적 번역 없음(NO Dynamic Translation)
모든 메시지 데이터가 버스 어댑터(154 ; 바이트 카운트=0)에 전송되어졌으면, DMAC(209)는 S/88 처리기 우선순위 엔코더(212)로의 그 인터럽트 회선(258a)을 활동시킨다. DMAC(209)는 그 데이터 버스(248)의 최하위 바이트로부터의 인터럽트 벡터를 S/88 처리기 데이터 버스(161D), 드라이버 수신기(234)를 통한 비트(23-16) 및, 지역 데이터 버스(223)의 비트(23-16)에 제공한다. DMAC는 16 비트 DSACK를 PE(62)로 리턴시킨다.
(d) BCU 상태 명령(BCU Status Command)
Read BCU Statrs Command는 BCU(156)의 현재 상태를 읽기 위하여 S/88 처리기에 의하여 발해질 수 있다. 이 명령은 S/88 처리기(62)에 의하여 제45ae도에 도시된 포맷으로 주소 버스(247)상에 배치되는데, 여기에서
비트 31-00=007E01OC-판독 BCU 상태 명령(Read BCU Sratus Command)
BCU(156)는 제45af도에 도시된 상태를 데이터 버스상에 배치하고, DSACK(32 비트 포트)를 버스(266) RE62상에 리턴시킨다. 제45af도의 비트는 다음을 나타낸다.
31-29=어댑터 버스 채널(0) 상태-키검사, 주소 검사
28=1=최종 데이터 사이클
0=기타 모든 데이터 사이클
27-26=어댑터 버스 채널(1) 상태-키검사, 주소 검사
25=버퍼 사용불가(Q Select Up 명령)
24=1=최종 데이터 사이클
0=기타 모든 데이터 사이클
23=어댑터 버스 채널(0) Tag Down
22=어댑터 버스 채널(1) Tag Down
21=BSM Read Sync Check
20=BSM Read Select Up Request/Pending Latch
19=BSM Write Select Up Request/Pending Latch
18=Q Select Up Request/Pending Latch
17=Read Mailbox 진행중
16=BSM Read 진행중
15=BSM Write 진행중
14=Q Select Up 진행중
BCU 상태 비트(21 ; BCM Read Sync Check)는 S/88 처리기(62)에 의하여 판독된 후, 리세트될 것이다. 이 비트는 BSM Read 작동이 종료하였을 때, 버스 어댑터(154)와 BCU(156) 바이트 카운트가 일치하지 아니함을 표시하며 ; 따라서 에러가 검출되어 재동기회가 필요하게 된다. BSM Write 작동을 위하여, 버스 어댑터(154)는 Tag Down(262b)을 작동시켜 모든 데이터가 수신되었음을 표시한다. 그다음에, Tag Down(262b)은 버스 어댑터(154)에 의하여 비활성될 것이며, 이때, 상태 표시가 BCU(156)에 제공되고 상기 BCU에 의하여 포획될 것이다. Tag Down이 100us 내에 비활동되지 않으면, BCU(156)는 버스 어댑터(154)로의 소거 회선(도시되지 않음)을 작동시킬 것이다. 그다음에, 이에 의하여 버스 어댑터(154)가 BCU(156)로부터 자신을 분리시킬 것이다. Tag Down(262b)은 명령/상태(Command/Status) 버스(252)를 통하여 BCU(156)에 보고될 수 없는 어떤 에러를 표시하기 위해서도 어댑터(154)에 의해 이용된다.
(e) 프로그램된 BCU 리세트(Programmed BCU Reset)
PE(62)에 의해 발해진 프로그램된 BCU 리세트는 BCU(156)에 대한 Power on Reset과 동일한 기능을 수행한다. 이러한 리세트는 임의의 비정상 상태의 BCU를 소거하기 위하여 언제든지 발해질 수 있다. 그러나, 지역 버스 사이클(007EXXXX 디코드)이 하드웨어에 의해 안식되어야 상기 명령을 실행한다.
상기 명령은 S/88 처리기에 의하여 제45ag도에 도시된 포맷으로 지역 주소 버스(247)상에 배치되는데, 여기에서 비트 31-00=007E0000-리세트 BCU 명령데이타 버스 내용은 BCU(156)에 의하여 무시될 것이다. BCU(156)은 DSACK(32 비트 포트)를 S/88 처리기(62)로의 회선(266a,b)상에 리턴시킨다.
카운트, 키 및, 데이터 트랙 포맷 에뮬레이션(COUNT,KEY,AND DATA TRACK FORMAT EMULATION, 제46a 내지 k도)
S/88 처리기 및 I/O 장치에 의해 S/370 I/O 프로그램이 수행될 수 있는 양호한 방법을 예시하기 위해, 예로서 S/88 상의 S/370 DASD의 에뮬레션이 설명될 것이다. S/370은 목적(Object) 시스템이라 하고 S/88은 목표(Target) 시스템이라 한다. 목적 시스템용의 DASD(Direct Access Storage Device) 데이터는 목표 시스템에 의해 에뮬레이션 포맷(Emulation Format)으로 유지된다. S/370 처리기내에서 실행되는 S/370 코드는 목적 시스템 소프트웨어라 한다. 이를 4부분으로 나누어 설명하면 다음과 같다.
1) 목적 시스템-기준 S/370 직접 접근 기억장치 프로덕트에 의하여 이용되는 카운트, 키 및, 데이터 기록 포맷의 간단한 설명을 제공한다.
2) 목표 시스템-DASD 프로그램 인터페이스 모델을 설명한다.
3) 에뮬레이션 형식-목적 시스템 필드를 이용된 에뮬레이션 포맷으로 매핑을 설명한다.
4) 에뮬레이션 기능-목적 시스템 기능을 에뮬레이션 기능으로의 매핑을 설명한다.
1. 목적시스템(OBJECT SYSTEM)
DASD의 물리적 매체가 실린더내로 분할되고 상기 실린더를 트랙으로 나눈다. 각 매체의 수와 그 용량은 DASD의 형태 및 모델에 따라 달라진다. 각 실린더는 2 바이트 실린더 번호(CC)에 의하여 프로그램 주소지정 가능하고 하나의 실린더내의 개별 트랙은 분리된 판독/기록 헤드에 의하여 접근되는데, 각 헤드는 2바이트 헤드 번호(HH)에 의하여 주소지정이 가능하다. 트랙의 물리적 위치는 그 실린더와 헤드 번호에 의하여 주어지고 따라서 4 바이트 트랙 주소(CCHH)에 의하여 명시된다. 각 트랙에는 홈 주소, 트랙 기술어(기록 0) 및, 하나 또는 그 이상의 데이터 기록을 포함한다. 각 기록의 크기가 프로그램 가능하고, 홈 주소와 기록 크기가 트랙상에 기록된 때에, 이 트랙은 포맷화되었다고 말한다. 모든 트랙은 그 트랙 인덱스로부터 그다음 트랙 인덱스로 포맷화된다.
제46a도는 이러한 트랙의 하나를 설명한다.
물리적 매체상에 기록된 정보의 기본 단위는 8개의 비트로 구성되는 데이터 바이트이다. 한그룹의 데이터 바이트는 하나의 구역을 구성하고, 상기 장치는 이러한 구역을 그 사이에 갭을 기록함으로써 이 구역을 분리시킨다. 각각 기록은 2개(카운트, 데이터)또는 3개(카운트, 키, 데이터) 구역으로 구성되는 반면, 홈 주소는 하나의 구역만으로 구성된다. 목적 시스템 기록을 구성하는 3개의 구역은 카운트, 키(선택적) 및, 테이타이다.
카운트 구역은 다음의 필드를 포함한다.
Figure kpo00003
기록 0(트랙 기술어)은 언제나 홈 주소 구역 다음에 오는 첫 번째 기록이다. 양호한 프로그래밍 시스템에 있어서, 기록(0) CCHH 필드는, 트랙이 결함있는 것처럼 플래그된 경우에, 대안의 트랙을 정의한다. Key Length는 통상적으로 기록(0)에 대해 제로이다. 기록(0)은 하나 또는 그 이상의 데이터 기록에 뒤따를 수도 있다. 키 구역은 선택적이며, 키 구역이 있으면, 이 구역은 1 내지 255 바이트를 포함할 수도 있다. 기록의 수는, Format Write CCW 명령어가 카운트, 키 및, 데이터 구역을 기록하는 때에 결정된다. 기록이 포맷화되어진 후, 유저 데이터 구역은 트랙상의 인접 기록을 파괴하지 않고도 판독 및/또는 재기록(다른 CCW 명령을 이용하여)될 수도 있다. 기록이 재재포맷화되면, 동일한 트랙상의 이 기록 다음에 오는 기록은 파괴된다.
2. 목표 시스템(TARGET SYSTEM)
DASD(제46b도)는 1부터 순차적으로 번호가 부여된 4096 바이트 블록 데이터를 포함하는 화일의 형태로 S/88 마이크로코드에 제공된다. 에뮬레이션 매카니즘은 목적 시스템 포맷 및 기능을 사용가능한 목표 시스템 포맷 및 기능 조합으로 맵시킨다.
3. 에뮬레이션 포맷(EMULATION FORMAT)
목적 시스템내의 서로 다른 DASD 형태 및 모델의 물리적 파라미터는 변한다. DASD 형태 및 모델 번호는 여러 가지 파라미터와 함께 목표 시스템 파일의 제1의 데이터 블록(INFO)내에 보관된다(제46c도). 파일의 밸런스는 에뮬레이트된 목적 트랙 데이터를 포함한다(제46c도). 각 트랙용 데이터는 정수의 데이터 블록내에 유지된다. 각 트랙용으로 필요한 목표 시스템 데이터 블록의 수는 제1의 데이터 블록내에 보관된 하나의 피라미터이다. CCHH=0000으로 시작되는 목적 시스템내의 각 트랙은 목표 시스템 파일내에 순차적으로 보관된다. 그 시작 블록 번호는 INFO 블록내에 보관된 CCHH 및 목적 디스크 치수가 주어지면 계산될 수도 있다.
각 에뮬레이트된 트랙(제46d도)은 상기 트랙상에 현재 존재하는 기록의 디렉토리, 디렉토리 헤더 및 각 기록별 유저 데이터(키,데이타)를 포함한다. 디렉토리는 특별 기록용 데이터의 위치를 찾아내고, 기록 또는 키 작동에 대한 탐색을 수행하고, 트랙상의 최종 기록에 접근하고, 트랙 오버플로를 조정하는데 이용된다.
목적 시스템 데이터는 에뮬레이션 환경내에서는 3가지 방식, 즉 유지, 묵시적 보유 또는 비보관 중 하나의 방식으로 다루어진다.
모든 갭은 불필요하며 보관되지 않는다. 데이터의 완전성이 목표 시스템에 의하여 보장되기 때문에, ECC 데이터가 만들어지거나 유지되지 않는다. 목표 시스템에 의해 제공된 프로그램 모델이 모든 고장난 물리적 표면 구역을 제거하기 때문에, 목적 시스템내의 대안의 트랙은 완전무결한 방식으로 실시된다. 상기는 트랙 조건을 표시하는 플래그(Flag) 바이트(F)의 일부가 유지되지 아니라고 목적 시스템 소프트웨어에 의하여 기록된 Flag 바이트는 유효성 검사를 받고 버려진다는 것을 의미한다.
목적 시스템 소프트웨어에 의하여 통과된 CCHH(트랙 주소)는 목표 시스템 DASD 화일내에 에뮬레이트된 트랙의 위치를 계산하는데 이용된다. 상기 CCHH는 이하에 설명된 트랙 헤더내에 보관되지만, 에뮬레이트된 트랙의 카운트 및 홈 주소 구역에 전역에 확산되지 아니한다. 홈 주소는 명시적 구역으로서 보관되지 아니한다. 목적 시스템 소프트웨어에 의하여 또한 통과한 기록 번호(R)는 묵시적으로 유지되고 명시적 데이터로서 나타나지 않는다.
각 기록용 유저 데이터, 선택 키 및 DATA 필드는 트랙 디렉토리 바로 직후의 에뮬레이트된 트랙내에 순차적 방식으로 유지된다(제46d도).
목적 시스템 데이터[F(논리 기록 트랙 오버플로), KL, DL]의 밸런스는 트랙 디렉토리내에 유지된다(제46e도). 디렉토리 엔트리는 F,KL 및 DL외에도 각 기록별 유지 데이터(KEY 및 DATA)에 대한 포인터(P)를 포함한다. R는 디렉토리 엔트리 번호로서 묵시적으로 유지된다. 제46e도는 헤더, 디렉토리 및, 유저 데이터 메이크업 외에도 목표 시스템 4KB 블록으로의 에뮬레이트된 트랙의 매핑을 도시한다. 포인터(P0-P2)는 유저 데이터가 기록(0-2)의 시작 주소(4KB 블록이내)를 가르킨다.
4. 에뮬레이션 기능(EMULATION FUNCTIONS)
이 항은 목적 시스템의 DASD CCW 명령의 일부를 제공함에 있어서 전술된 에뮬레이션 포맷의 사용을 제기한다 ; 제46f도 내지 제46k도는 모두다 판독 및 기록 작동중 목적 시스템 소프트웨어에 의하여 전송된 데이터를 나타낸다. 홈 주소를 포함하는 CCW 작동(ops)에 있어서 제46f도의 F 및 CCHH 값은 계산 및/또는 검사되나, 에뮬레이트된 트랙에는 아무것도 기록되지 않는다.
레코드 0을 포함하는 CCW OPS에 있어서(제46g도), CCHH 및 R 필드는 검사되나, 아무것도 기록되지 아니한다. KL 및 DL 필드는 적당한 디렉토리 엔트리로/로부터 전송된다. 기록 0은 유저 데이터 구역내의 오프셋 제로(offsrt zero)에 있다. Read/Write Record 0는 언제나 헤드를 트랙내의 첫 번째 레코드로 향하게 한다.
카운트를 포함하는 CCW ops은 언제나 헤드를 트랙내의 그다음 레코드로 향하게 한다(제46h도). 키와 데이터를 포함하는 CCW ops에 있어서, 유저 데이터의 위치 및 크기는 디렉토리내에서 찾게된다(제46i도). 카운트, 키 및 데이터를 포함하는 CCW ops은 판독/기록 헤드를 트랙내의 그다음 레코드로 향하게 한다(제46j도). 다중 카운트, 키 및 데이터를 포함하는 CCW ops에 있어서, 처리는 그 다음 디렉토리 엔트리에 대해 시작되고 최종 유효 대렉토리 엔트리까지 계속된다(제46k도).
S/88 및 S/370에 의한 실 기억장치(16)의 공유
1. 서론
하나 또는 그 이상의 S/370 처리기를 위한 실(물리적) 기억장치(16)내의 하나 또는 그 이상의 구역을 "도용"(stealing)하는 것과 기억장치(16)의 관리 및 매핑이 이제보다 상세히 설명될 것이다. 제10도는 S/88 가상 기억장치(106) 및 물리적 기억장치(16) 및, S/370 처리기(21,23 및 25,27 및 29,31)용의 S/370 물리적 기억 영역(162-164)의 할당을 개념적으로 설명한다. 제47도는 S/88 물리적 기억장치(16)로부터의 하나의 S/370 기억영역을 포획하는 방법을 도식적으로 설명한다. 제48a도 내지 제48k도는 S/370 기억 영역을 포획할 수 있도록 매핑이 재어되는 S/88 기억장치 관리에 이용되는 것과 같은 공지된 가상/물리적 소프트웨어 매핑을 설명한다.
기억장치(16)는 4KB 페이지로 분할되고 각 4KB 페이지마다 하나씩, 다수의 기억장치 맵 엔트리(mme)가 전체 기억장치(16)를 함께 맵시키는 mme 어레이(제48a도)내에 포함된다.
용도가 지정되지 아니한 페이지에 대응하는 엔트리는 리스트내의 이전 엔트리와 그다음 엔트리의 물리적 페이지 번호(포인터)를 각 엔트리(제48b도)내에 포함시킴으로써 "프리 리스트"(freelist ; 즉, 기억장치 할당 대기행렬)내에 함께 묶여진다. S/88 운영 체제내의 소프트웨어 포인터는 언제나 상기 프리 리스트의 시작을 가르킨다. 물리적 기억장치 페이지는 상기 프리 리스트의 처음부터 여러 가지 프로세스에 지정되며 프리 리스트로 리턴된 페이지는 되도록, 프리 리스트의 첫머리에 배치된다. "이전 및 이후" 페이지 번호와 프리 리스트의 시작에 대한 소프트웨어 포인터는 적당히 갱신된다.
시스템/88이 부트될 때, 이러한 엔트리는 순차적 주소 순위에 따라 프리 리스트내에 배치되고 ; 이때에 소수 페이지만이 사용을 위하여 지정된다. 따라서, 프리 리스트로부터 지정을 위하여 유용한 기억장치(16)의 인접한 구역이 넓게 된다. 그러므로, 부트시간에, 기억영역(예 : 162,163,164)이 S/370 처리기용으로 "도용"되야 한다. 그 다음에, 페이지가 필요에 따라 프리 리스트로부터 지정되고 프리 리스트로 리턴함에 따라, 르리 리스트상의 큰 인접한 블록이 미소화되어 더 이상 유용하지 않게 된다. 인접한 S/370 구역을 새로 만들려는 시도가 행해지면, 충분한 인접한 기억장치가 유용할 때까지 다수의 프로세스에 이미 할당된 기억장치 블록을 재할당하기 위한 모드 프로세스를 중지하고 복잡한 루틴을 수행하여야 한다.
이하에 설명된 응용 프로그램 EXEC370에 있어서의 서비스 루틴은 S/88 운영 체재로부터 S/370 기억 영역을 도용하기 위한 기능을 제공한다.
2. S/88 기억장치(16) 매핑
그러나, 먼저 S/88 주 기억장치(16)를 관리/매핑시키는 양호한 형태가 제48a도 내지 제48k도와 관련하여 설명될 것이다. 제48a도는 프로세스의 가상 주소 공간을 유지하기 위하여 S/88 운영 체제(S/88 OS)에 의해 설정된 소프트웨어 구조의 간단한 개요이다. 소프트웨어 구조는 다음의 소자를 포함한다;
pte-프로세스 테이블 엔트리(프로세스를 나타낸다)
pmb-프로세스 맵 블록, 이러한 블록은 함께 연쇄되어 상기 프로세스의 가상 주소 공간용의 apte's를 가르키는포인터(pme's)를 포함한다.
pmbp-연쇄내의 제1의 pmb에 대한 pte,내의 포인터
pme-pmb's내에 포함되는 프로세스 맵 엔트리(apte's의 포인터)
mme-물리적 기억장치 맵 엔트리. mme 어레이내에 포함되는데, 시스템 즉, 기억장치(16)내의 물리적 기억장치의 4KB 페이지마다 하나의 mme가 있다.
apte-활동 페이지 테이블 엔트리. apt 블록내에 포함되는데, 시스템내의 단일 가상 페이지마다 하나의 apte가 있다.
vpn-프로세스의 가상 공간내에서의 가상 페이지 번호
pmt-프로세스 관리 테이블. 시스템내의 각 프로세스(pte)에 대한 pmt내에 하나의 포인터(ptmp)가 있다.
ptep-하나의 프로세스에 대한 프로세스 테이블 엔트리 포인터
제48a도의 기억장치 맵 구조는 기억장치 관리 유닛(105 ; 제10도 및 제47도)에 의하여 이용된다. 이러한 구조는 양호한 실시예에서는 각각 512개의 순서화된 mme's를 각각 포함하는 하나 또는 그 이상의 mme 어레이(제48c도)로 구성된다. 각 mme는 실 기억장치(16)의 하나의 4KB 페이지를 나타내며, 따라서, 하나의 mme 어레이는 512×4KB=2MB의 인접한 기억장치를 나타낸다.
제47도의 Storage Map Array이라 레벨이 붙은 박스는 순차 주소 순서로 배열된 모든 mme 어레이를 개념적으로 설명한다.
mme's는 보통 다음의 3개 리스트중 하나에서 다루어진다.
1) 사용된 리스트, 프로세스에 지정된 mme
2) 재요구된 리스트, 프리 리스트에 리턴되어질 mme
3) 프리 리스트, 프로세스에 지정에의 유용한 mmeㆍmme가 하나의 리스트에서 다른 리스트로 이동됨에 따라, 그 포인터도 적당히 갱신된다.
mme가 리스트상에 없는 경우에는, 상기 mme는 영구적으로 배선된(wired) 페이지를 나타내거나 또는 과도상태에 있다. 기억장치 관리 유닛(105)에 의해 이용되는 mme 데이터 구조는 제48b도에 도시된 3개 리스트 포인터를 포함하는데, 여기에서
Figure kpo00004
"그 다음(next)과" "이전(previous)"의 mme 필드는 연쇄 리스트(사용된,재요구된,프리 리스트)를 만드는데 이용된다.
S/88의 물리적 기억장치가 S/370 기억 영역용으로 포획되었을 때, 다음에 설명된 바와 같이 변경될 것이 그 다음 mme와 이전 mme에 대한 물리적 페이지 번호이다. 양호한 실시예에 있어서, 각 mmep 어레이(제48c도)는 128 포인터 리스트인데, 각 포인터는 mme 어레이의 가상 주소이다. 제1의 n 포인터는 모든 mme 어레이의 순서화된 리스트이다. 잔여 128-n 포인터는 NULL이다. 이것은 128×2MB=256MB의 실기억장치의 트랙을 보관할 수 있는 능력을 제공한다. 각각의 이러한 포인터는 물리적 주소(물리적 페이지 번호 ppn라고 하는)의 16 최상위(고순위) 비트를 포함하고, 특정 mme에 대한 포인터로서 이용된다. ppn의 7고 순위 비트느 mme 어레이를 선택하고 ppn의 9저 순위 비트는 이 어레이내에서 mme를 선택한다. 물리적 주소의 12저 순위 비트는 기억장치(16)의 실(물리적) 페이지내로의 오프셋이다.
메모리 맵 정보(mem map info) 구조(제48d도)는 맵용으로 이용되는 메모리의 트랙을 보관하는데 이용되는데, 여기에서
Figure kpo00005
활동 페이지 테이블 엔트리(active page table entry ; apte)는 가상 기억장치의 트랙을 보관하는데 이용된다. 시스템내의 모든 가상 기억 공간내에 있는 가상 기억장치의 각 4KB 페이지별로 하나의 apte가 있다. apte 구조(제48e도)는 가상 공간의 소유자, 페이지의 가상 주소 및, 페이지 아웃 경우, 디스크 주소의 실 메모리 주소를 표시한다.
하나 이상의 프로세스가 동일한 가상 주소 공간을 공유하고 있는 경우에는, 모든 프로세스들은 apte 트레일러(제48g도)를 통하여 식별되고 ; 각 가상 페이지별 apte는 상기 트레일러를 가르킨다.
Figure kpo00006
각 apte는 12 바이트 길이이고 256 엔트리가 각 활동 페이지 테이블(apt) 블록(제48f도)에 포함된다. 블록내에서 apte's 상대 위치는 중요하지 아니하다. 모든 미사용 apte's는 사용되지 않은 apte 리스트상에 스레드된다. 추가 apte's가 요구되고 리스트가 null인 경우에는, 배선 히프(heap)에는 새로운 apt 블록이 할당되고 ; 전체 256 apte's는 사용되지 않은 aptep 리스트상에 스레드된다.
apt 트레일러(제48g도)는 공유된 프로그램 영역용으로 이용되고, 배선 시스템 히프내에 할당되고, ELTE(수행가능 영상 테이블 엔트리) 또는 apte에 의하여 지적된다. 프로그램당 4개의 트레일러(영역당 1개씩)가 존재한다. 트레일러는 시스템으로 하여금 페이지를 이동시킬 때 페이지를 가르키는 모든 PTW를 찾아내게 한다.
apt 트레일러 구조는 다음을 포함한다 :
Figure kpo00007
프로세스 테이블 엔트리(pte ; 제48h도)는 프로세스를 관리하는데 필요한 정보를 포함하고 ; 프로세스의 가상 주소 공간에 관한 정보를 포함한다. 각 페이지 테이블 엔트리는 다음을 포함한다 :
Figure kpo00008
프로세스 맵 블록 구조(제48i도)는 프로세스 가상 공간을 실 메모리 공간내에 맵 시키는데 이용되고 다음을 포함한다 :
Figure kpo00009
프로세스 관리 테이블(제48j도)는 시스템내의 모든 프로세스에 대한 포인터 ptep 몰록, 시스템내에서 유용한 페이지의 수 및, 위탁된 페이지의 수를 포함하는 스케줄러(scheduler)에 의하여 이용되는 정보를 포함한다.
제48k도의 물리적 테이블 단어(ptw)는 다음을 포함한다.
Figure kpo00010
3. 시동 절차(Startup Procedure)
시스템/88은 시스템에 전원을 공급하고 시동 파일에 포함되는 프로그램 및 데이터 모듈을 부트시키는 시동 절차를 포함한다.
자동 시동에 있어서는, 프로그램가능 판독 전용 기억장치(prom : 181, 제12도)는 System/88 및 System/370 소자 둘다에 대한 진단과 자체 검사를 실행한다. 이러한 타스크의 완료시에, PROM(181)은 마스터 디스크(도시되지 않음)로 부터의 S/88 운영 체제를 제48k(utility progrom)을 판독한다.
모듈 시동 코드는 모든 구성된 장치 및 디스크를 초기화하고 시스템 캘린더 클럭으로부터의 내부 클럭을 세트시킨다. 이 파일은 운영체제가 모듈의 시동을 위한 절차의 일부로서 수행하는 명령을 포함한다. 이러한 절차는 기판, 디스크 및 모듈에 접속된 장치의 구성을 명시하는 테이블 파일을 판독하고 ; 시스템내의 모듈을 식별하고 ; 여러 가지 시스템 서비스프로세스를 시작하는 기능을 포함한다.
모듈 화일은 새로운 시스템 가르치기에 충분한 데이터를 공급하고 주문자에 의해 주문자의 요구사항에 적합하게 변경될 수 있다. S/88 주 기억장치(16)로부터 S/370구역(162-164)을 포획하기 위하여, 특정함 명령어가 모듈 시동 코드 명령 화일내에 삽입된다. 예를들면, 3개의 S/370 처리기(21,23 및 25,27 및 29,31)와 상기 처리기용의 3개의 S/370 기억 영역(162,163,164)을 가진 제10도의 구성을 가정하면, 다음의 명령문이 모듈 시동 코드 명령 파일내에 삽입된다.
Start S/370 처리기 #1 VM 8메가바이트
Start S/370 처리기 #2 AIX 4메가바이트
Start S/370 처리기 #3 VSE 16메가바이트
4. S/370 서비스 루틴(S/370 Service Routine) 각 Start S/370 명령은 특정한 S/370 처리기(#1,#2 또는 #3)용의 기억장치(16)로부터 한 블록의 실기억 공간을 "도용"하는 것을 소프트웨어 루틴이 수행하게 한다. 그 다음에, 적당한 S/370 운영체제가 "도용된"실 기억 공간내로 IPL될 것이다. 소프트웨어 루틴의 기능은 S/88 기억장치로부터 기억 영역을 포획하고 적당한 때에, 이러한 구역을 "대체"하는 것이다. 이러한 기능을 수행하기 위하여 다음의 5개 서브루틴이 이용된다.
a) 서브루틴 S/370 Displace Storage는 S/88 운영체제 테이블로부터 한 블록의 물리적 기억장치를 추출한다. 상기 블록의 기준 주소는 메가바이트 경계상에 있을 것이고 그 크기는 정수량의 메가바이트내에 있을 것이다.
Figure kpo00011
b) 서브루틴 S/370 Replace Storage는 한 블록의 물리적 기억장치를 S/88 운영체제 테이블로 리턴시킨다.
Figure kpo00012
c) 서브루틴 S/370 Open Storage는 이전에 디스플레이스된 물리적 기억장치의 일부 또는 전부를 호출자의 가상 주소 공간에 연결시키고 가상 페이지 수를 리턴시킨다. 각 적당한 apte 및 pme가 만들어지고 가상 대 물리적 매핑이 설정된다. 접근 코드는 "Read/Write"이고 기억장치가 연결된다.
Figure kpo00013
d) S/370 Close Storage
서브루틴 S/370 Close Storage는 이전에 개방된 물리적 기억장치를 호출자의 가상 주소 공간으로부터 분리시킨다. 적당한 APTEs와 PMEs는 S/88 운영체제로 리턴되고 가상 대 물리적 매핑이 고장난다. 물리적 기억장치는 S/370 디스플레이스 기억장치 루틴으로 리턴된다.
Figure kpo00014
e) Gain Freedom은 START-370 프로그램에 의하여 호출되는 서브루틴이다. 그것은 START-370 프로그램을 S/88 감시 모드에 두며, 따라서 상기 4개의 서브루틴이 수행될 수 있다. 일단 START-370이 감시 모드에 있으면, 벡터 포인터는 S/88 운영체제로부터 기억장치의 블록을 제거하고 상기 기억장치를 각 S/370 처리기에 재지정할 수 있게 변경될 수 있다.
이러한 서브루틴은 메모리 할당을 변경시키고 S/88 처리기의 인터럽트 레벨(6)용 수동 백터를 변화시키는데 이용된다. 주문자는 시스템 안전보장의 이유로 상기 호출의 긍정응답을 주어지지 않게 하거나 또는, 이에 접근하지 못하게 한다.
Figure kpo00015
상기 서브루티의 기능 스탭은 다음과 같다 :
S/370 Displace Storage
1) 자유를 얻고, mme 어레이 프리 리스트를 로크하라.
2) 근접한 사용되지 않은 mme's의 최대 스트링용 프리 리스트를 탐색하라.
3) MB 경계에 대한 양끝을 반올림하고, 스트링내의 4KB 블록 수인 nblks를 계산하라.
4) nblks>n-blks이면, nblks를 n-blks(요구된 4KB 수)에 세트시키고, 기준 ppn 경계를 변경하라.
5) 프리 리스트로부터 mme's의 선택된 스트링을 스레드하지 말아라.
6) 시스템 가용 카운트로부터 n페이지를 공제하라.
7) mme-arrays 프리리스트를 풀고, 자유를 포기하라.
8) ppn=기준 ppn을 세트시켜라
nblks<n-blks이면 rc=에러
nblks<=0이면 rc=에러
에러가 없으면 rc=0
S/370 Replace Storage
1) 모든 엔트리가 접속되지 아니하였는가를 검사하고, 플래그를 제로에 세트시키고, mme's를 함께 적당히 연쇄하라.
문제가 있는 경우에는, 에러를 리턴시켜라.
2) 자유를 얻고, mme-arrays 프리 리스트를 로크하라.
3) mme's를 스레드하기에 양호한 이하 위치에 대한 프리 리스트를 탐색하라.
a. 기준 ppn에 근접한 제1대상
b. 리스트 종단에 있는 제2대상
4) 프리 리스트상에 전체 블록을 스레드하라 :
5) n 페이지를 시스템 가용 카운트내에 추가하라.
6) mme-arrays 프리 리시트를 풀고, 자유를 포기하라.
S/370 Open Storage
1) 이 프로세스의 테이블 엔트리를 찾고, pmb 경계상의 그 가상 기억장치내에서 MB의 n-blks용으로 충분한 크기의 홀을 찾아라. 상기 요구에 서비스할만큼 충분한 대체 mme's가 있다는 것을 확인하라. 문제가 있으면 에러를 리컨시켜라.
2) 필요하면, pmb's 및 apte's용 배선 공간을 할당하라.
3) 전체 구조를 설정하라.
mme's 배선 및 접속
mme.aptep->apte
pme.apeep->apte
모든 플래그를 적절히 세트시킨다.
apte.ptep->pte 4) 새로 구성된 pmb 연쇄를 타스크의 pmb 연쇄에 묶어라.
Close Storage
1) 상기 프로세스의 테이블 엔트리를 찾고, s
Figure kpo00016
open-storage에 의하여 구성된 pmb's를 찾아라. 아무것도 찾지 못하면 리턴하라.
2) 이러한 pmb's를 프로세스의 pmb 연쇄로부터 분리시켜라.
3) 각 apte 별로, 실 매핑의 고장을 찾기 위하여 setup-ptw를 호출하라.
4) pmb's 및 apte's용 배선 공간을 OS에 리턴시켜라.
5) mme's를 Displace-Storage 루틴으로 리턴시켜라.
Gain Freedom
1) give-take 인수의 주소를 얻어라.
2) 자유를 포기하는 경우에는, 스텝(7)로 가라. 다음 스텝은 자유를 얻는다.
3) OS를 감시 상태에 있는 동안 호출자에게 리턴하게 하는 트랩(13)을 수행하라.
4) 유저 스택 주소를 얻고, 시스템 스택 포인터와 교체하라.
5) 시스템 주택 주소를 유저 스택 포인터에 세이브시켜라.
6) 유저 스택상에서 감시 상태에 있는 호출자에게 리턴시켜라. 다음 스탭은 자유를 포기한다.
7) 세이브된 시스템 스택 주소를 다시 얻어서 시스템 스택 포인터와 교체하라.
8) 유저 스택 포인터의 유저 스택 주소를 대체하라.
9) 트랩 조정기가 스탭(11)으로 리턴될 수 있도록 스택을 변경하라.
10) 트랙 조정기로 리턴시켜라.
11) 트랙 조정기를 유저에게 리턴시켜라.
12) 유저 트랙상의 유저 상태에 있는 호출자에게 리턴시켜라.
5. 프리 리스트로부터의 mme's의 선택된 스트링 언스레드(Unthread Chosen String of mme's From Free List)
FIRST MME는 스레드되지 않을 스트링내의 제1의 mme에 관한 것이고 기준 ppn은 그 ppn(물리적 페이지 수)를 포함한다.
LAST MME는 스트링내의 최종 mme에 관한 것이다. FIRST MME가 프리 리스트의 선단(그 이전의 mme 필드는 제로와 동일하다)에 있는 경우에는 프리 리스트 포인터는 LAST MME의 next-mme 필드와 동일하게 세트되며 ; 따라서 이제 LAST MME 다음의 mme가 프리 리스트의 선단에 있게 된다. 그렇지 아니한 경우에는, FIRST MME앞의 mme의 그다음 mme 필드는 LAST MME의 next-mme 필드와 동일하게 세트된다. LAST MME(그의 그다음 mme 필드는 제로가 아님) 다음에 mme's가 있으면, LAST MME의 다음에 mme의 이전의 mme 필드는 FIRST MME의 prev-mme 필드와 동일하게 세트된다.
6. 기억장치 기준 및 크기를 STCI에 기록(Writing Storage Base and Size to STCI)
기억장치가 S/88 OS로부터 "도용"된 후, 상기 기억장치가 구성 파일내에 기술된 조건에 따라 S/370 처리기 간에 분배된다. 구성 어레이는 각 S/370 처리기용 기준 ppn 및 n blks를 포함하는 S/88 커널 기억장치(S/88 kernel storage)내에 내장된다. n blks이란 용어는 기억장치의 연속한 메가-바이트의 수를 의미한다. n blks는 도용된(스레드되지 아니한) mme's의 수를 256으로 나눈 수와 같다. 각 S/370 처리기의 EXEC370 타스크가 그 각각의 S/88 처리기내에서 개시될 시에, 상기 EXEC370 타스크는 STCI 단어를 어셈블하기 위하여 해당 기준 ppn 및 n blks 값을 이용한다. 그 다음에, 상기 단어는 가상 주소 007E01FC(지역 기억장치(210) 주소 공간내)에 기록됨으로써 STCI 레지스터(404,405 ; 제32b도)의 초기화가 S/88 운영체제에 투명하게 한다.
제19a도, 제20도와 관련하여 초기에 설명된 분리 매카니즘(216) 및 BCU 인터페이스 논리(253)는 상기 레지스터(404,405)를 초기화하는데 이용된다.
그러나, 제32b도에 도시된 바와 같이 양호한 실시예에 있어서, 레지스터(404,405)는 S/88 처리기 데이터 버스(161D ; BCU 지역 데이터 버스 223보다는)에 직접 접속된다. 논리(216)의 디코드 논리(280)는 상기 가상 주소를 디코드하여 S/88 하드웨어로부터의 AS를 차단하고, DSACK를 처리기(62)로 리턴시킨다. 레지스터(404,405)는 STCI 선택 회전(58)을 통하여 논리(253)로부터 인에이블 된다. STCI 단어의 비트(27-20)는 STCI "기준"주소를 형성하고, 비트(23-20)는 S/370 기억장치 "크기"값을 형성한다. 비트(19-0)는 제로이다.
S/370에 의하여 개시되는 S/88 인터럽트용 초기화 기능(Initialization Functions for S/88 Interrupts Initiated by S/370)
S/88 운영체제의 긍정 응답 없이도 S/88 내에 상주하는 S/370 인터럽트 조정기 마이크로 코드로 S/370 인터럽트를 향하게 하기 위한 여러 가지의 시나리오가 있다. 그중 3가지가 설명될 것이다.
첫 번째 방법은 S/370 인터럽트 조정기 코드를 S/88 운영체제 제1의 레벨 인터럽트 조정기내에 삽입시켜 그것이 그 목적 모듈의 일부로서 어셈블되게 하는 S/88 운영체제 커널의 변경을 포함한다. 인터럽트 백터의 테이블은 인터럽트 조정기 어셈블리 소스내에 포함되고, S/370에 의하여 벡터는 S/370 인터럽트 조정기 코드를 가르키도록 소스내에서 변경된다.
상기 방법은 다음과 같은 S/88 설계 방법과 크게 다르다.
1) 각 인터럽트 장치는 S/88 운영체제에 상기 장치, 그 경로 명칭, 기판 주소 등을 식별시키는 화일내에 엔터되야 한다.
2) 제1의 레벨 인터럽트 조정기가 인터럽트를 수신하면, 상기 조정기는 적당한 포맷화된 스택을 설치하고, 모든 기계 상태 및 레지스터를 세이브하고, 인터럽트의 유효성을 검증하고 인터럽트를 "제2의 레벨" 인터럽트 조정기로 통과시키는데, 이 조정기는 개발자의 특별히 기록된 장치 인터럽트 코드를 호출한다.
3) 인터럽트 코드가 완료되면, 상기 코드는 제어를 복구 환경을 처리하는 운영 체제 인터럽트 조정기에 리턴시킨다.
상기 제1의 방법은 전술한 모든 것을 포괄한다. S/370 인터럽트 루틴을 가르키기 위하여 S/370 인터럽트 벡터를 어셈블함으로써, S/88 운영체제에 의해 수행되는 모든 정상 인터럽트 처리가 회피되고, 장치 화일을 통하여 S/370을 식별할 필요가 없다. 상기는 하드웨어 대신에 코드가 수정되었기 때문에, 실제로는 소프트웨어 분리이다. 상기 제1의 방법은 희망 인터럽트 기능을 달성하는데 가장 신속하고 비용이 적게 소요되는 방법이다. 그러나, 상기 방법은 이후에 S/88 운영체제의 각각의 해제에 대하여 추가 보전에 대해 영향받기 쉽다. 상기 방법은 적어도 하나의 커널 바인드를 필요로 하며, 인터럽트 조정기가 변경된 경우에는, S/370 인터럽트 코드가 재삽입되고, 인터럽트 조정기가 재 어셈블되어야 한다.
제2의 방법은 시스템 부트 후, 운영체제 인터럽트 벡터의 변경을 포함하고 ; 제20도의 하드웨어 인터럽트 매카니즘의 설명에 사용을 위해 암시되는 것도 상기 방법이다.
두 번째 방법은 S/88 운영체제 가상 주소 공간(양호한 실시예에 있어서, 007E0000 바로 아래)내에 S/370 인터럽트 코드의 배치와, 운영체제 커널 인터럽트 조정기의 적당한 인터럽트 벡터의 변경을 필요로 한다. 이 작업은 운영체제가 초기화된 후(S/370 초기화 루틴이 기억장치를 "도용"하는 것과 동시에) S/370 초기화 루틴에 의하여 행해진다. 초기화 루틴이 S/88 운영체제 커널 기억 영역을 수정하기 때문에, 상기 루틴은 상기 설명에 기억장치를 "도용"하는 것으로 설정된 방식으로 "자유를 얻어야"한다. 상기 제2도의 방법은 새롭게 해제되는 각 S/88 운영체제 커널의 보전 변경을 필요로 하지 않는다. 그러나, S/370 인터럽트는 S/88 운영체제가 시동 및 실행 후에까지 기능을 하지 않는다.
제3의 방법은 인터럽트 벡터 내용의 하드웨어 제시를 포함하고 ; S/88 운영체제 커널의 어떠한 변경도 필요없기 때문에, 즉 벡터 테이블에 아무런 변화도 생기지 않기 때문에, 상기가 양호한 대안이다.
상기 세 번째 방법은 공지된 판독 전용 기억장치(ROS) 주소로서 S/88 운영체제 가상 주소 공간 및/또는 BCU Local Storage내에 S/370 인터럽트 루틴의 배치를 필요로 한다. 상기 인터럽트 루틴 주소는 S/370 하드웨어, 바람직하게는 ROS내에 유용해야 한다. 이하 시나리오는 상기 방법을 설명하기 위해 주어졌다 :
1) S/370(예 : BCU 156 내의 DMAC 209)은 인터럽트 요구를 활동시킨다.
2) S/88 처리 유닛(62)은 인터럽트 긍정응답, 데이터 스트로브 및, 주소 스트로브를 활동시킨다.
3) BCU는 인터럽트 벡터 번호(쉽게 인식할 수 있도록 모두 제로로 하거나 또는 ROS 벡터 공간내에 오프셋할 수 있는)를 데이터 버스(223)상에 배치하고, 데이터 스트로브 긍정 응답을 활동시킨다. 이러한 벡터번호는, 유효 패리티를 제외하곤, 처리기(62)에 대하여 중요하지 않다.
4) 결국, 처리기(62)는 4-바이트 인터럽트 벡터를 얻기 위하여 기억장치, 판독 사이클을 수행할 것이다.
5) BCU는 이러한 특정 기억장치 접근(가상 주소에 의한)을 인식하고, 처리기(62)를 접근 기억장치로부터 분리시키고, 그 자신의 4바이트 인터럽트 벡터(S/370 ROS로부터 게이트 된)를 제공한다. S/370 ROS는 DMAC에 대하여 몇 개, ROS 기판 동기화용으로 1개등 필요한만큼의 벡터를 포함한다.
상기 제3의 방법은 S/370 하드웨어 등을 동기화하기 위해 기판 동기화중 분리를 할 수 있다. 그러나, 이 방법은 더 많은 하드웨어를 필요로 한다.
S/88 운영체제를 변경하지 않고도 자유 획득(Gain Freedom Without Modifying the S/88 Operating System)
응용 프로그램이 어떻게 자유를 얻을 수 있는가, 즉 감시 상태를 획득할 수 있는가를 설명하는 "Start S/370 Service Routine"에 한 방법이 제시되었다. 이러한 방법은 S/88 OS 커널에 추가되어질 특별한 OS 서비스 호출 "트랩 13 명령어" 루틴을 기록하는 것을 포함한다.
이러한 트랩(13) 인터럽트 루틴은 트랙 명령어 바로 다음의 위치에서 트랩을 발하는 프로그램을 "호출"하는 것에 지나지 아니한다. 트랩 인터럽트 루틴이 감시 상태에 있기 때문에, 주체 프로그램(subiject program)은 감시 상태로 변경될 것이다. 응용 프로그램 상태를 다시 얻기 위하여, 응용 프로그램은 인터럽트 스택 리턴 주소를 변경하고, 트랩(13) "호출"로부터 변경된 인터럽트 스택 주소를 사용하는 인터럽트로부터 빠져나온 트랩(13) 인터럽트 코드로 리턴한다. 이 방법은 인터럽트 루틴을 S/88 OS에 추가하는 것을 포함한다.
제2의 방법은 주체 OS의 변경을 제거한다. 특별 레지스터(도시하지 않음)가 BCU 제어 기억장치 주소공간내에 정의되는데, 응용 프로그램에 의하여 기록되었을 때, 상기 BCU 제어 기억장치 주소 공간은 새로운 BCU 인터럽트로 하여금 상기 주어진 인터럽트를 시행하기 위해 제3방법을 사용하게 된다. 응용 인터럽트 루틴은 BCU 판독 전용 기억장치(도시되지 않음)내에 상주하게 되고, 트랩(13) 코드와 동일한 기능을 한다. 전술된 Gain Freedom 루틴은 트랩(13) 명령어를 발하는 대신에, BUC 특별 레지스터에 기록하는 것을 제외하곤, 정확히 동일한 기능을 한다.
S/88 OS를 변경하지 않고도 기억장치를 도용(Stealing Storage Without Modifying S/88 OS)
상기 제2의 Gain Freedom 구현을 이용하여, "메모리의 도용"은 임의의 S/88 원시 코드 또는 S/88 OS 커널의 바인딩의 리어셈블리를 필요로 하지 않는다. 프리 리스트의 선단의 주소는 응용 프로그램에 유용하다.
심플렉스 유닛과 파트너 유닛(Simplexed and Partner Units ; 21,23)의 Power On 및 동기화(제49도, 제50도)(S/370 처리 유닛용 서비스 처리기로서 S/88 처리 유닛)
1. 소개
이 항은 제7도의 피트너 장치(21,23)의 동기화 상태를 결정하고, 이를 위한 환경을 제어 및 세트시키는 특정 하드웨어 레지스터, 래치 및, 논리를 제49도 및 제50도와 관련하여 간략히 설명한 것이다.
그외에도, 심플렉스 유닛과 파트너 유닛의 초기화, 동기화 및, 재동기화를 수행하기 위한 특정한 마이크로코드 기능이 설명될 것이다. 먼저, 심플렉스 및 파트너 유닛 환경에서 S/88 처리 유닛의 초기화 및 동기화에 관하여 변화시키지 않고도 본래의 기능을 하는 System/88(양호한 실시예)을 설명하기로 한다. 이 작동 방법은 단지 간략히 설명될 것이다. 덧붙여, Reaid 특허의 특정 관련 설명도 본원에서 반복될 것이다.
에러 검사는 유닛(21)의 각 S/88 처리 소자(60,62 ; 제8도)가 A버스(42) 및 B버스(44)를 구동시키는 것과 동시에 수행되어진다. 이러한 동시 작동은 버스 구조를 구동시키기 전에 에러 검사를 실시하는 처리기 모듈(9)내의 I/O 장치와는 대조적이다. 처리 유닛(21)은 작동에서의 어떠한 지연도 시스템 처리 능력을 위하여 바람직하지 아니할 정도로 처리 유닛에서의 타이밍이 중요하기 때문에, 이러한 방식으로 작동한다. 처리 유닛이 버스 구조를 구동시키는 시간 동안에 검사 논리에 의하여 발견된 에러는 상기 유닛이 시스템 클럭의 그다음 단계중 A Bus Error 신호와 B Bus Error 신호를 둘다를 X버스(46)상에 구동시키게 한다.
동일한 시간 단계중, 고장난 중앙 처리 유닛(예 : 21)는 X버스(46)에 레벨(1) 보수 인터럽트를 구동시키고, 파트너 중앙 처리 유닛(예 : 23)이 이를 수신한다. 이 시간 단계가 끝날 무렵에, 상기 고장난 유닛은 오프-라인되고, 파트너 중앙 처리 유닛으로부터 질의에 응답하는 경우를 제외하곤, 더 이상의 신호를 버스구조(30)에 구동시킬 수 없게 된다. 이러한 자동 오프-라인 작동은 에러가 A버스나 또는 B버스상의 주소 또는 데이터에서 검출되는 동안 제어 유닛을 통하여 메모리 유닛(16,18)에 대해서나 또는 주변 장치에 대한 어떤 판독 또는 기록 사이클도 포기시킨다. 게다가, 동일한 운영 사이클중 데이터 전송은 파트너 중앙 처리 유닛만을 이용하여 반복된다.
특히 비교기(12f)는 처리 섹션(12a)이 A버스(42)로부터 수신하는 입력 데이터를 처리 섹션(12b)이 B버스(44)상에서 수신하는 입력 데이터와 비교한다. 이 비교기는 또한 처리 섹션(12a)이 송수신기에 인가하는 기능, 주소 및, 데이터 신호를 처리 섹션(12b)이 발생하는 대응 신호와 비교한다. 섹션(12a)의 타이밍 및 제어 신호는 섹션(12b)으로부터의 대응 신호와 비교된다. 내부 제어 신호의 이와 같은 비교는 처리 소자(60,62)의 내부 작동을 검사하고, 고장의 신속한 검출을 촉진시키며, 처리 유닛의 진단 및 보수유지에도 유용하다.
비교기(12f)에 대한 하나 또는 그 이상의 대응 입력 신호가 서로 다른 때에는 언제든지, 상기 비교기는 제어 스테이지(86)에 인가되는 Compare Error 신호를 발생한다. 상기 에러는 데이터-인 레어(data-in error), 데이터-아웃 에러(data-out error), 기능 에러 또는 주소 에러의 결과일 수 있다. 상기 어레는 또한 상기한 제어 신호 또는 타이밍으로 인한 사이클 에러 또는 제어 에러일 수도 있다. 패리티-검사 회로에 의한 에러의 검출은 제어 스테이지(86)에 인가되는 Parity Error 신호를 발생한다. 제어 스테이지(86)는 Compare Invalid 신호 및 Parity Invalid 신호에 응답하여, 그 다음 클럭 단계(N+1)에서, Processor Error 신호를 발생시킨다. 이 작동에 대한 하나의 예외는 Compare Invalid 신호가 판독 작업중 입력 데이터 신호의 무효 비교로 인하여 생긴 경우에 일어난다. 이러한 경우에는, 제어 스테이지(86)는 그다음 타이밍 단계에서 아무런 Bus Error 신호도 발생되지 않는 경우에만 Processor Error 신호를 발생시킨다. Bus Error 신호는 버스 구조(30)내의 고장 조건을 표시하며, 따라서 입력 데이터의 무효 비교가 처리 섹션(12a 또는 12b)에서 생긴 것이 아니라, 버스 구조(30)의 A버스 부분 또는 B버스 부분의 고장으로 인한 것임을 식별한다.
Processor Error 신호의 한 기능은 논리 회로를 무능하게 함으로써 본질적으로 유닛(21)의 처리 섹션(12)의 모든 작동을 정지시키는 것이다. 그외에도, A Bus Error 신호 및 B Bus Error 신호가 X Bus(46)에 인가되어 직전 단계중 버스상에 배치된 정보를 무시할 것, 즉 CPU Bus 전송을 무시할 것을 모듈(9)내의 모든 유닛에 통지한다. Level One Interrupt 신호가 X버스(46)에 인가되어 모듈내의 어떤 유닛이 고장-발생-에러를 검출하였음을 파트너 처리 유닛(23)에 통지한다.
단계(N+2)초에, 여전히 고장 신호에 응답하는 스테이지(86)는 독단적인 버스 마스터 상태를 종료시킨다. 이 행동은 Bus Error 신호의 종료에 의해 수반된다. 처리 섹션(12)이 Master 상태에서 전환되면, 상기 섹션은 송수신기(12e)의 모든 버스 드라이버를 무능하게 한다. S/370 송수신기(13) 드라이버도 또한 송수신기(12e)의 드라이버가 무능하게 될 때마다 공동 제어(75)를 통하여 무능하게 된다.
이와 마찬가지로, Processor Error 신호가 유닛(21)의 제어 스테이지(75)에 의하여 생기는 경우에는, 제어 스테이지(86)를 통하여, 송수신기(12e) 및 송수신기(13)도 무능하게 된다.
따라서, 처리 유닛(21,23)은 드라이버에 인가되는 Bus Enable 신호를 생기게 할 필요가 있을 때, Master 상태에 있을 때에만 버스 구조를 구동시킬 수 있다. Processor Error 신호는 즉시, 그다음 타이밍 단계의 끝에, 마스터 상태를 턴 오프한다. 유닛(21)의 처리 섹션(12)이 Processor Error 신호를 발생시키는 경우에는, 파트너 유닛(23)의 S/88 처리 섹션은 본질적으로 중단없이도 계속 작동한다. 기록 작동중 Processor Error 신호가 생기는 때에는, 파트너 처리 유닛(23)이 데이터 전송을 반복한다. 판독 작동중 Processor Error가 생기는 때에는, 파트너 유닛은 후속 타이밍 단계에 버스 구조에 메모리가 인가시킨 반복된 데이터를 판독 입력한다.
더구나, 파트너 처리 유닛(23)은 저 우선순위 인터럽트인 Level One 인터럽트에 응답하여 진단 루틴을 개시시킨다. Processor Error의 원인이 과도 현상인 것으로 여겨지는 경우, 즉, 진단 루틴이 임의의 고장 또는 잘못된 조건을 식별하지 못하거나 찾아내지 못하는 경우에는, 처리 유닛(21)은 보수없이도 작동을 회복할 수 있다. 양호한 실시예에 있어서, 과도 고장의 발생이 기록되고, 임의로 정하여진 시간 수가 반복되는 경우에는, 처리 유닛은 더 이상의 진단 없이도 서비스 또는 작동으로부터 전기적으로 제거된다.
유닛(21,23)의 각 처리 섹션(12)은 특히, 처리가 상태 및 제어 스테이지(86)에서 2개의 파트너 유닛을 로크-스텝 동기화시킬 수 있는 논리 회로를 포함한다. 이 섹션(12)은 Master 상태로의 전이로 인하여 로크-스텝 동기와 달성한다. 신호를 버스 구조상에 구동시키기 위하여는 각 센서(12)이 Master 상태에 정연하게 있어야 한다. 각 PROM(181)에 기억된 초기화 순서는 통상, 파트너 섹션을 동기화시켜 어느 처리 섹션도 초기에는 Master 상태에 있지 아니하도록, 즉, 턴 온되지 않게 하기 위한 명령어를 포함한다.
유닛(21,23)의 처리 섹션(12)은 초기화 순서에서는 초기에 동기화에 있지 아니하며, 하나의 유닛이 다른 사이클에 앞서 다단계 사이클중 Master 상태를 달성한다. Master 상태를 얻는 하나의 유닛은 다른 유닛의 또다른 초기화 작동을 제어하여 이 장치를 선택된 시간에 Master 상태에 있게 한다.
유닛(21)의 처리 섹션(12)이 초기화되면, 상기 섹션은 내부 Error Check 신호를 부정하고, 이에 의하여 Parity Invalid 신호 또는 Compare Invalid 신호가 Processor Hold Signal를 발생시키지 못하게 한다. 대신에, 섹션(12)은 통상 PROM(181)내에 기억되는 시험 루틴을 수행하고, 이 루틴은 Processor Error 신호를 발생시킬 수 있는 모든 조건을 연습한다. 각 잠재적 고장 조건이 생겨날 시에, 처리 섹션은 대응 고장 보고 신호가 실제로 발생되었는가의 여부를 확인하기 위하여 시험을 한다. 따라서, Error Check 신호의 부재는 처리 유닛이 Master 상태에 도달하지 못하게 하고, 이로 인하여 논리 연습 루틴중에 생긴 고장은 처리 유닛을 중지시키지 못하고 버스 구조(30)에 보고되지 않는다. PROM(181)의 시험 루틴이 Error Check 신호를 단언하고 처리기로 하여금 이러한 검사 루틴의 성공적 완료시에만 Master 상태라 간주할 수 있게 한다.
S/370 처리 유닛(양호한 실시예)는 전형적으로 각 칩내의 여러 가지 소자 및 논리에의 "백 도어(back door)"접근을 통하여 초기화 및 서비스 처리기 기능을 제공하는 하드웨어를 갖는다. 이러한 것을 잘 알려져 있기 때문에, 간력히만 설명될 것이다.
마찬가지로, 자가-진단 및 초기화를 위한 프로그램 루틴도 잘 알려져서 상세히 설명될 필요는 없다. 이 항에서 강조되는 것은 S/370 또는 S/88 운영체제가 변화를 알지 못한채, 전형적인 S/370 자가 진단 및 초기화가 S/88을 경유하여 성취되는 메카니즘이다. S/370용의 자가 진단 및 초기화 루틴(STIR)은 양호한 실시예에서는 파트너 유닛내의 S/370 처리 소자를 동기화시키기 위한 루틴과 함께 PROM(181;제19c도)내에 배치된다. 그러므로, S/88은 S/370 서비스 처리기로서 기능을 한다. PROM(181)내의 S/88 코드의 기억장치-맵-I/O 할당은, S/370 코드를 구형하기 위하여 특정한 S/88 상태 또는 다른 레지스터 내용이 요구되는 경우에 제공된다.
이러한 코드가 동기화되게 하는 방식은 기본(또는 마스터) 파트너 처리 유닛(21 ; 적절히 작동하고 있는 유닛)내의 레지스터 세트의 기억장치-맵-복사를 2차(또는 종속) 파트너 처리 장치(23 ; 아주 적절히 작동하지 아니하는 유닛)내의 레지스터 세트로 전송하는 것이다.
동기화 매카니즘용의 S/88-S/370 결합 경로의 세부사항을 설명하기 전에, 제7도의 모듈(9)의 구조 및 환경의 간단 개요가 주어질 것이다. 고장 허용 한계 및 단일 시스템 영상과 같은 S/88 운영 체제의 특성은 S/88 및 S/370 구조용으로 보존된다. 모듈(9)은 하나 그 이상의 심플렉스 S/370 처리 유닛(21) 또는 한쌍의 파트너 S/370 처리 유닛(21,23)으로 구성된다. S/88 심플렉스 유닛 또는 파트너 유닛(12 또는 12,14)이 S/88 프로그램만을 수행하기 위한 모듈내에 포함될 수도 있다.
각 S/370 처리 유닛은 제7도에 도시된 바와 같은 한쌍의 S/370 처리기 소자(85,87) 및 한쌍의 S/88 처리기 소자(62,64)를 포함하고 ; 상기 처리 소자쌍은 단일 논리 처리 유닛으로서 로크 스텝으로 작동된다. 상기 파트너 장치는 서로 로크 스텝으로 작동되는 중복 설계를 형성하여 완전한 고장 허용 한계 자가 진단 논리 처리 유닛을 제공한다.
한쌍의 각각의 S/370 처리기 소자(85,87)는 부분적으로 S/370 칩 세트(150 ; 제11도)이다. S/370 칩 세트와 그 연관 하드웨어는 S/88 버스 구조(30)와 결합될 수 있도록 S/88 스타일 기판(101 ; 제9a도)상에 장착되며 ; 이들은 인터페이스 논리 회로(89,91 ; 제8도)를 통하여 각각의 S/88 처리 소자에 결합된다. 이 항에서는, 하나의 처리 유닛(21)내의 S/370 칩 세트쌍과 그 연관 하드웨어가 S/370 개체라고 언급될 것이며 ; 그 대응 S/88 처리 소자(60,62) 및 연관 하드웨어는 S/88 개체라 언급될 것이다. S/370 개체는 S/370 응용 프로그램을 수행하고, S/88 개체에 대하여, S/88 또는 S/370 운영 체제도 상대방을 알지 못하면서도, S/88 I/O장치 및 프로그램을 이용하여 필요한 S/370 I/O 작동을 수행할 것을 요구한다.
2. 고장-허용 한계 하드웨어 동기화(FAULT-TOLERANT HARDWARE SYNCHRONIZATION)
S/88-S/370 처리장치의 여러가지 주요 특성중 하나는 현행-처리 파트너(23)에 의한 임의의 처리장치(21)의 자체-결정 동기화(self-determined synchronization)이다. 각 유닛의 S/88 개체는 새로운 파트너 또는 에러 발생 파트너의 동기화에 대한 능력 및 책임을 갖는다. 유닛의 S/88 개체가 이러한 책임을 취하면 이를 "마스터(master)"라 한다. 동기화되는 그 파트너를 "종속(slave)"이라 한다.
S/88 하드웨어/펌웨어 구조는 언제 동기화가 필요하며, 누가 누구를 동기화하는가를 결정한다. 상고 접속된 S/88-S/370 하드웨어/펌웨어는 상기 동일한 기능을 이용하여 동기화 결정에 있어서 S/88의 본을 따른다. 즉, 언제나 S/88은 S/88(슬레이브)개체가 그 파트너(마스터)와의 동기화가 필요한지를 결정하는데, 상기 동기화는 S/88 슬레이브 개체가 "시작(kicked-off)"된후, 적당한 지점까지 진행하게 하며, 그 다음에 상기 수행은 대응 S/370 개체로 전환된다. S/370 개체는 S/370 Master상태를 추출하기 위하여 PROM(181)으로부터의 코드를 수행하고 이 상태를 S/370 파트너에 대한 상태로 회복시키는 S/88 PE에 의하여 동기화된다.
조건이 Initial Power On, 새로운 파트너의 출현 또는, 2개의 기존 파트너가 동기화를 상실하게 된 에러 조건으로부터의 회복(Maintenance Interrupt를 강요하는 각각의 경우)에 의하여 호출되었는가의 여하에 관계없이, 상기 파트너쌍중 어느하나는 처리 유닛의 동기화에 있어서 마스터 또는 종속 역할을 취할 수 있다. 각 경우에, S/88 종속 개체는 그 상태를 인식하고, 동기화를 위해 S/88 마스터 개체에 따른다.
S/88 마스터 및 종속 개체는 보수 인터럽트가 발생할시에 그 각각의 상태를 결과로서 그 각각의 역할을 취한다.
모든 처리 유닛의 S/88 개체는 불이행 마스터가 입증될때까지는, 상기 인터럽트가 종속이라고 가정하고 상기 인터럽트를 검출 및 처리한다. 그다음에, 이 마스터는 임의의 보유 종속을 로크 스텝으로 시작하고, 마스터의 선점 환경을 다시 시작한다(인터럽트로부터 리턴할시에).
마찬가지로, S/88 개체는 처리기를 잔여 논리로부터 분리시키고, S/370 파트너쌍내에서 동일한 선점 상태를 설정하기 위하여 이러한 처리를 이용하여 S/370 SP 기능을 에뮬레이트 하고, 그 다음에, 정상 수행환경을 재설정하고, S/370 파트너쌍이 로트 스텝으로 수행을 시작할 수 있게 한다.
동기화가 필요하지 아니한 한 상황 : 심플렉스 처리 유닛은 power on, 즉, 21과 같은 단일 유닛이다.
동기화를 필요로 하는 상황은 다음과 같다 :
듀플렉스 처리장치(예 : 21,23)가 파워 온 되며 ; 유닛(21)은 그 파트너(23)가 정상적으로 처리되는 동안 삽입되며 ; 21과 같은 처리 유닛은 그 파트너(23)의 비교 고장을 검출하고 회복을 시도한다.
S/88 개체는 동기화를 설정하기 위한 적당한 하드웨어 설비를 갖는다. S/370 처리 섹션은 종속 개체를 마스터 개체와 정확히 동일한 상태로 초기화시킬 수 있는 충분한 하드웨어 및 소프트웨어 조력을 갖는다. 상기는 판독/기록 상태 레지스터, 판독기능 모드 레지스터, 소거가능 캐쉬, 정지가능 클럭, 카운트 링등과 같은 특징을 포함한다.
유닛(21)내에서 정상적으로 작동하는 S/370 개체를 파트너 유닛(23)내의 그 대응 S/370 개체와 함께 SYNC 시킬시에, 파트너 S/370 개체를 정상 작동 개체와 동일한 상태가 되게 할 필요가 있다. 이러한 프로세스는 양호한 실시예에 있어서 S/88처리기(60,62 ; PROM(181)의 S/370 초기화 및 동기화의 제어하에)로부터 S/370 처리기(85,87)로 Queue Select Up Message를 송신함으로써 단순화된다. 상기 Message는 유저 응용이 동기화 시간중 156과 같은 BCUP 대하여 Operating System을 통하여 또다른 서비스 요구를 호출하지 못하게 한다. 상기 Message는 또한 모든 미완료 I/O 작동의 수행도 완료할 수 있게 한다.
상기는 정상 작동 S/370 개체를 "시작"시 2개의 S/370개체에 의해 사용할 수 있는 기억장치(162)내에 복사되는 상태가 되게 한다. 이때, S/370 처리기, S/370 캐쉬, DLAT 및, S/370 버스 어댑터내의 모든 레지스터, 카운터, 포인터 및 버퍼(문맥)는 기억장치(162)에 순서화된 스택으로 복사된다.
동기화 프로세스가 개시되면, 모든 4개의 물리적 처리기는 S/370 문맥을 공통 스택으로부터 모든 4개의 처리기에 로딩함으로써 회복된 상기 S/370 문맥을 가질 것이다. 2개의 처리기는 그 레지스터, 카운터 및 버퍼용으로 동일한 데이터가 로드될 것이고, 그다음에 로크 스텝 또는 완전 동기화로 프로그램 수행을 시작할 것이다.
S/370 처리 개체는 동기화를 위해 여러 가지 레지스터와 캐쉬에 접근하는 2가지 방법을 제공한다. 그 하나는 BCU 지역 데이터 버스(223)를 어댑터(154)의 채널(0,1)에 결합시키는 레지스터(560,561 ; 제49도)를 이용하는 정상 유지-프로그램 판독/기록 방법이다. 다른 하나는 직렬 "백-도어"Intergrate Support Facility(ISF)/Universal Support Interface(USI ; 540, 541) 수법이다. S/370 칩 세트 서비스 처리기의 직렬 인터페이스/프로토콜(ISF/USI)을 에뮬레이팅함으로써, S/88 개체의 동기화 매카니즘은 S/370 개체와 연관된 설비의 일부 또는 전부에 접근할 수 있다. 하나 또는 그 이상의 S/370 개체의 동기화가 요구되면, 2가지 방법이 모두 사용된다. 정상 경로가 있는 경우에는 이를 이용하고, 기타의 경우에는 USI 경로가 이용된다.
동기화 및 초기화 프로세스(즉, S/370 개체를 위한)의 상기 부분이 S/370 개체의 존재 또는 그와의 연결을 알지 못하는 S/88운영 체제에 대하여 투명하여야 한다는 것에 주의하는 것이 중요하다. 이러한 투명성은 S/370 I/O 작동에 관하여 전술된 것과 대체로 동일한 방법으로 이루어진다. 즉, 제20도에 관하여 설명된 주소 디코드 논리(280)는 데이터가 S/88 처리기(62)와 제49도의 논리 간에 전송되어질 때마다 주소(007EXXXX)를 감지한다. 이 주소가 논리(280)에 의하여 디코드되면, 상기 주소는 전술한 바와 같이, S/88 처리기 버스(161A,1610)를 회로(217,218)를 통하여 지역 BCU 주소 및 데이터 버스(247,223)에 결합시킨다. 레지스터 주소 디코드 논리(562)는 버스(247)상의 주소의 저순위 비트를 해독하여, 처리기(62)로의 데이터를 전송하기 위한 논리 회로(549,550) 또는 레지스터(560,561)중 하나를 선택한다.
그회에, 회선(562,563)상의 인터럽트는 OR회로(292a)를 통하여 제20도의 S/88 인터럽트 논리(212)로 향하게 된다. 인터럽트 요구 신호는 데이터가 처리기(62)로의 전송을 위해 S/370 칩중 한칩으로부터 논리(549)에 수신되었을 때, 회선(562)상에 활성화된다. 회선(563)상의 인터럽트 요구 신호는 논리(550)로부터 S/370칩으로의 데이터 전송의 완료를 처리기(62)에 통지한다. 회선(562)상의 인터럽트 요구하는 데이터가 처리기(62)로의 전송을 위해 S/370 칩으로부터 논리(549)에 의하여 수신되었음을 처리기(62)에 통지한다. 인터럽트 요구는 IACK신호가 회선(258d,258c)상에 각기 나타날 때까지, 회선(562,563)상에 보유된다. 이러한 인터럽트용 벡터 번호는 제20도에 도시한 IACK시호(258d,258e)에 의하여 활동되었을 때, 논리(564,565)로부터 파생된다. 벡터 번호는 처리 소자(62)에 의해 각각의 인터럽트 조정기 루틴에 접근하는데 이용된다.
S/370종합 지원 설비(ISF ; 제49도)는 칩 세트(150)상의 논리에 대한 "백 도어"엔트리를 나타낸다. ISF는 5회선 지원 버스(541)로 구성되는데, 이러한 지원 버스는 칩(85,151-154)상에 집적된 Unit Support Interface(USI)에 접속된다.
칩(85)상의 USI(542)의 일부가 제49도에 도시되었다.
지원 버스(541)는 다음의 5회선을 가진 직렬 인터페이스를 나타낸다 :
BIT OUT(칩 세트로의 데이터) 회선(543) BIT IN(칩 세트로부터이 데이터) 회선(544) ADDRESS MODE(제어) 회선(545) SHIFT GATE(제어) 회선(546) SET PULSE(제어) 회선(547) ADDR MODE 회선(545)은 BIT OUT/BIT IN회선(543,544)상의 주소 비트(업 레벨)나 또는 데이터 비트(다운 레벨)의 직렬 전송(시프트)을 알려준다. BIT OUT 및 BIT IN회선(543,544)은 칩 내부의 시프트 레지스터(548)와 논리내의 외부 시프트 레지스터(549,550)간의 상호 접속이다. 내부 레지스터(548)와 2개의 외부 레지스터(549,550)중 하나 간에 시프트된 비트의 수는 시프트 게이트 회선(546)에 인가되는 펄스의 수에 의하여 결정된다.
SET PULSE는 방금 칩으로 시프트된 주소 또는 데이터 패턴에 근거한 칩 내부 활동을 동기화시키는데 이용된다.
SET PULSE는, 시프팅이 완료된후, 칩측상의, 즉, 레지스터(548)내의 정보의 유용성을 알리기 위하여 활성화된다. 상기는 상기 정보에 근거한 활동이 이 순간부터 개시될 수 있음을 의미한다.
다음의 에는 작동을 설명한다. 시작 기능은 특정 주소 패턴으로 지정된다. 이 주소는 각 칩의 레지스터(548)내로 시프트 된다. 모든 주소 비트가 전송되었으면, 칩중 한칩의 주소 디코드(551)가 그 주소를 검출한다. SET PULSE가 주소 전송에 뒤따른다. 주소 디코드 및 SET PULSE는 게이트(552)의 출력에서 칩내부 시작 펄스를 형성한다.
USI의 칩 특정 부분에는 특정 칩 설계로부터 파생된 바와 같은 제어 및 데이터 연쇄를 포함한다. 시프트작동에 의하여 영향을 받지 않은 기억 소자의 현 상태를 유지하려면, 임의의 USI활동의 개시에 앞서 기능 클럭이 정지되어야 한다.
전체조건(prerequisite)이 "정정(static)"이라고 규정될시에, USI는 필요한 클럭 정지에 접근한다. 동적 접근 또는 기능은 칩이 작동중에 있는 동안 수행될 수 있는 작동이다.
SET PULSE는 기능등을 칩 내부 타이밍에 기능을 동기화시키는데 이용된다. 상기 기능은 SERDES 레지스터내의 주소 패턴 또는 데이터 패턴으로부터 디코드되고, 추가로 ADDR MODE회선(주소 또는 데이터 모드)에 의하여 게이트된다 :
칩 상태를 SERDES 내에 세트시켜라.
모드 레지스터를 SERDES 내에 세트시켜라.
모드 레지스터를 SERDES로부터 로드하라.
Support transfer Request latch(SPR)를 세트시켜라.
Rest Processor Controlled Request latch(PCR)를 리세트시켜라.
개별 칩을 지원하는데 필요한 부가의 작동 기능.
S/370 칩 세트(150)내의 여러 가지 주소지정가능 개체에 대한 '백 도어'접근을 제공하는 ISF의 5회선 직렬버스(541)는 예를들어, 칩(85)의 USI(542)인 각 칩의 Unit Support Interface(USI)에 결합된다. USI(542)는 8비트 Address Register(566)와 8-비트 Serializer/Deserializer(SERDES ; 548)를 제공한다.
USI Address Register(566)는 칩의 주소 및 칩내의 목표 개체의 주소를 수신하는 반면에, SERDES(548)는 실제 송/수신 매카니즘이다. USI는 또한 시프트-인/시프트-아웃 매카니즘(shift-in/shift-out mechanism)을 위한 동기화 논리도 제공한다.
S/370 칩 세트(150)내의 각 칩에는 4비트(고 순위) ISF/USI 주소가 지정된다. 예를들면, PE(85), 캐쉬 제어기(153), 클럭(152), 어댑터(154), 부동 소수점 공동처리기(151) 및, STCI(155)에는 16진수 값(2,4,6,8,A 및 B)이 각기 지정된다. ISE/USI Address의 저 순위 4비트는 상기 저 순위 4비트에 의하여 주소지정된 내부 칩 개체(예 : 레지스터, 기능 또는 연쇄)를 규정한다.
통신 설계는 Shift Chains(시프트 연쇄 ; 또한 Function Chains(기능 연쇄)이라고도 한다)으로 구성되어 있고, 이 shift chains은 명령, 원시 칩, 수신지 칩, 상기 칩내에 있는 데이터 및 목표 개체를 식별하는 필드로 구성된다. 상기 시프트 연쇄는 다음과 같다.
비트 0-7-기능/명령(Function/Command)
a-11-원시(제어)유닛
12-15-목표(감지된/제어된)유닛
16-23-메시지/데이타
24-27-제어된(기록된)레지스터
28-31-감지된(파독된)레지스터
이러한 Function Chains은 ISF/USI의 직렬 특성과 상기 연쇄가 논리(549,550)와 SERDES 레지스터(548) 내/외로 시프트되어야 한다는 사실 때문에, shift chains(시프트 연쇄)이라고 한다.
Function Chain의 명령 필드(Command Field)에는 기록/제어 명령(Write/Control Command; E61) 또는 판독/감지 명령(Read/Sense Command; F61)이 포함될 수 있다. Function Chain의 예는 다음과 같다 :
E602XX10=처리기(85)의 모드 레지스터(Mode Register)에 기록하라.
여기에서, E6=명령=기록(Write)
0=원시 주소-검사용 PE(62)
2=수신지-PE(85)
XX=메시지(데이타)
1=제어된 레지스터(모두 레지스터 : Mode Register)
0=감지 레지스터(명령이 "기록"이기 때문에 무)
본원에서 설명된 동기화를 설정하기 위한 수법은 PROM(181) 내에 기억된 S/88 프로그램 코드를 이용한다. 이러한 코드는 상기 4가지 상황 및 이에 따른 세트 플래그와 연관된 결정을 행한다. 그다음에, 동기화 루틴은 적당한 동기화 및/또는 초기화를 수행하기 위하여 코드 경로를 제어하는데 이러한 플래그를 이용한다. 2가지 예를들면 다음과 같다 :
특정한 S/88 기판중의 메모리가 전원 고장(Power Fail)으로 구성되어 있고, 그 파트너로부터 재초기화 되었느가의 여부를 결정한다.
특정 S/88 기판이 Defaulted Master Processing Unit(DMPU) 역할을 취해야 하는가의 여부를 결정한다.
다음의 세부항(3-6)은 동기화 매카니증의 2가지 상이한 구현을 설명한다. 그중 하나는 하드웨어의 지원을 받으며, 고속 '시간-준비완료(time-to-ready)' 프로세스를 허용한다. 물론 이것은 적어도 S/370 개체내에 추가 제어 회로를 필요로 하고 특정 S/88 제어회로를 S/370 '인터페이스'에 물리적으로 노출시킴으로써 규정된 것 이상으로 개선될 수 있다. 이러한 '인터페이스'는 실제로 S/88 회로에 대한 S/370회로의 '기생부착( parasitic attachment)'이다.
본원에 규정된 또다른 구현은 S/370 서비스 처리기 (S/370 Service processor)의 에뮬레이션에 있어서, S/88 처리기 개체에 의한 S/370 동기화를 다룰 수 있게하는 마이크로코드이다.
상기 테크닉은 수행 및 '시간-준비완료'가 중요하지 아니한 경우에 이용될 수도 있다.
3. 심플렉스 처리 유닛(Simplexed Processing Unit ; 21) 파워 온/부트(Power On/Boot)이다 (하드웨어 구현(Hardware Implementation)) 상기 상황은 다음 두 조건중 한 조건에 의하여 야기될 수 있다:
1. 이 유닛은 Power On/Boot의 결과로 온라인 된다.
2. 이 유닛은 전원 고장 회복의 결과로서 온라인 된다.
어느 조건에 대해서도, 코드경로를 동일하다:
유닛(21)에 S/88 개체는 그 자가 진단 및 초기와 루틴(Self Test and Initialization Routine ; STIR)의 일부를 수행하고, 그 다음에는, 그 연관 기억장치(16)의 내용이 타협되었는가(전원 고장 상태(Power Fail State))의 여부를 결정하고자 한다. 만약 그렇다면, S/88 개체는 STIR 경로상에 있는 정상 지원으로 물러 날 것이다. 그렇지 아니한 경우에는, S/88 개체는 DMPU일지도 모르는 파트너 또한 공동상주(co-resident)처리 장치를 가지고 있는가의 여부를 결정하고자 할 것이다. 아무것도 찾지못한 경우에는, S/88 개체는 DNPU 책임을 취할 것이고, 임의의 다른 처리 장치를 동기화시키려할 것이다.
유닛(21)의 S/370 개체는 단지 S/88 개체의 본을 따른다. S/370 개체는 S/88 PROM(181)내에 상주하는 코드를 수행하고, 정상 자가 진단을 완료한 다음에, 정상 자가 진단이 초기 파워 온(Initial Power On)이 거나 또는 전원 고장 회복(Power Fail Recovery)인가의 여부를 결정하는 S/88 처리기(62)에 의해 이루어 진다. 파워 온이면, 정상 초기화를 계속하며 ; 그다음에, DNPU라고 가정하면서 SYNC신호를 발하고자 한다. 상기 신호는 S/88처리기 (62)에 레벨 6인터럽트(Level 6 Interrupt)를 강제하는 S/370 논리에 의하여 트랩된다. 상기 인터럽트(6)는 S/88 PROM(181 ; 제19a의도)내의 동기와 마이크로 코드에 백터화될 것이다(이것은 S/88 주소 공간내로 맵된다).
한편, Power On/Boot로부터, S/370 PE(85)는 그 자신의 STIR를 수행하고 그다음에, 그 Sync 포인트에서 수행을 정지한다. 이 시간중, S/370 클럭(520)도 또한 그 자신을 초기화시킨다. S/88레벨 (6) 인터럽트 서비스 서브루틴(S/88 Level 6 Interrupt Service Routine ; ISS, 즉, S/370 마이크로코드(S/370 Synchronization microcode)) 은 제 44도의 ISF/USI 인터페이스를 이용하여 S/370 서비스 처리기(S/370 Service Processor)를 에뮬레이트한다. 이러한 SP 에뮬레이터(Emulator)는 기능 스트링(Function Strings)을 발하여, 어떤 실제 코드 전송도 일어나지 아니하더라도 (마아크로코드가 S/88 PROM 181B 내에 있더라도), S/370 제어 기억장치(171)의 IML 기능을 호출한다. IML 에뮬레이선의 그 다음 단계는 SYNC를 S/370 개체 (처리기 85,87)에 동보 통신(broadcast)하여 처리 유닛(21)이 수행으로 진행시키는 것이다. ISS의 최종단계는 처리 유닛 IPL 상태의 수행을 시작하게 하는 Return-from-Interrupt하는 것이다.
S/88 처리 유닛 'module_start_up.cm'의 일부로서, 에뮬레이트된 서비스 처리기 'IPL Botton Pushed' Function String이 S/370 처리 유닛으로 송신되어 디스크로부터 S/370 주기억장치를 로딩하는 IPL 기능을 수행할 것이다. 그 다음에, IPL의 최종 단계 제어를 위치 0에 의하여 명시된 주소로 통과시키는 것이다.
B. 마이크로코드 전용 구현(Microcode-Only Implementation)
유닛 (21)의 S/88 개체는 그 자가 진단 및 초기화 루틴(STIR)을 수행하고 그 다음에, S/88 개체가 Initial Power On(IPO) 또한 전원 고장 회복(Power Fail Recovery ; PER)인가의 여부를 결정한다. 상기가 IPO이면, 코드는 유닛 (21)이 심플렉스 개체라고 계속하여 운영체제를 로드하고 그 '시동'루틴을 수행한다.
상기가 PER인 경우에는, 코드는 그 연관 기억장치를 완전성이 손상되었는지의 여부를 결정한다. 손상되었으면, 코드는 이것이 IPO인 것처럼 속행한다. 메모리의 내용이 손상되지 아니하였음이 판명된 경우에는, PER 코드는 정상 재시작(Restart) 타스크를 속행한다.
상기 어느 경우에 있어서도, 동기화 되어질 어떤 연관 파트너도 없기 때문에, 동기화 기능은 '의사(dummy)' 작동이 된다.
4. 듀플렉스 처리 유닛(Duplexed Processing Unit ; 21,23.)가 Power On 하드웨어 구현
이 상황은 다음의 2가지 조건중 하나에 의하여 야기될 수 있다.
1. 이 유닛은 Power On/Boot의 결과로서 온라인된다.
2. 이 유닛은 전원 고장 회복의 결과로서 온라인된다.
각 처리 유닛(21,23)의 S/88 개체는 그 자가 진단 및 초기화 루틴(STIR)의 일부를 수행하고 그 다음에, 그 연관 기억 장치(16)의 내용이 손상되었는가(전원 고장 상태)의 여부를 판정하고자 한다. 손상되었다면, S/88 개체는 정상 Power On STIR) 경로로 물러날 것이다. 그렇지 아니하면, 이 개체는 그것이 DMPU일 수도 있는 파트너 또는 공동-상주 처리 장치를 가지고 있는가 또는 그것이 DMPU 인가의 여부를 판정하고자 할 것이다. 만약 DMPU이면, DMPU의 책임을 취하고, 임의의 다른 처리 장치를 동기화시키고자 할 것이다. DMPU가 아니면, 그것은 Sync 포인트로 진행하고 SYNC를 대기할 것이다.
각 S/370 개체는 단순히 S/88 개체의 본을 따른다. 그 PROM(181)내에 상주하는 코드를 수행하는 S/88 개체는 정상 자가 진단을 완료하고 그 다음에, 정상 자가 진단이 Power On인가 또는 전원 고장 회복인가를 결정한다. 정상 자가 진단이 Power On이면, 정상 초기화를 계속하고, 그 다음에, Sync 포인트로 진행한다. 정상 자가 진단이 전원 고장 회복이면, 그것이 유효한가의 여부를 결정하기 위하여 캐쉬가 조사된다. 상기가 유효한 경우이면, 정상 자가 진단이 파트너의 캐쉬가 무효임이 발견될 때에는, 그 파트너의 메모리를 갱신할 수도 있다. 그 자체의 캐쉬가 무효인 경우에는, 그 파트너에 따라 그 자체를 유효한 캐쉬 내용으로 갱신하여야 한다. 파트너가 유효한 메모리를 취할 수 없는 경우에는, 양자는 한쌍으로서 정상 Power On과 초기화를 계속하여야 한다. 처리 유닛쌍의 S/88 개체가 Sync 포인트에 접근하면, 각 S/88 개체는 자신이 DMPU 책임을 취하여야 하는가의 여부를 결정한다. 그것이 DMPU임이 발견된 때에는, SYNC를 발견하고자 한다.
동기 신호는 S/370 논리에 의하여 트랩되고, 레벨(6) 인터럽트(Level 6 Interrupt)를 S/88 개체에 강제한다. 인터럽트는 PROM(181)내의 S/370 동기화 마이크로코드에 벡터화될 것이다(상기는 S/88 주소 공간내로 맵된다). 한편, Power On/Boot로부터 S/370 개체 (예를들어, 처리소자(85,87))는 그 자신의 STIR를 수행하고 그 다음에, 그 Sync 포인트에서 수행를 정지한다. 상기가 전원 고장 회복이면, S/370 개체는 메모리의 완전성 및 동기화를 취하기 위하여는 얼마만큼 초기화 루틴으로 물러나야 할지를 결정하는 S/88 개체 프로세스와 유사한 프로세스를 거치게 된다. 이 시간중 S/370 클럭(152)은 그 자신을 초기화시킨다.
S/370 처리기에 의해 S/88 SYNC 펄스를 트랩하는 양호한 메카니즘의 간단한 설명이 제20도, 제49도 및, 제50도와 관련하여 이에 설명될 것이다.
S/88 처리기는 회선(570 ; 제50도)상의 SYNC OUT 신호를 발하는 유닛 (23)의 S/88 처리기쌍중 하나에 의하여 동기화를 달성한다. 파트너 유닛이 초기화 및 자가 진단되었고 BROKEN 되지 않을 것임이 결정되면, 파트너 유닛은 회로(572)에 의하여 반전된 BROKEN 회선(571)상의 신호 레벨을 가져, AND INVERT 게이트(573)를 통하여 SYNC OUT 신호를 게이트시킨다.
원래의 System 88(예를들어, 모듈10)에서는, SYNC 신호가 회선(577) 및 인버터(574)를 통하여 유닛(14)의 드라이브(d)의 S/88 처리기의 SYNC IN 회선(580)에 인가된다. 이 신호는 또한 C 버스 및 인버터(576)를 통하여 유닛(12)의 검사 S/88 처리기의 SYNC IN 회선(575)에도 인가되고 로크-스탭으로 유닛(12,14)의 모든 4개의 S/88 처리기의 '시작'을 개시한다.
개선된 S/370-S/88 유닛(21,23)에서는, 회로 (573)의 출력(577)은 SYNC IN 회선(580,575)으로부터 분리되어 S/88 처리기의 시작을 방지한다. 대신에, 상기 출력은 회선(581)을 통하여 플립-플롭(582)을 파트넛 유닛(21)의 BCU(156)내에 세트시키도록 접속된다(제49도). 상기 출력은 또한 대응 플립-플롭은 유닛(21)내의 쌍으로 된 BCU(도시되지 않음)내에도 세트시킨다. 이하 설명은 유닛(21)내의 하나의 S/370 및 연관 하드웨어만을 주소지정할 것이나, 두 S/370 개체도 동일한 방식으로 작동되는 것을 알 수 있을 것이다.
플립-플롭(582)은 회선(583), OR 회로(292a, 292 ; 제20도 참조), 인터럽트 논리(293) 및, 회선(IPO-2)을 통하여 레벨(6) 인터럽트 신호를 S/88 처리기 (62)에 인가한다. 이 활동은 S/370에 의해 S/88 SYNC 신호의 "트래핑"이라 한다.
유닛(21)의 S/370 개체가 그 자가 진단과 초기화 루틴(STIR)을 성공적으로 수행하고, 시작에 대해 준비완료되었다고 가정될 것이다.
다른 DMAC 및 BCU 레벨(6) 인터럽트에 관하여 제20도에서 이미 설명한 바와 같이, S/88 처리기 (62)는, 회선(583)상의 SYNC 신호에 응답하여, 인터럽트 긍정응답 사이클을 개시한다. 처리기(62)로부터의 기능 코드 및 우선순위 레벨은 논리(281)에서 디크드되고, 지역 BCU 버스 요구가 디코드 논리(281)의 출력(283), 게이트(291), 회선(287) 및 OR 회로(284)를 통하여 회선(190)상에 행하여진다.
버스 사이클이 회선(191)상의 처리기(62)에 허가되면, 이 버스 사이클(SYNC 회선(583), AS 회선(270) 및, 디코드 회선(283)상의 신호와 함께)은 AND 게이트 (294-4)로 하여금 IACK 회선(258f)에 신호를 인가할 수 있게 한다. 상기 신호가 벡터 비트 논리(584 ; 제49도)에 인가되어, BCU 지역버스(223), 구동기-수신기(218) 및, 처리기 버스(161D)를 통하여 S/88 처리기 (62)에 적당한 벡터 번호를 인가한다. 회선(258f)상의 신호도 또한 플립플롭(582)를 리세트시킨다.
S/370 STIR 기능이 가정한대로 이미 완료된 경우에는, S/88 처리기(62)는 판독 사이클을 수행하여, 백터 번호를 얻는데, 이 벡터 번호는 처리기(62)에 의해 S/370 동기화를 위한 인터럽트 루틴의 제1의 명령어에 접근하는데 이용된다.
동기화 루틴의 최종 명령어는 SYNC 신호를 회선(586 ; 제50도)에 인가하는 SYNC 명령을 발생시킨다.
이 신호는 SYNC 회선(580,575)에 인가되어, 로크-스텝으로 파트너 유닛(21,23)의 S/88( 및 S/370) 처리기를 "시작"시킨다. S/88 'Module start up. cm'의 일부로서, 에뮬레이트된 SP 'IML Button Pushed' Function String은 유닛(21,23)내의 S/370 개체로 보내질 것이다. DASD 접근의 전체 IMS 기능을 수행하기 보다는, 상기 IML은 I/O 프로세스를 바이패스하고, S/88 주기억장치(S/88 Main Storage)로부터 로드 된다. 상기 EXEC370 코드는 이미 DASD로부터의 IPL 코드를 인출하였고 이를 IPL을 대기하는 S/88 주기억장치내에 배치한다. 그 다음에 IPL의 최종 단계는 제어를 위치(0)에 의하여 명시된 주소에 통과시키는 것이다.
B. 마이크로코드 전용 구현(Microcode-Only Implementation)
PU 기판중 어느 하나가 초기 Power On(IPO) 또는 전원 고장 회복(PFR)의 결과로서 Power up된다.
먼저, IPO의 경우를 설명하면 다음과 같다:
IPO에 의하여 접근되어진 S/88 Power Good 신호의 결과로서, 보수 인터럽트(Maintenance Interrupt)가 S/88 PROM(181) 코드를 호출한다. 이코드는 유닛(21)의 S/88 개체를 동기화하고 그 다음에, PROM(81)내에 상주하는 S/370 STIR를 호출한다. S/370 STIR 이것이 IPO이기에, S/88 및 그 운영 체제의 설비가 필요할 때, 초기화 및 동기화를 허용하기에 충분한 설비가 로드되어 있지 아니하다고 판정한다. 그 결과, S/370 STIR는, 추가 활동없이도, S/88 PROM(181) 코드로 리턴하고, 이 코드는 O/S를 로드하기 위하여 진행한다. O/W 초기화의 일부로서, '시동(start-up)' 모듈이 호출된다. 이 모듈도 PROM(181)내에 상주하는 S/370 STIR을 호출한다. 이때, STIR은 필요한 설비가 유용하고, 그 다음에 이들을 초기 마이크로코드 로드(Initial Microcode Lode ; IML) 자체를 동기화하는데 이를 허용한다.
두 번째로, PFR의 경우를 보면 다음과 같다 :
IPO에 의하여 가정되어진 S/88 Power Good 신호의 결과로서, 보수 인터럽트가 S/88 PROM(181) 코드를 호출한다. 이 코드는 유닛 (21)의 S/88 개체를 동기화시키고 그 다음에 PROM(181)내에 상주하는 S/370 STIR를 호출한다. S/370 STIR는 이것이 PFR이기에, 필요한 설비가 유용하고, S/370 개체 또는 유닛(21)을 동기화 및 초기화시키기 위해 진행한다.
5. 다른 유닛(21)이 정상적으로 프로세스하는 동안 파트너(23)가 삽입된다(Parter 23 Is Inserted While The Other Unit 21 Processes Normally)
A. 하드웨어 구현(Hardware Implementation)
레벨(6) 인터럽트는 새로운 기판의 삽입에 의하여 현행 유닛(21)의 S/88 개체에 포스트될 것이다. 상기 새로운 처리 유닛이 그 STIR를 실시하는 동안, 상기 현행 처리 유닛은 레벨(6) 인터럽트를 인식할 것이다. 상기 레벨(6)은 선점된 타스크 환경을 달성하는 프로세스에 착수하고, 상기 새로운 처리 유닛이 온라인에 있는가를 결정하고, 온라인인 때에는, 인터럽트로부터 리턴한다. Return-from-Interrupt의 기능으로서, 2개의 유닛이 로크스텝 동기화를 시작하고, 선점된 타스크를 재시작할 것이다.
B. 마이크로코드 전용 구현(Microcode-Only Implementation)
삽입되어진 새로운 기판의 결과로써, 인터럽트(Maintenance Interrupt)는 S/88 PROM(181) 코드를 호출한다. 이 코드는 유닛(21)의 S/88개체를 재동기화시키고, 그 다음에, PROM(181)내에 상주하는 S/370 STIR를 호출한다. S/370 STIR는 이것이 PFR와 유사하기에, 필요한 설비가 유용하고, 유닛(21)의 S/370 개체를 동기화 및 초기화시키기 위한 진행을 한다.
6. 파트너는 비교 고장을 탐색한다(Partener Detects A Compare Failure)
A. 하드웨어 구현(Hardware Implementation)
고장 처리 유닛이 그 STIR내로 강제되는 반면에, 정상 수행 처리 유닛은 강제된 레벨(6) 인터럽트(forced Level 6 Interrupt)에 의하여 인터럽트될 것이다. 레벨(6) 인터럽트 서비스 서브루틴(Level 6 Interrupt Service Subroutine)은 선점된 타스크 환경을 성취하는 프로세스에 착수하고, 새로운 처리 유닛이 온라인 인가의 여부를 결정하고, 온라인 인때에는, 인터럽트로부터 리턴한다. Return-from-Interrupt의 기능으로서, 2개의 유닛은 로크 스텝 동기화를 개시하고, 선정된 타스크를 속행한다. 고장 처리 유닛이 그 STIR을 정확하게 (예를들어,한번 또는 선택된 회수의 시도) 퇴거시키지 못하면, 정상 수행 처리 유닛은 적당한 시간이 경과한 후, BROKEN을 고장난 처리 유닛 및 그 여러 가지 상태 보고 설비의 S/88 부분에 세트시킨다.
B. 마이크로코드 전용 구현(Microcode-Only Implementation)
비교-고장 검출 및, 오프 라인되어진 기관의 결과로서, 보수 인터럽트가 S/88 PROM(181) 코드를 호출한다. 이 코드는 유닛(21)의 S/88 개체를 재동기화시키고, 그 다음에 PROM(181)내에 상주하는 S/370 STIR를 호출한다. S/370 STIR는 이것이 PFR와 유사하기에, 필요한 설비가 유용하고 유닛(21)의 S/370 개체를 동기화 및 초기화시킨다. 또다른 비교 고장은 반복되어진 동일한 행동을 초래할 것이다. 예정된 회수의 반복후에, 상기 기판은 영구히 오프 라인되며, 고장이 보고될 것이다.
대안의 실시예(Alternative Embodiments)
1. 다른(비 S/88) 고장 허용 한계 시스템 내에서의 이용(Use in Other(non-S/88) Fault-Tolerant Systems)
양호한 실시예에 있어서, 하드웨어 고장 허용 한계는 적어도 3가지 특징을 갖는 것으로 나타난다. 데이터 에러를 시스템의 다른 소자에 전파하지 않고도, 고장 필드 대체 가능 유닛의 즉각적인 전기 절연이 있다. 동적 재구성 코드는 필요한때 소자를 제거 또는 추가하기 위하여 제공된다. 시스템의 손실없이, 서브 시스템 또는 필드 대체가능 유닛으로부터 전원을 제거하고, 이에 전원을 인가할 수 있는 능력, 즉, 핫 플러그 능력(hot plug capability)이 제공된다. 유저는 어떤 기능 또는 성능의 손실을 감지하지 못한다.
본 발명이 전술한 엄격한 조건중 특정 조건이 결여되어 있는 소프트웨어 고장 허용 한계 시스템과 같은 사이한 고장 허용 한계 환경내에서도 이용될 수 있다.
본 발명이 이용될 수도 있는 또 다른 시스템(엄격한 조건중 특정 조건이 결여된)의 예는 1982년 10월 26일에 제임스 에이. 카트만씨 등에게 허여 발명이 명칭이 "마이크로처리기 시스템"인 미국 특허 제4,356,550호에 도시되었다. 이 특허의 제 1도에서는, 3개의 처리 서브시스템이 서로 비동기적으로 작동하고, 중복된 버스에 결합된다. 하나의 서브 시스템이 고장나면, 나머지 2개가 프로그램 수행을 계속할 수 있다. 모든 에러는 본 출원의 양호한 실시예에서와 같이, 순간적이기 보다는 프로그램내의 검시 지점에서 결정된다.
상기 특허의 서브시스템과 다른 S/370 처리기와 같은 처리기는 본 출원에서는 S/88에 관하여 도시된 것과 유사한 방법으로 이러한 서브시스템에 부착될 수도 있다. 본 특허의 서브시스템내의 선택 회선을 본 출원의 주소 스트로브(AS) 회선에 관하여 설명한 것과 유사한 방식으로 사용 및 제어함으로써, 상기 서브시스템의 처리기가 분리되어서, 부착된 다른 기생 처리기용의 I/O제어기로서 이용할 수 있다.
2. S/88 I/O 제어기 및 S/370 주기억장치간의 직접 데이터 전송(Direct Data Transfers Between S/88 I/O Controllers and S/370 Main Storage)
양호한 실시예에 있어서는, 캐쉬(340)가 오늘날 전형적인 S/370 캐쉬 시스템의 상태에서 사실 그대로, 일부 유효 I/O 데이터를 위한 전용 기억장치(모든 유효 I/O 데이터를 기억하는 기억장치(162)라기 보다는)라고 가정할 수도 있다. 기억장치(162)가 모든 유효 I/O 데이터를 기억한다고 가정하는 제51도의 실시예에 있어서, I/O 데이터 전송은 디스크 제어기(20)와 같은 S/88 I/O 장치와 더 효율적 작동용의 S/370 기억장치(162)간에 직접 행해질 수도 있다.
그러나, 이 대안의 실시예에 있어서, BCU(156)는 여전히 S/370 I/O 명령을 S/88로 전송하기 위하여 이용되어야 한다. 이 명령과 연관된 시스템 370 기억장치 주소는 EXEC370 코드에 의하여 S/88 물리적 주소로 바뀌어져야 하는 반면에, 상기 명령은 S/88 명령으로 변환되어진다.
기억장치(162)로부터 I/O 장치로의 데이터 전송중, 하나의 방법은 I/O 연산을 수행하기 전에, I/O 작동과 관련된 캐쉬 부분을 기억장치(162)로 먼저 플러시(flush)하는 것이다.
I/O 장치로부터 기억장치(162)로의 데이터 전송중, I/O 작동에 관련된 캐쉬의 섹션은 I/O 작동 수행전에 무효화된다.
데이터 변환이 필요한 경우에는, 상기 기능은 S/88 처리기(62)내에서 EXEC370에 의해 이용되는 것과 유사한 루틴에 의하여 I/O 장치 제어기내에서 수행될 수도 있다.
데이터 변환은 또한 ASCII-EBCDIC 변환과 같은 S/88 OS내의 변환 루틴을 호출하는 EXEC370 응용에 의해서 수행될 수도 있다.
3. 직접 연결된 처리기쌍의 분리(Uncoupling Both Processors of a Directly Conneted Pair)
제52도는 직접 결합된 한쌍의 처리기가 되도록, 양호한 실시예의 S/88 처리기(62)에 관하여 설명된 것과 일반적으로 유사한 방법으로 그 연관 하드웨어로부터 분리되어, 운영 체제에 대해 투명한 방법으로 처리기간에 명령 및/또는 데이터를 전송하는 대안의 실시예의 데이터 흐름을 설명한다.
2개의 처리기(640,641)는 처리기 버스(642,643), 구동기 송신기 회로(644,654) 및, 공통 지역 기억장치 유닛(646)을 통하여 서로 결합된다. 처리기(640,641)는 동일하거나 또는 상이한 아키텍쳐 및 동일하거나 또는 상이한 운영 체제를 가질 수도 있다. 각 처리기(640,641)는 각각의 운영 체제의 제어하에 프로그램의 정상 처리를 위한 주기억장치 및 I/O 장치를 포함하는 그 자체의 하드웨어(도시되지 않음)를 가질 수도 있다. 운영 체제는 다른 운영 체제와 연관된 처리기의 존재나 또는 이와의 결합을 전혀 알지 못한다.
그러나, 상기 대안의 실시예의 처리기(640)가 명령 및/또는 데이터를 처리기(641)로 보내기 위하여 응용 프로그램에 의하여 제어되어 때에는, 처리기는 선정된 주소를 처리기 주소 버스(647)상에 배치하는데, 이 주소를 논리(648)가 디코드하여, 처리기(640)로부터 기억장치(646)로의 명령 및 데이터 전송을 위하여, 회로(644)가 버스(642)를 지역버스(652)를 통하여 지역 기억장치(646)에 결합시킨다. 주소의 디코딩은 또한 처리기(640)를 그 연관 하드웨어부터 분리시켜 그 전송이 처리기(640)의 운영 체제에 투명하게 되게 한다.
처리기(641)용으로 예정된 I/O 명령 및/또는 데이터가 지역 기억장치(646)내로 전송되었을 때, 분리 제어 논리(649)가 처리기(641)를 인터럽트한다. 처리기(641 ; 그 응용 프로그램 인터럽트 조정기를 통하여)는 그 하드웨어로부터 분리되고, 그 운영 체제에 대하여 투명한 방법으로 기억장치(646)로부터 그 주기억장치(도시되지 않음)로의 명령 및 데이터내에서 판독된다. 명령 및/또는 데이터가 변환을 필요로 하는 경우에는, 처리기(641)는 기억장치(650)내의 에뮬레이션 마이크로코드를 이용하여 필요한 변환을 수행한다. 그 다음에, 처리기(641)는 그 운영 체제의 제어하에 변환된 명령을 처리한다.
처리기(640,641)의 "분리"(uncoupling)는 각 처리기가 그 하드웨어에 "재결합"될 수 있기 전에, 명령 및/또는 데이터의 상당한 세그먼트를 지역 지억장치(641)로/로부터의 연속 전송을 허용할 수도 있다. 이러한 방법으로, 고 속의 효율적 데이터 전송이 이루어질 것이다.
명령 및/또는 데이터는 동일한 방법으로 처리기(641)로부터 처리기(640)로 역방향으로 전송될 수도 있다. 상기명령 및/또는 데이터는 필요한 경우에는 기억장치(651)내에 위치된 에뮬레이션 마이크로코드에 의하여 변환될 수도 있고 ; 변환된 명령은 그 운영 체제의 제어하에 처리기(640)내에서 처리될 수도 있다.
이러한 대안의 실시에는 데이터 전송을"개시하는" 처리기가 그 하드웨어부터 분리되어 데이터를 "수신"처리기로 보낸다는 점에서 양호한 실시예와 다르다. 상기는 I/O 기능(명령 및/또는 데이터를 또다른 처리기로 전송)이 수행되어야 할 때, 양호한 실시예의 EXEC370/ETIO와 유사한 응용 프로그램으로 제어를 전송하는 추가 기능을 필요로 한다.
운영 체제로부터 응용 프로그램으로 특정 I/O 작동용 제어의 전송을 실행하는 수단은 시스템의 특성에 따를 것이다.
예를들명, 양호한 실시예에 있어서, S/370은 Start I/O 명령어를 수행하는데, 이 명령어는 S/370 처리기를 그 연관 하드웨어로부터"분리"시키지 않고도 정상적 방식으로 운영 체제에 의하여 처리된다.
제52도의 대안의 실시예에 있어서는, S/370 처리기(640)가 명령 및/또는 데이터를 처리기(641)에 보낼시에, 선택된 무효 OP CODE는 Statr I/O 명령어에 대신에 이용될 수도 있다. 선택된 무효 OP 코드의 하드웨어 또는 마이크로코드 디코드는 제어를 특별 응용 프로그램에 전송하고, 이 프로그램은 S/370을 처리기(641)에 의하여 기억장치(646)를 통하여 정보 전송을 위한 그 하드웨어로부터"분리"시킨다.
다른 처리기에 의하여 기억장치(646)로 전송된 데이타를 한 처리기가 중복기재하는 것을 방지하기 위하여, 처리기(640)는 기억장치(646)의 한 특정 섹션내에만 기록하도록 제어될 수도 있고 ; 처리기(641)는 이러한 한 섹션으로부터만 판독하도록 제어된다. 처리기(641)는 기억장치(646)의 제 2섹션내에만 기록하는 것이 허용되면, 처리기(640)는 이러한 제 2섹션으로 부터만 판독하는 것이 허용된다. 처리기(640,641)가 제2 및 한 섹션내에 각기 기록하는 것은 금지된다.
분리 및 인터럽트 매카니즘은 양호한 실시예의 S/88 처리기(62)에 관하여 설명한 바와 같이, 2개의 처리기(640,641)의 운영 체제에 대하여 투명하게 작동된다.
에뮬레이션 기능은 양호한 실시예의 EXEC370에 관하여 설명된 것과 동일한 방법으로 응용 프로그램(지역 기억장치내의 마이크로코드에 의하여서 보다는)에 의하여 수행될 수 있다.
처리기(640,641) 사이에 데이터를 전송하기 위하여 인터럽트 매카니즘 보다는 폴링 기법(polling techniques)이 사용될 수 있으나 ; 이러한 기법은 비효율적이다.
어느 처리기(640,641)도 다른 처리기용 I/O 연산을 수행할 수 있기 때문에, 어느 처리기도 다른 처리기용 특정 I/O 환경 특성을 취할 수 있음을 알 수 있을 것이다.
한 처리기 내에서의 한 응용이 처리 시스템내의 운영 체제의 서비스를 이용하지 않고도 제 2처리기내의 유사한 또는 상이한 응용에 통신할 수도 있음도 알아야 한다.
특정 특허청구 범위내에서, "응용 프로그램 또는 코드"라는 용어는 데이터 처리 분야의 경험자가 이해하고 있는 그 종래의 의미로 사용된다 ; 즉, 상기 용어는 다음과 같은 면에서 운영 체제와 전형적으로 구별된다.
1. 응용 프로그램은 운영 체제의 상단에 놓여 있고 통상 판독, 기록 및 I/O 제어 , 시각등(Read, Write and Control of I/O Time of Day, etc.)과 같은 서비스를 위해 운영 체제를 호출하여야 한다.
2. 응용 코드는 유저에 의하여 시작되거나 또는 개시되고, 운영 체제 서비스를 통하여 로드된다.
3. 운영 체제는 기억장치에 드나드는 응용 프로그램의 페이징을 제어한다.
4. 운영 체제는 주 기억장치를 응용 프로그램에 할당한다. 그러나, 이러한 "응용 코드"에는 수행할 추가 기능이 주어진다.
"다른"(alien)이라는 용어는 특정 특허청구 범위에서 운영 체제 구성 테이블내에 규정되어 있지 아니하기 때문에, 운영 체제에 알려지지 아니한 장치를 규정하는데 사용되고 ; 그러므로, 운영 체제는 이 장치에 대한 아무런 장치 구동기로 구비하지 못해거 상기 장치를 제어할 수 없다. 그러나, 운영 체제상에서 실시되는 특정 응용 프로그램은 이 장치를 알고 있어서 상기 장치에 대한 특정 제어를 행사한다.
특허청구 범위에서, "분별(discern)"이라는 용어는 운영 체제가 이를 운영하는 처리기에 연결된 다른 장치를 알지 못하거나, 또는 처리기에 의해 행동이 취해지고 이러한 행동에 의해 운영 체제로부터 분리되어 이 운영 체제가 이러한 행동을 거절하지 못하게 한다는 의미로 사용된다.
명세서에서, "투명한(transparent)"라는 용어는 빈번이 이와 동일한 의미로 상용되었다.
비록 본 발명이 양호한 실시예와 관련하여 도시 및 설명되었다 하더라도, 이 분야의 전문가는 상기 제안 되는 여러 가지 변화 및 대안의 형태와, 형태 및 세부사항에서의 다양한 다른 변화가 본 발명의 교시를 벗어나지 않고도 행해질 수도 있음을 알 수 있을 것이다. 그러므로 상기 설명 및 도면은 제한적이라기 보다는 예시적이라 할 수 있으며, 첨부된 특허청구의 범위에는 이러한 모든 변화 및 변경도 본 발명의 정신 및 범위내에 속하는 것으로 본다.

Claims (22)

  1. 다음 운영 체제 컴퓨터 장치(multiple operating system computer apparatus)에 있어서, 제 1응용 프로그램(first application program)의 제어하에, 제 1운영 체제(first operating system)를 통해 작동하는 제 1처리기(first processor)와 ; 제2응용 프로그램의 제어하에, 상기 컴퓨터 장치에 대하여 자원 장치 서비스(resource device service)를 제공하는 제2운영 체제를 통해 작동하는 제 2처리기 및 ; 상기 처리기 간에 결합되어 상기 제1 및 제2응용 프로그램간에 정보의 직접 전송을 용이하게 하는 정보 전송 장치를 포함하는데, 상기 정보 전송 장치는, 상기 제 1처리기로부터의 명령을 처리하라는 요구를 검출하는 제 2응용 프로그램과 협력해서, 상기 명령을 상기 제 2처리기로 전송하고, 이러한 명령을 적절한 자원 장치 명령으로 변환시켜, 상기 제2운영 체제의 서비스를 이용하지 않고도, 상기 제1운영 체제와 일치하는 긍정응답 신호로 상기 제 1처리기에 응답하는 것을 특징으로 하는 다중 운영 체제 컴퓨터 장치.
  2. 제1항에 있어서, 정보 전송 장치는, 제 2응용 프로그램의 제어하에 제 2처리기를 사용하므로, 시스 자원 장치와 제 1처리시간에 정보를 전송하는 것을 특징으로 하는 다중 운영 체제 컴퓨터 장치.
  3. 제2항에 있어서, 제 2응용 프로그램과 협럭하는 상기 정보 전송 장치는 데이타 전송의 종결시에 긍정응답 신호를 제 1처리기로 보내기 위한 수단을 포함하는 것을 특징으로 하는 다중 운영 체제 컴퓨터 장치.
  4. 전체 자원 장치에 대한 직접 제어를 각각 행사할 수 있도록 설계되어진 변경되지 않은 상이한 운영 체제를 통하여 작동하는 응용 프로그램의 공존 및 이들간의 직접적인 테이타 전송을 허용하기 위한 장치에 있어서, 제1의 변경되지 않은 운영 체제를 통하여 결합된 제1응용 프로그램에 응답하여, 제1운영 체제를 통하여 선택된 자원 장치를 식별 및 제어하기 위한 명령어를 발생하는 제1처리기와 ; 제2의 실제 변경되지 않은 운영 체제를 통하여 결합된 제2응용 프로그램에 응답하여, 모든 자원 장치를 실제로 제어하기 위한 명령어를 발생하는 제2처리기 및 ; 선택된 자원 장치를 제어하기 위해 상기 제 1처리기로부터의 명령어를 포함하는 응용 프로그램간의 테이타 및 명령어의 직접 교환을 위해 상기 제1 및 제2처리기를 결합시키는 논리 수단을 포함하는데, 상기 논리 수단은 상기 제1처리기로부터의 명령을 처리하라는 요구를 검출하는 제 2응용 프로그램과 협력해서, 상기 명령을 상기 제 2처리기로 전송하고 이러한 명령을 적절한 자원 장치 명령으로 변환시켜, 상기 제 2운영 체제의 서비스를 이용하지 않고도, 상기 제 1운영 체제와 일치하는 긍정응답 신호로 상기 제 1처리기에 응답하며 ; 상기 제 2응용 프로그램은 선택된 자원 장치에 접근하기 위해 제 2운영 체제를 통하여 작동하는 제 2처리기에 의한 수행을 위해 제 1처리기에 의해 발생된 명령어에 응답하여 번역된 명령어를 발생하며 ; 응용 프로그램간에 정보가 직접 교환되고 각 변경되지 않은 운영 체제가 공동 환경 공유 자원에 공존하고 자원 장치중 상기 공지된 자원 장치의 전체 제어를 행사하는 정상 방법으로 작동한다는 것을 유저에게 나타내는 것을 특징으로 하는 응용 프로그램의 공존 및 직접적인 데이타 전송 허용 장치.
  5. 제4항에 있어서, 제 2처리기는 제 2응용 프로그램을 통하여 시스템 자원 장치와 제 1처리기간에 대이타를 전송하기 위한 수단을 포함하는 것을 특징으로 하는 응용 프로그램의 공존 및 직접적인 데이타 전송 허용 장치.
  6. 제5항에 있어서, 제 2처리기는 데이타 전송의 종결시에 긍정 응답 신호를 제 1처리기로 보내는 것을 특징으로 하는 응용 프로그램의 공존 및 직접적인 데이타 전송 허용 장치.
  7. 다중 운영 체제 컴퓨터 장치에 있어서, 제1응용 프로그램의 제어하에, 제1운영 체제를 통해 작동하는 제1처리기와 ; 제2응용 프로그램의 제어하에, 상기 컴퓨터 장치에 대하여 자원 장치 서비스를 제공하는 제2운영 체제를 통해 작동하는 제2처리기 및 ; 상기 처리기간에 결합되어 상기 제1및 제 2응용 프로그램간에 정보의 직접 전송을 용이하게 하는 정보 전송 장치를 포함하는데, 상기 정보 전송 장치는 제1운영 체제를 통하여 작동하는 제1응용 프로그램과, 제2운영 체제의 서비스와 무관하게 작동하는 제2응용 프로그램에 접근할 수 있는 주소 지정기능 메모리 구역을 통해 정보를 전송하기 위한 수단을 포함하는 것을 특징으로 하는 다중 운영 체제 컴퓨터 장치.
  8. 제7항에 있어서, 제1응용 프로그램에 의해 개시된 명령이 제1운영 체제를 통하여 처리되는 시작 입력/출력 기능을 요구하는 것을 특징으로 하는 다중 운영 체제 컴퓨터 장치.
  9. 제8항에 있어서, 제1처리기로부터의 명령어에 응답하여, 상기 정보 전송 장치가 제2처리기에 선정된 인터럽트 신호를 발생시키는 것을 특징으로 하는 다중 운영 체제 컴퓨터 장치.
  10. 제9항에 있어서, 상기 제1처리기로부터의 명령어가 시작 I/O 명령인 것을 특징으로 하는 다중 운영 체제 컴퓨터 장치.
  11. 제9항에 있어서, 선정된 인터럽트 신호의 검출에 응답하여, 제2응용 프로그램이 제1처리기로부터의 명령어를 서비스 및 번역하는 것을 특징으로 하는 다중 운영 체제 컴퓨터 장치.
  12. 제11항에 있어서, 제2응용 프로그램은 제2처리기의 적접 명령을 취하여,제2운영 체제의 서비스를 이용하지 않고도 주소 지정 가능한 메모리 구역을 통하여 정보의 전송을 완료하게 되는 것을 특징으로 하는 다중 운영 체제 컴퓨터 장치.
  13. 제12항에 있어서, 제2운영 체제를 통하여 작동하는 제2처리기가 지원 장치에 접근하고 자원 장치와 메모리 구역간에 정보를 전송하는 것을 특징으로 하는 다중 운영 체제 컴퓨터 장치.
  14. 제13항에 있어서, 상기 정보 전송 장치는 제2응용 프로그램과 협력하여 데이터 전송의 종결시에 긍정 응답 신호를 제1응용 프로그램에 보내고 통상적으로 제2운영 체제를 통하여 작동하는 제2응용 프로그램에 응답하게 제2처리기에 제공하는 것을 특징으로 하는 다중 운영 체제 컴퓨터 장치.
  15. 전체 자원 장치에 대한 직접 제어를 각각 행사할 수 있도록 설계되어진 변경되지 않은 상이한 운영체제를 통하여 작동하는 응용 프로그램의 공존 및 이들간의 직접적인 데이터 전송을 허용하기 위한 장치에 있어서, 제1의 변경되지 않은 운영체제를 통하여 결합된 제1응용 프로그램에 응답하여, 제1운영 체제를 통하여 선택된 자원 장치를 식별 및 제어하기 위한 명령어를 발생하는 제1처리기와 ; 제2의 실제 변경되지 않은 운영 체제를 통하여 결합된 제2응용 프로그램에 응답하여, 모든 자원 장치를 실제로 제어하기 위한 명령어를 발생하는 제2처리기 및 ; 선택된 자원 장치를 제어하기 위헤 상기 제1처리기로부터의 명령어를 포함하는 응용 프로그램간의 데이터 및 명령어의 직접 교환을 위해 상기 제1 및 제2처리기를 결합시키는 논리 수단을 포함하는데, 상기 논리 수단은 제1운영 체제를 통하여 작동하는 제1응용 프로그램과, 제2운영 체제의 서비스와 무관하게 작동하는 제2응용 프로그램에 접근할 수 있는 주소 지정 가능 메모리 구역을 통해 정보를 전송하기 위한 수단을 포함하며, 상기 제2응용 프로그램은 선택된 자원 장치에 접근하기 위해 제2운영 체제를 통하여 작동하는 제2처리기에 의한 수행을 위해 제1처리기에 의해 발생된 명령어에 응답하여 번역된 명령어를 발생하며 ; 응용 프로그램간에 정보가 직접 교환되고 각 변경되지 않은 운영체제가 공통 환경 공유 자원에 공존하고 자원 장치중 상기 공지된 자원 장치의 전체 제어를 행사하는 정상 방법으로 작동한다는 것을 유저에게 나타내는 것을 특징으로 하는 응용 프로그램의 공존 및 직접적인 데이터 전송 허용 장치.
  16. 제15항에 있어서, 제1응용 프로그램에 의해 개시된 명령이 제1운영 체제를 통하여 처리되는 시작입력/출력 기능을 요구하는 것을 특징으로 하는 응용 프로그램의 공존 및 직접적인 데이터 전송 허용 장치.
  17. 제16항에 있어서, 제1처리기부터의 명령어에 응답하여, 상기 논리 수단은 제2처리기에 선정된 인터럽트 신호를 발생시키는 것을 특징으로 하는 응용 프로그램의 공존 및 직접적인 데이터 전송 허용 장치.
  18. 제17항에 있어서, 상기 제1처리기로부터의 명령어가 시작 I/O 명령인 것을 특징으로 하는 응용 프로그램의 공존 및 직접적인 데이타 전송 허용 장치.
  19. 제18항에 있어서, 선정된 인터럽트 신호의 검출에 응답하여, 제2응용 프로그램이 제1처리기로부터의 명령어를 서비스 및 번역하는 것을 특징으로 하는 응용 프로그램의 공존 및 직접적인 데이타 전송 허용 장치.
  20. 19항에 있어서, 제2응용 프로그램은 제2처리기의 직접 명령을 취하여, 제2운영 체제의 서비스를이용하지 않고도 주소 지정 가능한 메모리 구역을 통하여 정보의 전송을 완료하게 하는 것을 특징으로 하는 응용 프로그램의 공존 및 직접적인 데이타 전송 허용 장치.
  21. 제20항에 있어서, 제2응영 체제를 통하여 작동하는 제2처리기가 자원 장치에 접근하고 자원 장치와 메모리 구역간에 정보를 전송하는 것을 특징으로 하는 응용 프로그램의 공존 및 직접적인 데이터 전송 허용 장치.
  22. 제21항에 있어서, 상기 정보 전송 장치는, 제2응용 프로그램이 감시 루틴과 협력하여, 데이터 전송의 종결시에 긍정 응답 신호를 제1응용 프로그램으로 보내고 통상적으로 제 2운영 체제를 통하여 작동하는 제2응용 프로그램에 응답하게 제2응용 프로그램의 감시 루틴을 제2처리기에 종결시키는 것을 특징으로 하는 응용 프로그램의 공존 및 직접적인 데이타 전송 허용 장치.
KR1019900006907A 1989-05-17 1990-05-15 다중 운영 체제 컴퓨터 장치 KR940002340B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US35311589A 1989-05-17 1989-05-17
US353,115 1989-05-17
US353115 1989-05-17

Publications (2)

Publication Number Publication Date
KR900018832A KR900018832A (ko) 1990-12-22
KR940002340B1 true KR940002340B1 (ko) 1994-03-23

Family

ID=23387820

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019900006907A KR940002340B1 (ko) 1989-05-17 1990-05-15 다중 운영 체제 컴퓨터 장치

Country Status (11)

Country Link
EP (1) EP0398697B1 (ko)
JP (1) JP2618074B2 (ko)
KR (1) KR940002340B1 (ko)
CN (1) CN1040480C (ko)
AT (1) ATE170644T1 (ko)
AU (1) AU628548B2 (ko)
BR (1) BR9002305A (ko)
CA (1) CA2009780C (ko)
DE (1) DE69032608T2 (ko)
PE (1) PE34490A1 (ko)
SG (1) SG45152A1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69330981T2 (de) * 1992-04-20 2002-06-27 3Com Corp Vorrichtung zur Netzmittelerweiterung auf entfernte Netzwerke
US6571206B1 (en) * 1998-01-15 2003-05-27 Phoenix Technologies Ltd. Apparatus and method for emulating an I/O instruction for the correct processor and for servicing software SMI's in a multi-processor environment
JP3004250B2 (ja) * 1998-03-16 2000-01-31 有限会社メディアテック コンピュータシステム
US7003475B1 (en) 1999-05-07 2006-02-21 Medcohealth Solutions, Inc. Computer implemented resource allocation model and process to dynamically and optimally schedule an arbitrary number of resources subject to an arbitrary number of constraints in the managed care, health care and/or pharmacy industry
US6829660B2 (en) * 2001-12-12 2004-12-07 Emulex Design & Manufacturing Corporation Supercharge message exchanger
KR100746025B1 (ko) * 2006-01-12 2007-08-06 삼성전자주식회사 운영체제 스위칭 장치 및 방법
CN102693210B (zh) * 2011-03-21 2017-03-01 中兴通讯股份有限公司 一种处理器间传递参数的方法及装置
CN102609307A (zh) * 2012-03-07 2012-07-25 汉柏科技有限公司 多核多线程双操作系统网络设备及其控制方法
CN104317414A (zh) * 2014-09-25 2015-01-28 北京云巢动脉科技有限公司 一种在移动端虚拟机内实现中文输入的方法和系统
JP6876235B2 (ja) * 2016-09-27 2021-05-26 富士フイルムビジネスイノベーション株式会社 電子装置及び画像処理装置
TWI680375B (zh) * 2018-08-23 2019-12-21 慧榮科技股份有限公司 具有分散式信箱架構的多處理器系統及其處理器錯誤檢查方法
CN110350922A (zh) * 2019-07-18 2019-10-18 南京风兴科技有限公司 一种二进制编码的寻址方法及寻址器
CN110781528B (zh) * 2019-09-26 2022-03-22 深圳金澜汉源科技有限公司 协同安全操作系统和电子设备
CN112925548A (zh) 2019-12-06 2021-06-08 台达电子工业股份有限公司 在线程序更新方法
CN111459557B (zh) * 2020-03-12 2023-04-07 烽火通信科技股份有限公司 一种缩短服务器开机时间的方法及系统
CN111722916B (zh) * 2020-06-29 2023-11-14 长沙新弘软件有限公司 一种通过映射表处理msi-x中断的方法
CN114327648B (zh) * 2021-12-16 2024-02-02 北京安天网络安全技术有限公司 一种驱动调试方法、装置、电子设备及存储介质
CN114693606B (zh) * 2022-03-07 2024-04-23 华南理工大学 一种基于行人区域合并的安全设备穿戴检测方法
CN115145210B (zh) * 2022-09-02 2022-12-09 小米汽车科技有限公司 车辆的控制信号的控制方法、装置、车辆、介质及芯片

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3940743A (en) * 1973-11-05 1976-02-24 Digital Equipment Corporation Interconnecting unit for independently operable data processing systems
US4004277A (en) * 1974-05-29 1977-01-18 Gavril Bruce D Switching system for non-symmetrical sharing of computer peripheral equipment
CA1143856A (en) * 1979-09-26 1983-03-29 Anthony K. Fung Circular-queue structure
US4315310A (en) * 1979-09-28 1982-02-09 Intel Corporation Input/output data processing system
US4481578A (en) * 1982-05-21 1984-11-06 Pitney Bowes Inc. Direct memory access data transfer system for use with plural processors
JPS6017539A (ja) * 1983-07-11 1985-01-29 Hitachi Ltd エミユレ−シヨン方式
US4695945A (en) * 1985-02-28 1987-09-22 International Business Machines Corporation Processor I/O and interrupt filters allowing a co-processor to run software unknown to the main processor
US4707803A (en) * 1985-06-17 1987-11-17 International Business Machines Corporation Emulator for computer system input-output adapters

Also Published As

Publication number Publication date
EP0398697B1 (en) 1998-09-02
EP0398697A2 (en) 1990-11-22
CA2009780A1 (en) 1990-11-17
EP0398697A3 (en) 1994-02-02
BR9002305A (pt) 2005-02-01
KR900018832A (ko) 1990-12-22
AU628548B2 (en) 1992-09-17
ATE170644T1 (de) 1998-09-15
CA2009780C (en) 1999-07-27
JPH03171250A (ja) 1991-07-24
JP2618074B2 (ja) 1997-06-11
PE34490A1 (es) 1991-01-18
DE69032608T2 (de) 1999-05-27
AU5487090A (en) 1990-11-22
CN1047931A (zh) 1990-12-19
SG45152A1 (en) 1998-01-16
CN1040480C (zh) 1998-10-28
DE69032608D1 (de) 1998-10-08

Similar Documents

Publication Publication Date Title
CA2009550C (en) Data processing system with total system resource management for itself and for an associated alien processor
US5369749A (en) Method and apparatus for the direct transfer of information between application programs running on distinct processors without utilizing the services of one or both operating systems
US5701502A (en) Isolating a central processing unit from the operating system controlling said unit and its associated hardware for interaction of the unit with data handling apparatus alien to the operating system
EP0398694B1 (en) Fault tolerant data processing system
EP0398695B1 (en) A single physical main storage unit shared by two or more processors executing respective operating systems
EP0398693B1 (en) Method and apparatus for adding a data processing function to a data processing system
EP0398696B1 (en) Servicing interrupts in a data processing system
KR920008439B1 (ko) 데이타 처리 시스템과 데이타 처리 시스템에 시스템 특성을 추가로 제공하는 방법 및 그 기구
KR940002340B1 (ko) 다중 운영 체제 컴퓨터 장치
CA2003338A1 (en) Synchronization of fault-tolerant computer system having multiple processors

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
G160 Decision to publish patent application
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20050308

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee