KR920008439B1 - 데이타 처리 시스템과 데이타 처리 시스템에 시스템 특성을 추가로 제공하는 방법 및 그 기구 - Google Patents

데이타 처리 시스템과 데이타 처리 시스템에 시스템 특성을 추가로 제공하는 방법 및 그 기구 Download PDF

Info

Publication number
KR920008439B1
KR920008439B1 KR1019900006905A KR900006905A KR920008439B1 KR 920008439 B1 KR920008439 B1 KR 920008439B1 KR 1019900006905 A KR1019900006905 A KR 1019900006905A KR 900006905 A KR900006905 A KR 900006905A KR 920008439 B1 KR920008439 B1 KR 920008439B1
Authority
KR
South Korea
Prior art keywords
processor
data
bus
pair
operating system
Prior art date
Application number
KR1019900006905A
Other languages
English (en)
Other versions
KR900018829A (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
Priority claimed from US07/353,116 external-priority patent/US5325517A/en
Priority claimed from US07/353,111 external-priority patent/US5283868A/en
Application filed by 인터내셔널 비지네스 머신즈 코포레이션, 하워드 지. 피거로아 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR900018829A publication Critical patent/KR900018829A/ko
Application granted granted Critical
Publication of KR920008439B1 publication Critical patent/KR920008439B1/ko

Links

Images

Classifications

    • 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/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/387Information transfer, e.g. on bus using universal interface adapter for adaptation of different data processing systems to different peripheral devices, e.g. protocol converters for incompatible systems, open system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses

Abstract

내용 없음.

Description

데이타 처리 시스템과 데이타 처리 시스템에 시스템 특성을 추가로 제공하는 방법 및 그 기구
제1도는 하나의 통신라인을 이용하는 표준상호연결 컴퓨터시스템을 개략적으로 도시한 도면.
제2도는 고장허용한계환경내에서 S/88처리기의 상호연결을 개략적으로 도시한 도면.
제3도는 적당한 실시예에 있어서 S/88처리기와 S/370처리기의 상호연결을 개략적으로 도시한 도면.
제4도는 적당한 실시예의 방법에 따라 S/88시스템에 결합시킨 S/370시스템을 개략적으로 도시한 도면.
제5도는 적당한 실시예에 있어서 S/370과 S/88사이의 데이타 교환을 제공할 수 있도록 S/88처리기의 분리를 개략적으로 도시한 도면.
제6a도, 제6b도 및 제6c도는 종래의 IBM시스템/88모듈, 고속데이타 상호연결에(HSDI)에 의하여 상호연결된 복수모듈, 고장허용한 한계환경내에서 네트워크를 경유하여 단일 시스템 영상과 상호연결된 복수모듈을 개략적으로 도시한 도면.
제7도는 처리기간들이 서로 연결되고 S/88처리기, I/O 및 주기억장치에 연결되는 방법에 의하여 고장허용오차를 만들어내는 S/370운영시스템의 제어하에 S/370응용프로그램을 수행하는 S/370처리기들을 제공하는 본 발명의 개량된 무듈의 일형태를 개략적으로 도시한 도면.
제8도는 짝으로 되어 있는 S/370장치와 S/88장치가 상호연결되어 하나의 처리장치를 형성하고 이러한 장치들이 고장허용 오차연산을 할 수 있도록 동일한 파트너처리장치에 연결시키는 것을 더 상세히 도시한 도면.
제9a도 및 제9b도는 처리시스템 인클로우져의 뒷판에 삽입하는 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도, 제14b도 및 제15a도-C도는 S/370버스 접합장치의 출력채널을 가로지르는 데이타의 타이밍 및 이동을 개념적으로 도시한 도면.
제16도는 S/370과 S/88처리기 사이의 직접적 상호연결을 더 상세하게 도시한 도면.
제17도는 제16도에 도시한 상호연결의 S/370 버스 접합장치와 DMA 제어기 사이의 데이타 흐름을 개략적으로 도시한 도면.
제18도는 4개의 채널중 하나에 대한 DMAC레지스터를 도시한 도면.
제19a도, 제19b도 및 제19C도(제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도는 쌍기억장치제어 접속의 "데이타-인" 레지스터를 도시한 부분도표.
제35도는 제32b도에 도시한 FIFO내에 기억된 명령 및 스토어 데이타 단어들의 형식을 도시한 도면.
제36a도 내지 제36d도는 기억장치제어 접속내에서 수행되는 S/370 처리기 및 접합기로부터의 기억장치 및 채취명령어들을 도시한 도면.
제37도는 프로그래머의 견지에서 본 본 발명에 의한 장치 전체의 적당한 실시예를 개념적으로 도시한 도면.
제38도, 제39도 및 제40도는 S/370 및 S/88 인터페이스, S/370 I/O 명령수행 및 EXEC 370 소프트웨어와 S/370 I/O 구동기(즉 ETIO+BCU+S/370 마이크로 코드)용의 적당한 형태의 마이크로 코드설계를 개략적으로 도시한 도면.
제41a도 및 제41b도는 EXEC 370 소프트웨어와 S/370 마이크로 코드 사이 및 ETIO 마이크로 코드와 EXEC 370 소프트웨어 사이의 접속 및 프로토콜을 개념적으로 도시한 도면.
제41c도 내지 제41h도는 데이타 버퍼, 작업대기행렬 버퍼, 대기행렬, 대기행렬 통신구역 및 링크 리스트를 포함하는 하드웨어 통신구역등을 포함하는 BCU로컬스토어의 내용과 요소들이 이를 통하여 S/370마이크로 코드와 EXEC 370 소프트웨어와 서로 통신하는 프로토콜을 포함하는 대기행렬을 통한 작업대기행렬 버퍼의 이동을 도시한 도면.
제42도는 작업대기행렬 버퍼가 EXEC 370, ETIO, S/370 마이크로 코드와 S/370-S/88커플링 하드웨어 사이의 프로토콜과 함께 링크 리스트 및 대기행렬을 통하여 이동하는 것을 개념적으로 도시한 도면.
제43도는 전형적인 S/370 시작 I/O 명령어의 수행을 개념적으로 도시한 도면.
제44a도 내지 제44l도는 S/370 마이크로 코드와 EXEC 370이 각 타이프의 S/370 I/O 명령어를 수행하기 위하여 서로 통신할 때 그 제어/데이타 흐름을 개략적으로 도시한 도면.
제45a도 내지 제45ag도는 BCU내에서의 데이타 전송 연산중 BCU내의 지역 주소 및 데이타 버스에 관한 데이타 명령 및 상태정보를 도시한 도면.
제46a도 내지 46k도는 IBCU, ETIO 및 EXEC 370을 통한 S/88이 S/370 I/O 명령어에 응답하여 S/370포맷내에서 S/88디스크상에 정보를 저장하고 인출하는 디스크 에뮬레이션 프로세스의 양호한 형을 개념적으로 도시한 도면.
제47도는 한 S/370 저장 영역을 수용하도록 이동되는 S/88 저장 맵 엔트리와 함께 제10도의 메모리 맵핑을 개념적으로 도시한 도면.
제48a도 내지 48k도는 S/88피지칼 저장부내에 S/370 저장 영역을 형성할 시스템 개시 및 재구성 루틴 동안에 신규 제공된 보조 루틴과 상호작용할 수 있는 S/88에 대한 가상/피지칼 저장 관리의 양호한 형을 도시한 도면.
제49도 및 50도는 S/370-S/88 프로세서쌍 및 파트너 유니트를 동기하는 데에 이용된 소정의 논리를 설명한 부분도.
제51도 및 52도는 본 발명의 개량된 선택적인 실시예를 도시한 도면.
* 도면의 주요부분에 대한 부호의 설명
12e : 송 수신기 61, 63 : 멀티플렉서
본 출원의 개량은 중앙처리장치와 연관 운영시스템에 결여되어 있는 특성들을 데이타 처리장치에 추가하는 것에 관한 것이다.
최근에 개발된 데이타 처리 시스템의 일부는 구식 본체 시스템에서는 이용할 수 없거나, 본체 운영시스템에 의하여 지원되지 아니하는 많은 발전된 특징(또는 특성)을 제공한다. 이러한 특징중 일부는 분산계산 네트워크를 거쳐 제공되는 단일 시스템 영상, 핫 플러그 처리기 및 I/O 제어기에 대한 능력(전원 접속(power on)에 의하여 카드를 제거 및 설치하는), 순간 오류 탐지, 고장절연 및 컴퓨터 사용자에 대한 인터럽션 없이 고장난 소자를 서비스로부터 전기적으로 제거하는 것, 원격 서비스 지원에 의하여 식별되는 주문자 대치가능 장치, 소자고장으로부터 생기거나, 시스템이 계속적으로 작동하고 있는 동안에 추가장치를 시스템에 추가하는 동적 재구성등이다.
그러나, 그 주문자 베이스의 폭, 그 운영시스템의 완숙성, 가용사용자 프로그램의 수 및 범위등은 인터내셔널 비지니스 머신즈 회사가 시판하는 시스템 370(S.370) 시스템과 같은 일부제조자들의 상당히 구식인 본체 시스템에 비하여 별로 크지 못하다.
이러한 최근 시스템의 일예인 고장허용한계 시스템(faolt tolerant system)은 상기 회사가 시판하는 시스템 88(S/88) 시스템이다. 이것은 01 IBM S/88의 한 모델이고, 본 개량의 적당한 형태의 일부를 형성하는 IBM S/370의 한 모델이다.
이러한 고장허용한계 시스템은 전형적으로 고장허용한계 연산용으로 설계되어 있다. 처리기, 기억장치, I/O 장치 및 운영시스템은 고장허용한계환경용으로 특별히 만들어진 것이다.
위의 특징들을 S/370 환경과 구조내에 합체시키는 것에 대한 제안들은 전형적으로 S/370 운영시스템과 사용자 응용프로그램 및 스크래치로부터 개발된 새로운 하드웨어의 주요 재기록으로 구성되어 있다. VM, VSE, IX 370등과 같은 운영시스템의 주요 재기록은 상당수의 프로그래머와 상당한 시간을 요구하는 방대한 디스크라고 생각된다. IBM S/370 VM 또는 MVS와 같은 복잡한 운영시스템을 완숙시키는 데에는 통상적으로 5년이상 걸린다. 지금까지 대부분의 시스템 분리는 운영시스템의 오류의 결과이다. 사용자들이 운영시스템의 사용에 숙달되려면 여러해가 걸린다. 불행히도, 일단 운영시스템이 성숙되고, 대형 사용자 베이스가 개발되면, 고장허용한계, 동적 재구성, 단일 시스템 영상등과 같은 새로운 기능을 도입하기 위하여 코드를 수정하는 것은 단순한 노력만으로는 어렵다.
성숙된 운영시스템을 새로운 기계구조내에 이전시키는 복잡성과 비용으로 인하여 설계자는 통상적으로 사용처에서 당장 받아들일 수 없는 새로운 운영시스템을 개발하기로 결정한다. 새로 개발된 운영시스템에 의하여 예증된 새로운 특징들을 합체시키기 위하여 성숙한 운영시스템을 수정한다는 것은 있을 수 없는 것으로 판명될 것이다. 그러나, 새로운 운영시스템은 실질적 사용자 베이스는 개발하지 못할 것이며, 대부분의 문제점들이 해소되어 일선에서 사용할 수 있게 되기까지에는 여러해가 걸릴 것이다.
따라서, 본 개량의 기본목적은 운영시스템의 주요 기록없이 전술한 특성들이 결여되어 있는 데이타 처리시스템에 대하여 하나 이상의 추가 특징 또는 특성들, 특히 단일 시스템 영상을 제공하는 것이다.
본 개량의 또다른 목적은 운영시스템의 주요 재기록없이 통상적으로 비고장허용 오차처리 시스템과 운영시스템용의 고정허용한계환경 및 구조를 제공하는 것이다.
이러한 목적은 바람직한 특성이 결여되어 있는 적어도 하나의 제1중앙 처리장치(CPU)를 바람직한 특성이 구비되어 있는 운영시스템상에서 제어하에 작동하는 적어도 하나의 다른 제2 CPU와 특유하게 결합시킴으로써 달성된다. 제2 CPU는 그 운영시스템이 제1 CPU의 존재를 알지 못하면서, 제1 CPU의 I/O제어기로서 작동하도록 제어된다. 그외에도, 명령과 데이타는 제2 CPU의 운영시스템 서비스를 사용함이 없이 제1 및 제2 CPU사이에 전송된다.
적당한 실시예에 있어서, 종전의 제1비고장허용한계(NFT) 중앙처리장치 (CPU)가 각각 서로와 결합되고, 고장허용한계환경을 제공하는 운영시스템 소프트웨어의 제어하에 통상적으로 고장허용한계 방법으로 작동되는 다수의 다른 제2 CPU중 하나와 특유하게 결합되어 있다. 이러한 상호연결은 그 해당 비고장허용한계 운영시스템 소프트웨어의 제어하에 비고장허용한계 제1 CPU를 프로그램 명령어의 수행중 고장허용한계 방법으로 작동할 수 있게 한다. 제2 CPU는 고장허용한계 주기억장치와 고장허용한계 입/출력(I/O) 장치에 결합되어 있고, 제1 CPU용 I/O제어기로서 작동할 수 있게 제어된다. CPU의 상태들을 서로 주기적으로 비교하여 오류를 탐지하는 수단이 제공되어 있다. 결합되어 있는 제1 및 제2 CPU중 적어도 2개가 오류없음이 발견되는 한, 고장허용한계 작동이 계속된다.
오늘날의 고장허용한계 데이타처리시스템은 통상적으로 구식 비고장허용한계 본체 시스템에서는 이용할수 없거나, 본체 운영시스템에 의하여 보조되지 아니하는 많은 특징들을 제공한다. 이러한 특징들의 일부에는 분산계산 네트워크를 거쳐 나타내는 단일 시스템 영상, 핫 플러그처리기 및 I/O 제어기에 대한 능력(동력을 켜고 카드를 제거 및 설치), 순간 오류 검출, 컴퓨터 사용자에게 지장을 주지 아니하고 고장을 분리 및 고장난 소자들을 서비스로부터 전기적 제거, 원격 서비스 보조에 의하여 확인된 장치의 가입자에 의한 교체 가능, 시스템이 계속적으로 운영되는 동안 소자가 고장이 나거나 시스템에 추가장치를 추가함으로써 행하여지는 동적 재구성등이 포함된다. 이러한 고장허용한계시스템의 일예는 인터내셔널 비즈니스 머신스회사가 시판하는 시스템/88(S/88)시스템이다.
상기 특징들을 S/370 환경과 구조에 합체시키기 위한 제안은 전형적으로 운영시스템의 주요 재기록 및 사용자 응용프로그램 또는 임시 하드웨어에서 개발한 새로운 하드웨어로 구성된다. 그러나 VM, USE, IX 370등과 같은 운영시스템의 주요 재기록은 다수의 프로그래머와 상당한 시간이 소요되는 방대한 과업이라고 생각된다. IBM S/370 VM 또는 MVS와 같은 복잡한 운영시스템을 완성하려면 대개 5년이상 걸린다. 이제까지 대부분의 시스템 붕괴는 운영시스템 오류의 결과이다. 사용자가 어느 운영시스템을 능숙하게 이용할 수 있으려면 여러해가 걸린다. 더구나, 운영시스템이 완성되고 대형 사용자 베이스가 개발되더라도 고장허용한계, 동적 재구성, 단일 시스템 영상등과 같은 새로운 기능들을 도입하기 위하여 코드를 변경한다는 것은 간단한 일이 아니다.
설계자들은 완성된 운영시스템을 새로운 기계구조에 옮겨 놓는 것이 복잡하고 비용이 많이 소요되기 때문에 대개는 사용자들이 당장 받아들일 수 없는 새로운 운영시스템을 개발하기고 결정할 것이다. 새로이 개발된 운영시스템에 의하여 예증된 새로운 특징들을 합체시키기 위하여 완성된 운영시스템을 변경한다는 것은 비실용적임이 들어날 것이다. 그러나 새로운 운영시스템은 결코 실질적인 사용자 베이스를 개발하지 못할것이며 여러해 동안의 현지사용 후에야 비로서 대부분의 문제가 해결될 것이다.
따라서, 본 개량은 운영시스템의 주요 재기록없이 통상적으로 고장이 없는 허용한계환경 및 운영시스템용의 고장허용한계환경 및 구조를 제공하기 위한 것이다. 적당한 실시예에 있어서 IBM 시스템/88의 모델이 IBM S/370 모델에 연결되어 있다.
서로 다른 처리기와 운영시스템을 연결시키는 방법중 하나는 몇가지 통신제어기를 각 시스템에 더 보태고 장치구동기를 운영시스템에 추가하고, 데이타를 운송하기 위하여 시스템 네트워크 구조(SNA) 또는 OSI와 같은 일종의 통신코드를 사용하는 것이다. 통상적으로 하나의 네트워크내에 있는 종단 노드 컴퓨터들 사이에 데이타 통신을 수행하려면 종단 노드를 이해하고 일련의 일관된 서비스를 교환될 데이타에 적용하여야 한다.
대부분의 네트워크는 설계상의 복잡성을 줄이기 위하여 서로 중첩되는 일련의 층 또는 레벨로서 조직되어 있다. 층의 수, 각 층의 명칭 및 각 층의 기능을 네트워크마다 서로 다르다. 그러나, 모든 네트워크에 있어서 각 층의 목적은 상부층들이 제공된 서비스들이 실제로 어떻게 이행되는가에 대한 세부사항을 모르게 하면서 상부층에 특정서비스를 제공하는 것이다. 어느 기계상의 층(n)은 다른 기계상의 층(n)과 대화를 한다. 서로 다른 층들의 대응층을 포함하는 개체들은 피어 프로세스라 하고 프로토콜을 이용하여 통신하는 것을 피어프로세스라 한다.
실제로는 데이타가 한 기계상의 층(n)에서 다른 기계상의 층(n)으로 직접 전송되지 아니한다(최저층 또는 물리적 층에서도 그러하지 아니하다.). 즉, 서로 다른 시스템상에서 운영되는 응용프로그램들은 직접으로 연결시키지 못한다. 이에 갈음하여 각 층은 데이타 및 제어정보를 최저층에 이를때까지 바로 아래에 있는 층으로 통과시킨다. 최저층에서는 상부층들에서 사용한 가상통신과는 반대로 다른 기계와의 물리적 통신이 있게 된다.
이와같은 여러가지 서비스에 관한 정의는 전술한 다수의 네트워크내에 존재하고 최근에는 서로 다른 상인들이 공급하는 시스템들을 쉽게 상호연결시킬 수 있는 프로토콜을 제공하는 데 관심이 집중되고 있다. 이러한 프로토콜을 개발하기 위한 구조는 국제표준기구(International Standards Organization)(ISO)에서 정의한 7층 OSI(개방시스템 상호연결)모델인 프레임워크이다. 이 모델내의 각 층은 상부층에 대하여는 네트워크 서비스를 제공하는 한편, 그 아래층으로부터의 서비스를 요구하는 것을 담당한다. 각 층에서 제공되는 서비스는 네트워크내의 각 스테이션에 의하여 일관성 있게 응용될 수 있도록 잘 정의된다. 이에 의하여 서로 다른 상품들을 상호연결할 수 있다. 하나의 노드내에서의 층별 서비스의 구현은 구현특정이고 스테이션내에서 제공되는 서비스에 근거하여 판매상을 구별할 수 있게 한다.
이러한 프로토콜의 구조화 세트를 구현하는 전체목적은 데이타의 종단전송(end-to-end transter)을 수행하는 것임을 유의하는 것이 중요하다. OSI 모델내의 주요부들은 사용자 노드가 윈시 응용프로그램으로부터 수령 응용프로그램으로의 데이타 이송에 관한 것임을 이해하면 더 잘 이해할 수 있다. 이 데이타를 이송하기 위하여 OSI 프로토콜은 각 레벨에 있는 데이타에 작용하여 네트워크에 프레임을 제공한다. 프레임들은 각 OSI 레벨에서 응용되는 해당 헤더와 결합된 데이타로서 형성된다. 이러한 프레임들은 이어서 매체를 통항 전송되는 비트 조합으로서 물리적 매체에 제공된다. 그 다음에는 프레임들은 데이타를 수신 스테이션에 있는 응용프로그램에 제공할 수 있도록 절차의 역조합을 형성하게 된다.
전술한 바와 같이 서로 다른 처리기와 운영시스템을 결합시키는 현행 방법중 하나는 어떤 종류의 통신제어기를 각 시스템에 가하고 장치구동기를 운영시스템에 부가하고 데이타를 운송하기 위하여 시스템 네트워크 아키텍쳐(SNA) 또는 OSI와 같은 통신 코드를 이용하는 것이다. 제1도는 Local Area Network(LAN)에 의한 2개 컴퓨터시스템의 표준상호연결을 도시한 것이다. 특히, IBM S/370 구조 시스템은 IBM 시스템/88구조에 연결되어 있는 것으로 도시되어 있다. 각 구조내에서는 응용프로그램이 운영시스템과의 인터페이스를 통하여 처리기를 제어하고 I/O채널이나 버스에 접근할 수 있도록 작동한다. 각 구조장치에는 데이타를 교환하는 통신제어기가 있다. 통신을 하려면 해당 응용프로그램 사이에 데이타를 교환할 수 있도록 다층 프로토콜을 이용하여야 한다.
데이타를 교환하는 또다른 방법은 공동처리기 방법으로서 여기에서는 공동처리기가 시스템 버스상에 상주하고 시스템 버스를 조정하고 동일한 I/O를 주처리기로 이용한다. 공동처리기 방법의 단점은 비모국(외국) 주 I/O를 지원하기 위하여 필요한 코드 재기록의 양이다. 또 다른 단점은 사용자는 공동처리기로부터 주운영시스템까지 왕복전환할 수 있는 2개의 시스템 구조 즉 불리한 사용자 환경에 정통하여야 한다는 것이다.
종래의 고장허용한계 컴퓨터시스템에는 처리장치, 임의접근 메모리장치, 주변제어장치, 주변제어장치 및 모듈의 여러 장치들 사이의 모든 정보전송을 제공하는 단일버스구조를 포함하는 처리기모듈이 있다. 각 처리기모듈내에 있는 시스템 버스구조에는 복사 파트너 버스들이 포함되어 있고 하나의 처리모듈내의 각 기능장치에도 복사 파트너장치가 있다. 버스구조는 주 클록으로부터의 모듈 및 시스템 타이밍 신호의 장치들에 연산력을 제공한다.
제2도는 처리기모듈의 처리기장치부분 구조를 기능 다이어그램의 형태를 도시한 것이다. 공동대체카드상에 장착된 동일한 쌍처리기를 사용하고 동일한 연산을 동기화로 수행함으로써 비교를 행하여 처리상의 오류를 찾아낼 수 있다. 각 카드에는 통상적으로 동일구조의 중복제휴장치가 있다.
컴퓨터시스템은 전체처리기모듈내에 있는 각 기능장치의 수준에서의 고장탐지를 제공한다. 오류탐지기는 각 장치내의 하드웨어의 동작을 모니터하고 장치들 사이의 정보전송을 점검한다. 오류가 탐지되면 처리기모듈이 오류를 생기게한 장치를 격리시키고 이 장치로 하여금 다른 장치에 전송하지 못하게 금지하고 모듈은 고장난 장치의 파트너를 사용하여 동작을 계속한다.
어느 장치내의 고장이 탐지된 때에는 이 장치는 고립되고 단선되기 때문에 이 장치는 부정확한 정보를 다른 장치에 전송하지 못한다. 단선된 장치의 파트너는 계속하여 동작하기 때문에 전체 모듈이 동작을 속행할 수 있다. 사용자는 단선장치를 보수하라는 요구가 표시되거나 제시되지 아니하면 이와같은 고장탐지와 오프라인 상태로의 전이를 알지 못하는 경우가 많다. 카드배열은 제거 및 교체가 쉽게 되어 있다.
메모리장치는 시스템 버스를 검사하는 타스크도 지정된다. 이러한 목적을 위하여 장치에는 주소신호들을 시험하고 버스구조상의 데이타 신호들을 시험하는 패리티 검사기가 있다. 어느 버스가 고장이라고 결정하면 메모리장치는 모듈의 다른 장치들에서 고장나지 아니한 버스에만 복종하라는 신호를 보낸다. 처리기모듈의 전원장치는 2개의 전원을 사용하며 각 전원은 각 쌍의 파트너장치중 하나의 장치에만 동작 전력을 제공한다. 공급전압에 고장이 있음을 탐지한 때에는 고장난 장치로부터 버스구조에 통하는 모든 출력라인들이 기본 전위로 억제됨으로써 전원 고장으로 인하여 잘못된 정보가 버스 구조에 전송되는 것을 방지한다.
제3도는 데이타를 직접 교환할 수 있도록 고장허용한계구조의 방법으로 S/370 처리기쌍을 S/88 처리기쌍을 상호연결시키는 것을 기능 다이어그램의 형태로 도시한 것이다. 종래의 S/88 구조(제2도)와의 유사성은 의도적인 것이지만 적당한 실시예의 연산을 설정하는 하드웨어와 소프트웨어에 의한 독특한 상호연결이다. 여기에서는 S/370 처리기가 S/88 타이프 비교논리 이외에 기억장치 제어논리와 버스간섭논리에 결합되어 있음을 관찰하게 된다. 다음에 설명하는 바와 같이 비교논리는 S/88 처리기용 비교논리와 동일한 방법으로 기능한다. 더구나, S/370 처리기는 대응 S/88 처리기와 직접으로 결합되고 시스템 버스를 통하여 결합되어 있다. S/88 처리기에서와 같이 S/370 처리기도 쌍으로 결합되어 있고 각 쌍은 교체할 수 있고 쉽게 끼워넣을 수 있는 필드 회로카드상에 장착되게 되어 있다. 몇개의 구동장치를 상호연결하는 것에 관하여는 다음에 더 상세히 설명한다.
적당한 실시예는 S/370 운영시스템의 제어하에 동일한 S/370 명령어들을 동시에 수행하기 위하여 다수의 S/370 처리기들을 상호연결한다. 이러한 처리기들은 대응하는 다수의 S/88처리기, I/O장치 및 주기억장치와 결합되어 있고 이러한 장치들은 모두 동일한 명령어들을 S/88 운영시스템의 제어하에 동시에 수행한다. 후술하는 바와 같이 S/88 처리기를 그 I/O 장치 및 기억장치로부터 비동기적으로 분리시키고 후자가 분리되어 있는 동안 S/370 I/O 명령과 데이타를 S/370 처리기부터 S/88 처리기로 통과시키고 명령과 데이타가 그 I/O 장치와 기억장치에 재결합될 때 S/88 처리기가 후속처리용으로 사용할 수 있는 형식으로 이러한 명령 및 데이타를 전환시키는 수단이 포함되어 있다.
1. 통상적으로 비고장허용한계처리기를 고장허용환경내에서 동작시키는 것
위에서 게기한 고장허용한계 특징들은 적당한 실시예에서 S/370 처리기와 같은 통상적으로 비고장허용한계처리기들을 S/370 운영시스템중 하나의 제어하에 동일한 /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/370처리기로부터 S/88처리기로 전송하고, (2) S/370명령 및 데이타를 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하드웨어 중복 및 동기화는 고장허용한계를 지지하기 위한 처리기를 설계하는 주문없이 제공한다. S/370운영시스템과 고장허용한계운영시스템(2개의 가상기억 시스템)은 어느 운영시스템의 주요 재기록없이 동시적으로 수행된다. 하드웨어/마이크로 코드 인터페이스는 적당한 실시예에서는 각각 서로 다른 운영시스템을 수행하는 피어 처리기쌍 사이에 제공되어 있다. 하나의 처리기는 IBM운영시스템(예 : VM, VSE, IX 370등)을 수행하는 마이크로 코드 제어 IBM S/370엔진이다. 적당한 실시예의 제2처리기는 S/88 UOS(가상 운영 시스템)을 수행하는 하드웨어 고장허용한계환경을 제어할 수 있는 운영시스템을 수행하는 하드웨어 고장허용한계 엔진이다.
처리기쌍 사이의 하드웨어/마이크로 코드는 2개의 운영시스템으로 하여금 사용자가 단일시스템 환경으로 감지하는 환경속에서 공존할 수 있게 한다.
하드웨어/마이크로 코드 지원(메모리, 시스템 버스, 디스크 I/O, 테이프, 통신 I/O터미널, 동력 및 인클로저)은 서로 독립적으로 행동하고 각 운영시스템은 시스템 기능중 그 몫을 다룬다. 워드 메모리, 기억장치 및 스토어는 여기에서는 교환가능할 수 있게 사용된다. FT처리기와 운영시스템은 오류탐지/고립, 회복, 동적 재구성 및 I/O연산을 관리한다. NFT처리기는 FT처리기를 알지 못하고 모국어 명령어들을 수행한다. FT처리기는 NFT처리기에 다중 I/O채널로서 나타난다.
하드웨어/마이크로 코드 인터페이스는 2개의 가상메모리처리기로 하여금 공동 고장허용한계메모리를 공유할 수 있게 한다. FT처리기의 메모리 할당표로부터 연속되는 기억장소블록이 각 NFT처리기에 지정된다. NFT처리기의 동적 주소번역특징은 FT처리기에 의하여 그것에 할당되지 아니하였던 기억장소블록을 제어한다. NFT처리기는 그 메모리가 오프셋 레시스터를 사용하여 제로주소에서 시작하는 것을 감지한다. NFT처리기를 그 자체기억장소경계내에 유지하기 위하여 한계검사가 수행된다. FT처리기는 NFT주소 공간내외에 있는 NFT기억장치와 DMA I/O 데이타블록에 접근할 수 있으나 NFT처리기는 그 지정된 주소공간외에 있는 기억장치에 접근하지 못한다. NFT기억장치규모는 구성테이블을 변경시킴으로써 변경시킬 수 있다.
2. 처리기를 이에 연관된 하드웨어로부터 분리 시켜서 또 다른 처리기로부터의 명령과 데이타를 그 자체에 넘겨 주는 것.
새로운 장치를 기존처리기 및 운영시스템에 첨가시키려면 일반적으로 하드웨어를 버스 또는 채널을 거쳐 부착시키고 운영시스템용의 새로운 장치구동장치 소프트웨어를 기록하여야 한다. 개량된 "분리"특성에 의하여 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 고장허용한계처리기의 가상주소버스, 데이타버스, 제어버스 및 인터럽트 버스 구조에 부착시키는 것이 포함된다. 유효 주소가 고장 허용 한계 처리기의 가상 주소 버스상에 있음을 표시하는 스트로브 라인은 주소신호가 활성화된 후 몇초 동안 활성화된다. 버스어댑터와 버스제어장치를 포함하는 결합논리는 미리 선택한 주소범위가 스트로브 신호가 나타나기 전에 S/88응용프로그램에 의하여 제시되는가의 여부를 결정한다. 이 주소범위가 탐지 되면 주소스트로브신호는 S/88고장허용한계처리기 하드웨어로 가지 못하게 차단된다. 이러한 누락신호는 고장허용한계하드웨어와 운영시스템이 기계주기가 발생하였음을 알지 못하게 한다. 하드웨어내의 고장 허용한계검사논리는 이 주기 중 고립되고 이 시간중 일어나는 어떠한 행동도 완전히 누락될 것이다.
처리기버스상의 모든 캐수, 가상주소매핑논리 및 부동소수적 처리기들은 기계주기가 발생하였음을 이해하지 못하게 된다. 즉, 모든 S/88 CPU 기능은 S/88처리기에 의한 주소스트로브신호의 가정을 기다리면서 '동결'되어 있다.
고장허용한계처리기논리로부터 차단된 주소스트로브신호는 결합논리에 송신된다. 이 결합논리는 S/88고장허용한계처리기에 고장허용한계 특별응용 프로그램과 부착된 S/370처리기 사이의 인터페이스인 결합논리에 대한 완전한 제어를 제공한다. 주소스트로브신호의 가상주소는 결합논리의 구성분인 지역기억 장치, 레지스터 및 DMAC를 선택하는데 이용된다. 제5도는 적당한 주소에 상응하여 적당한 레벨에 있도록 결정되는 S/370버스 제어 논리로부터의 인터럽트 탐지 결과를 개략적으로 도시한 것이다. 그러므로, 광의로는 분리기구가 처리기를 그 연관하드웨어로부터 분리시켜서 다른 개체 의하여 효율적인 데이타 전송을 하도록 처리기를 다른 개체에 연결시킨다.
결합 논리에는 S/370으로 들어가고 S/370에서 나가는 S/370 명령 및 스토어 데이타를 대기시키는데 이용되는 지역 스토어가 있다. 데이타와 명령은 결합 논리내의 다중 DMA채널에 의하여 지역 스토어내로 이동된다. 고장허용한계 응용프로그램은 DMAC로부터의 서비스 인터럽트와 DMAC를 개시하고 이는 명령이 도착 하거나 데이타의 일블록을 수신 또는 발신하였을 때 응용프로그램을 통지하는데 이용된다. 연산을 완성시키려면 결합 논리는 고장허용한계처리기의 양 측면이 싱크내에 머물러 있는가를 확인하는 처리기의 클럭 가장자리에 앞서 데이타 스트로브 인정 라인을 반환 하여야 한다.
응용프로그램은 스타트 I/O, 테스트 I/O 등과 같은 S/370채널형 명령을 수신한다. 그 다음에 응용 프로그램은 각 S/370 I/O 명령을 고장허용한계 I/O명령으로 전환시키고 정상 고장허용한계 I/O 명령순서를 개시한다.
이것은 운영시스템 주위에서 데이타 블록을 얻어서 응용하는 새로운 방법이하고 생각된다. 이것은 또한 응용이 통상적으로 운영시스템이 수행하는 기능인 인터럽트를 다룰 수 있는 방법이기도 하다.
응용프로그램은 고장허용한계처리기를 그 정상적인 처리기 기능에서 I/O제어기 기능으로 사이클마다 선택하는 가상주소에 의하여 임의로 전환시킬 수 있다. 이와같이 서로 다른 명령어와 메모리 주소지정 구조를 가진 2개의 데이타처리시스템은 "A"시스템으로 하여금 "B"시스템이 그 존재를 알지 못하게 하면서 "B"시스템의 가상메모리 공간의 일부에 효과적으로 접근할 수 있도록 결합되어 있다. "B" 시스템내의 특별응용코드는 버스상에 특별주소를 배치함으로써 하드웨어를 거쳐 "A"시스템과 통신하게 된다. 하드웨어는 이 주소가 특별주소인가의 여부를 판정 한다. 특별주소임을 판정한 때에는 스트로브는 "B"시스템의 회로가 감지하지 못하게 차단되고 "B"시스템의 CPU가 특별하드웨어를 제어하여 메모리공간이 양시스템에 접근할 수 있도록 재지시 된다.
"B" 시스테은 초기화 작업 및 구성 작업에 관한 한 필요한 때에는 "A" 시스템을 완전히 제어할 수 있다. "A" 시스템은 어떠한 방법으로도 "B"시스템을 제어할 수 없으나 다음과 같은 방법으로 "B"시스템에 서비스 요구를 제출할 수 있다.
즉, "A" 시스템은 I/O 명령과 데이타를 공동으로 접근할 수 있는 메모리 공간내에 있는 하나의 시스템 형식에 옮기고 특별하드웨어를 사용한 특별레벨에서 특별응용프로그램을 행동시키도록 호출하는 인터럽트를 "B" 시스템에 제출한다.
후자는 "B" 시스템은 모국어형식으로 전환시키기 위하여 옮겨진 정보와 프로세스가 들어있는 메모리 공간으로 향하게 된다. 그 다음에 응용프로그램은 "B" 시스템의 모국어 운영시스템에 대하여 전환된 명령과 데이타에 근거하여 모국어 I/O 연산을 수행하도록 지시한다. 이와같은 과정이 모두 양 시스템의 모국어 운영시스템에 대하여 완전히 투명하게 큰 변화없이 행하여진다.
3. 운영시스템에 투명한 시스템에 대한 인터럽트의 제출
대부분의 현재 프로그램은 2가지(또는 2이상의)상태 중 하나, 즉 감독자 상태 또는 사용자 상태에서 수행된다. 응용 프로그램은 사용자 상태에서 수행되고 인터럽트와 같은 기능은 감독자 상태에서 수행된다.
응용은 I/O 포트를 부착시킨 다음에, 포트를 개방하고 I/O 요구를 판독, 기록 또는 제어의 형식으로 발한다. 그 당시 처리기는 타스크 스위치를 취한다.
운영시스템이 I/O 완성을 통지하는 인터럽트를 수신하면 운영시스템은 이 정보를 준비완료 대기행렬내에 집어넣고 우선적으로 시스템 자원을 정리한다.
운영시스템은 모든 인터럽트 벡터를 자체용으로 할당하고 다른 기계로부터의 I/O 요구를 통지하는 외부인터럽트와 같은 새로운 특징에 대하여는 이를 이용하지 못한다.
적당한 실시예의 S/88에서는 대다수의 가용인터럽트 벡터가 실제로는 사용되지 아니하며 이러한 벡터들은 운영시스템에서 사용되지 아니하며 이러한 벡터들은 운영시스템에서 통상적으로 행하지는 바와같이 "초기화되지 아니한" 또는 "가짜의" 인터럽트용의 자료공유 오류조정기에 대하여 벡터링을 일으키게 한다.
본 발명의 적당한 실시예는 그렇지 아니하면 사용되지 아니하는 이러한 벡터들의 부분집합을 S/370결합논리 인터럽트용 특별인터럽트 조정기에 대한 적당한 벡터로 대치하였다. 변경된 S/88운영시스템은 새로이 정리된 종합벡터로 사용하게 된다.
적당한 실시예의 시스템/88은 8개의 인터럽트레벨을 가지며 레벨(4)를 제외한 모든 레벨에서 오토벡터를 사용한다. 본 발명의 개선은 이러한 오토벡터 레벨중 최우선순위에 다음가는 레벨 6을 사용한다. 이 레벨(6)은 통상적으로 A/C 전원에 방해 인터럽트용의 시스템/88에 의하여 사용된다.
시스템/370을 시스템/88에 결합시키는 논리는 그 인터럽트 요구를 A/C 전원 방해의 인터럽트와 논리합(OR)시킴으로써 인터럽트들을 레벨(6)에 제출한다. 시스템 초기화 작업중 결합논리 인터럽트용 특별인터럽트 조정기에 대한 적당한 벡터수가 응용프로그램에 의하여 S/88운영시스템에 투명한 결합논리내에 적재된다.(예를들면, 일부는 DMAC레지스터내에 적재된다.)
시스템/88이 어떤 인터럽트를 수신하면 하드웨어와 S/88처리기의 내부 연산만을 이용하여 인터럽트 승인(IACK)주기를 개시하여 인터럽트를 채취하고 1차 인터럽트 조정기 명령어를 처리한다. 프로그램 명령어 수행은 요구되지 아니한다. 그러나, 벡터수도 얻어야하고 투명한 방식으로 제시되어야 한다. 이것은 적당한 실시예에서는 S/88처리기를 그 연관하드웨어(A/C 전원 방해용 인터럽트 제시 기구를 포함한다.)로부터 분리시키고 S/88처리기를 레벨(6) 인터럽트가 결합논리에 의하여 제기될 때 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. 서로 다른 가상기억장치 운영시스템을 수행하는 2개 이상의 처리기 사이의 실기억장치 공유.
이 특징은 고장허용 한계 시스템을 고장허용한계 기억장치를 지지하기 위한 코드, 즉 핫플러깅 못 쓰게된 테이타의 즉시 탐지 및 적당한 경우에는 그 회복 등을 거쳐 기억기판의 제거 및 삽입을 지지하기 위한 코드를 가지지 아니한 다른 처리기 및 운영시스템에 결합시킨다.
이 특징은 서로 다른 가상운영시스템을 수행하는 2개 이상의 처리기를 양운영시스템에 투명한 방법으로 단일 실기억장치를 공유할 수 있게 하는 방법과 수단을 제공하여 여기에서는 하나의 처리기가 다른 처리기의 기억공간에 접근할 수 있기 때문에, 이러한 다중처리기 사이의 데이타 전송이 발생할 수 있다.
이 특징은 단일운영시스템의 사용자에게 외관(zppearance)을 제공할 수 있도록 2개의 사용자 표견 운영시스템환경을 결합시킨다. 각 운영시스템은 통상적으로 자체의 완전한 실기억장소를 제어하는 가상운영시스템이다. 본 발명은 공동시스템 버스를 경유하여 양처리기에 의하여 공유되는 하나의 실기억장소만을 가진다. 운영시스템은 실제로 재기록되지 아니하고 운영시스템은 다른 운영시스템이 존재하거나 실기억장치가 공유되어 있는지를 알지 못한다.
이 특징은 제1처리기상에서 수행하는 응용프로그램을 사용하여 제1운영시스템의 기억장치 할당 대기행렬을 탐색한다. 제2운영시스템의 요건들을 충족시킬만큼 대형의 인접기억장소가 발견되면 이 기억장소는 포인터를 조작함으로써 제1운영시스템의 기억장치 할당 테이블로부터 제거된다. 제1운영시스템은 응용이 기억장치를 제1운영시스템으로 복귀하지 아니하는 한, 이 제거된 기억장치를 더 이상 사용(예:재할당 능력)하지 못한다.
제1운영시스템은 I/O퍼스팩티브(perspective)로부터 제2운영시스템에 도움을 주고 I/O제어기로서 제2운영시스템에 응답한다. 제1운영시스템은 모든 시스템 자원의 마스타이고 적당한 실시예에서는 하드웨어고장허용한계 운영시스템이다. 제1운영시스템은 최초에는 기억장치(제2운영시스템용으로"도난당한"기억장치는 제외하고)를 할당하고 모든 연관하드웨어 고장 및 회복을 조정한다. 이 목적은 운영시스템코드를 대폭적으로 변경함이 없이 2개의 운영시스템을 결합시키는 것이다. 각 운영시스템은 2개의 시스템에 의하여 단일자원이 이용되기 때문에 모든 시스템기억장치를 제어한다고 믿어야 한다.
시스템에 동력이 공급되면 제1운영시스템과 그 처리기는 시스템의 제어를 담당하고 하드웨어는 제2처리기를 리세트상태로 유지한다. 제1운영시스템은 시스템을 돕고 얼마나 많은 실기억장치가 존재하는가를 결정한다. 운영시스템은 경우에 따라서는 모든 기억장치를 4KB 블록(4096 바이트)로 조직하고 각 가용블록을 기억장치 할당 큐내에 리스트한다. 대기행렬내에 리스트된 각4KB블록은 다음의 가용 4KB블록을 지적한다. 제1시스템이 사용하는 기억장치는 4KB블록에서 제거되거나 대기행렬의 상단으로부터 상단으로부터 추가되며 블록포인터가 적당히 조정된다.
사용자들이 대기행렬로부터 메모리 공간을 요구하는 때에는 이러한 요구들은 대기행렬로부터 실기억장치 중 필요한 수의 4KB블록을 지정함으로써 충족된다. 기억장치가 더이상 필요하지 아니한 때에는 블록들은 대기행렬로 되돌아 갈 것이다.
그 다음에는 제1운영시스템이 시스템을 구성하는 모듈-스타트-엎이라고 하는 기능리스트를 수행한다.
모듈-스타트-엎에 의하여 수행되는 하나의 응용은 제1운용시스템으로부터 기억장치를 포착하여 이를 제2운영시스템에 할당하는데 이용되는 새로운 응용이다. 이 프로그램은 완전한 기억장치 할당 리스트를 주사하고 기억장치의 인접된 4 KB블록 스트링을 발견한다. 그 다음에 응용프로그램은 인접한 블록스트리에 대응하는 대기행렬 부분내의 포이터를 변경시킴으로써 인접한 기억장치블록을 제1운영시스템의 메모리 할당 리스트에서 제거한다. 적당한 실시예에 있어서 제거된 제1 4 KB블록에 선행하는 4 KB블록의 포인터는 제거된 인접 블록 스트링 바로 다음의 4 KB블록을 지적할수 있게 변경된다.
이 점에서 제1운영시스템은 다시 부트(boot)되거나 응용이 거억장치 포인터를 반환하지 아니하는 한 이러한 실메모리 공간을 제어하지 아니하거나 이를 알지 못한다. 그것은 마치 제1운영시스템이 자체에서 수행 되고 단순히 사용자에게 지정되었기 때문이 아니라 블록들이 테이블로부터 제거되었기 때문에 재할당할 수 없는 프로세스에 할당된 실기억장치의 세그먼트를 고려하는 것과 같다.
그 다음에 제거된 주소공간은 제2운영시스템에 인계된다. 제1운영시스템으로부터 도용되고 제2운영시스템에 제공되는 주소블록을 0주소에서 제2운영시스템으로 출발하는 것처럼 보이게 하는 하드웨어 오프셋 논리가 있다. 그 다음에 제2운영시스템은 제1운영시스템으로부터 도용된 기억장치를 마치 그 자체의 실기억장치처럼 제어하고 기억장치를 그 자체의 가상기억 장치관리기를 거쳐 제어한다. 즉, 그것은 제2시스템에 의하여 발하여진 가상주소들을 지정된 실기억장치 주소공간내의 실주소로 번역한다.
제1운영시스템상에서 수행되는 응용프로그램은 I/O 데이타를 제2처리기 기억장치 공간내외로 이동시킬수 있으나 제2처리기는 제2운영시스템이 추가기억장치를 알지 못하기 때문에 그 할당된 공간 밖에서는 판독 또는 기록하지 못한다.
운영시스템에 고장이 생기면 제2운영 시스템내에서는 하드웨어 트랩이 제2운영시스템이 제1운영시스템공간에 우연히 기록하지 못하게 방지한다.
제2운영시스템에 할당된 기억장치 장소의 양은 사용자에 의하여 모듈-스타트-엎내의 테이블에 정의된다.
사용자가 제2처리기가 16메가바이트를 가지게 하고자 하는 때에는 모듈-스타트-엎 테이블내에 이를 정의하고 응용은 제1운영시스템으로부터 그만큼의 고안을 취득하게 된다. 특히 SVC(서비스 호출)은 응용프로그램으로 하여금 제1운영시스템의 감독자 영역에 접근하여 포인터가 변경할 수 있게 할 수 있다.
2개의 운영시스템이 동일한 기억장치를 공유하는 것이 바람직한 주요 이유는 기억장치가 제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. 단일시스템 영상.
단일시스템 영상이라는 말은 원격데이타 및 자원에의 사용자 접근(예 프린터, 하드 화일 등)이 사용자에게는 사용자 키보드가 부착되어 있는 지역 터미널에 있는 데이타와 자원에 접근하는 것과 동일한 것으로 보이는 컴퓨터 네트워크의 특징을 나타내기 위하여 사용된다. 따라서, 사용자는 네트워크내의 목적 위치를 알지 못하고 단순히 이름만으로 데이타 화일이나 자원에 접근할 수 있다.
"파생된 단일시스템 영상"이라는 개념은 여기에서 새로운 용어로서 도입되고 단일시스템 영상을 가진 네트워크에 직접으로 부착시킬 수 있는 시설들이 결여되어 있으나 유효한 단일시스템 영상을 가진 네트워크에 직접 부착시킬 수 있는 당해 네크워크의 하드웨어 및 소프트웨어 자원들을 이용하는 네트워크의 컴퓨터 요소들에 적용하고자 한다.
"파생된 단일 시스템 영상"의 효과를 전개 하기 위하여 컴퓨터시스템의 직접 부착은 이러한 시스템과 네트워크요소 사이의 여러가지 결합차수에 의하여 실시할 수 있다. 여기에서 "이완 결합"이라함은 파생컴퓨터와 네트워크의 일부인 "본래의" 컴퓨터의 I/O 채널을 통하여 실시되는 결합을 말한다.
"타이트 결합"(tight coupling)은 현재 파생컴퓨터와 본래의 (native)컴퓨터 사이에 양자가 서로 직접적으로(어느 쪽의 기준 I/O채널을 이용함이 없이) 통신 할 수 있게 하는 특별한 하드웨어를 통하여 설정되는 관계를 기술하기 위하여 사용되는 용어이다.
진술한 타이트 결합의 특별한 유형인 "투명 타이트 결합"에는 각 컴퓨터(파생컴퓨터와 본래의 컴퓨터)가 그 운영시스템이 다른 컴퓨터의 자원을 이용한다는 사실을 알지 못하면서 이를 이용할 수 있도록 결합 하드웨어를 적응시키는 것이 포함된다. 위에서 정의한 투명 타이트 결합은 결합 네트워크의 비용 및 성능상 이점들을 성취하는 근거를 형성한다. 결합하드웨어의 비용은 설계가 복잡한데도 불구하고 그렇지 아니하면 필요하게 될 운영시스템 소프트웨어의 대폭적인 수정을 피함으로써 얻게 되는 절약을 상쇄하고도 남음이 있을 것이다. 성능상의 이점은 직접 결합과 결합인터페이스에서의 감소된 대역폭 간섭에 의한 더 신속한 연결에서 얻게 된다.
여기에서 사용하는 "네트워크"라는 말은 특정한 프로토콜에 일치되는 한, 여러개의 서로 다른 기계 타이프를 연결시킬 수 있는 대형 주제 전신처리 위성연결기법인 네트워크라는 현재 널리 쓰이는 개념보다는 상당히 제한된 말이다. 오히려 "네트워크"라는 말은 여기에서는 시스템/88 처리기들의 연결 콤플렉스 또는 달일시스템 영상의 특성들을 가지는 기타처리기들의 연결 콤플렉스에 적용하기 위하여 사용된다.
여기에서 말하는 단일시스템 영상의 개념을 상세히 설명하기 위하여 몇 개의 신중히 정의된 용어를 사용하게 되며 이를 설명하면 다음과 같다.
(1) "고속데이타 상호연결"(HSDI)라 함은 분리하드웨어장치들 사이의 데이타 전송을 하드웨어 서브시스템 (및 케이블)을 말한다.
(2) "링크"(link)라 함은 전체적으로 다른 소프트웨어 목적에 대한 다중부분 포인터로 구성하고 별명의 성질을 다분히 가지고 있는 소프트웨어 구성 또는 목적을 말한다.
(3) "모듈"(module)이라 함은 인클로져(enclousure), 전원, CPU, 메모리 및 I/O 장치 중 적어도 하나이상으로 구성되는 독립된 처리장치를 말한다. 하나의 모듈은 다중인클로져와 함께 하우즈 추가 주변장치에 볼트로 죄어 붙여 대형 단일모듈을 형성함으로써 이를 확대시킬 수 있다. 일부 I/O장치 (터미널, 프린터)는 외부장치로 하여 케이블로 인클로져에 연결시킬 수 있으며 이것들도 단일모듈의 일부로 본다. 모듈은 하나의 CPU콤플렉스만을 가질 수 있다.
(4) "CPU 콤플렉스"라 함은 동일한 인클로져내에서 단일 CPU로서 동작할 수 있도록 운영시스템 소프트웨어에 의하여 관리 및 제어되는 하나 이상의 단일 또는 이중처리기판을 말한다. 설치된 처리기판의 실제수에 관계없이 사용자 프로그램이나 응용은 하나의 CPU만이 존재하는 것처럼 기록되고 수행된다. 처리작업부하는 가용 CPU판 사이에 대충 분배되고 다중 디스크는 동시에 수행되지만 각 응용프로그램은 "단일 CPU영상"으로 제시된다.
(5) "목적"(object)이라 함은 계층 명칭에 의항 유일하게 식별할 수 있는 시스템 (디스크, 테이프)내에 저장된 데이타(수행가능 프로그램을 포함한다.)의 수집을 말한다. 링크는 다른 특정 목적을 가르키는 유일한 명칭을 가진 포인터이며, 따라서 목적 자체라고 본다. I/O포트는 특정한 I/O장치(원시 데이타 또는 목표 데이타)를 가르키는 유일한 명칭을 가진 소프트웨어 구성이며, 따라서 이것도 하나의 목적이다. 운영시스템은 목적 명칭의 복사를 효과적으로 방지한다.
'단일시스템 영상'이라는 말이 문헌마다 다르게 사용되기 때문에 "파생 단일시스템 영상"이라는 본 발명의 의미를 명확히 하기 위하여 이를 더 설명하고자 한다. 단일시스템 영상(single-system image)이라는 말의 정의 및 설명에 있어서 '영상'이라함은 시스템과 환경의 응용프로그램의 견해(view)를 말하며 이와 관련하여 '시스템'이라함은 응용프로그래머가 그 명령어를 지시하는 결합하드웨어(CPU 콤플렉스) 및 소프트웨어 (운영시스템 및 그 공용 프로그램)을 말한다. "환경"이라함은 운영시스템에 의하여 주소가능하고 따라서 운영시스템에 대한 서비스 요구를 통하여 프로그래머가 간접적으로 접근할 수 있는 모든 I/O장치 및 기타 연결설비를 말한다.
자체 운영시스템이 달린 단일 독립 컴퓨터은 프로그래머에게 단일시스템 영상을 제공하여야 한다. 이는 I/O장치를 공유하고 프로그래머가 보아서 이러한 영상이 변하기 시작하는 처리를 분배하기 위하여 다수 시스템들을 한데 연결하고자 하는 경우에만 그러하다. 2개의 기계를 전신처리라인(또는 케이블)을 경유하여 통상적으로 상호연결하는 때에는 프로그래머는 확장 설비를 이용하기 위하여는 이중환경을 이해하고 그 조정을 익히도록 하여야 한다.
일반적으로, 프로그래머가 다른 환경내의 설비에 접근하려면 그 지역 운영시스템에 '다른'운영시스템에게 그 요구사항을 전달하도록 요구하고 이러한 요구사항을 상세히 명시하여 한다. 그런 다음에야 프로그래머는 상당히 긴 지체후에야 그 요구의 결과를 비동기적으로(적적한 순서에 따라) 인수할 수 있다. 기계들 사이의 다중 메시지와 데이타 전송의 조정 및 제어는 양기계내의 중요한 처리 오버헤드를 구성하며, 그러한 이중시스템 환경속에 있는 프로그래머에게는 매우 다루기 힘들고 비효율적이며 곤란한 것이 될 수 있다. 종래의 방식으로 연결되는 기계의 수가 증가하면 프로그래머에 대한 복잡성도 그만큼 빨리 증대될 것이다.
시스템/88원 설계에는 이러한 상항을 간소화시키고 프로그래머에게 단일시스템 영상을 제공하는 수단, 즉 모듈사이의 HSDI연결이 포함되어 있고 HSDI는 각 모듈내의 운영시스템내에서 소프트웨어를 구동시킨다. 여기에서 예를들면, 2-모듈시스템에서는 2개 운영시스템은 각각 전체 환경을 알고 '다른'운영시스템이 능동적 간섭없이 HSDI를 거쳐 설비에 접근할 수 있다. 통신오버헤드의 감소가 두드러진다.
크기와 모델 유형이 서로 다른 다수의 모듈을 HSDI를 거쳐 상호연결시켜서 프로그래머에게는 하나의(확대가는)환경으로 나타나보이는 시스템 콤플렉스를 만들 수 있다. 그 곱(product)인 응용프로그램은 이 시스템 콤플렉스내의 한 디스크상에 저장되고, 콤플렉스내에 있는 CPU중 어느 하나에서 수행되고, 콤플렉스의 터미널중 어느 것에 의하여 제어되거나 모니터되고, 콤플렉스의 I/O장치로부터 또는 이 장치에 데이타를 전송할 수 있으며, 이는 모두 특별한 프로그래밍없이 종전의 방법보다 더 개선된 수행능률로 행할 수 있다.
운영시스템과 그 여러가지 특징 및 설비들은 분배된 환경을 가정할 수 있고 사용자가 여러가지 개체(공용프로그램, 응용, 데이타, 언어처리장치 등)가 어디에 상주하고 있는가에 신경을 쓰거나이를 제어할 필요없이 이러한 환경내에서 연산을 할 수 있도록 기록된다. 이러한 모든 것을 가능하게 하는 관건은 각 목적은 유일한 이름을 가져야 한다는 시행규칙이다. 이것은 가장 기본적인 이름 한정사는 그 자체가 콤플렉스내에서 유일하여야 하는 모듈이름이기 때문에 시스템 콤플렉스 전체에 쉽게 확대 적용된다. 그러므로, 전콤플렉스내에서 어느 목적을 찾아내는 것은 그 이름을 정확히 지정하면 매우 간단하다. 목적의 명명은 프로그래머가 길고 복잡한 이름을 가진 목적에 대하여 매우 짧은 별명포인터(치환명칭)를 사용할 수 있는 링크를 제공함으로써 간소화된다.
이러한 상호연결 S/88 모듈콤플렉스내에서 "파생 단일시스템 영상"의 개념을 달성하기 위하여 다수의 S/370처리기들은 S/370처리기 사용자들이 단일시스템 영상 특징들 중 적어도 일부를 제공할 수 있도록 S/88처리기에 결합시킨다.
S/88 모듈내에는 하나 이상의 S/370처리기들이 제공되어 있다. S/88처리기는 독특하게 각 S/370처리기에 결합되어 있다. 각 S/370처리기는 고장허용한계연산용 S/88 소프트웨어에 의하여 재복사 및 제어된다. 전술한 분리 및 인터럽트 기능기구에 의한 S/88과 S/370의 독특한 직접 결합은 처리기 사이의 데이타 전송을 S/370 및 S/88 운영시스템에 대하여 투명하게 한다. 어느 운영시스템도 다른 처리기 또는 운영시스템의 존재를 알지 못한다.
각 S/370처리기는 S/370 주기억장치를 완전히 제공할 수 있는 고장허용한계 S/88시스템 콤플렉스와 모방 S/370 I/O채널 및 I/O창치를 사용한다. S/370은 S/88의 일부가 아닌 주메모리, 채널 또는 I/O장치는 가지지 아니하며 이러한 설비들은 모두 설계상 고장허용한계이다.
시스템 구성시 각 S/370처리기에는 S/88풀로부터 주기억장치의 1내지 16메가바이트의 전용인접 블록이 지정되고 이블록은 S/88 운영시스템이 우연이라도 이에 전급할 수 없도록 S/88의 구성 테이블로부터 제거된다. 고장허용한계 하드웨어 제지스터는 각S/370용 기억장치블록 포인터를 보류하기 때문에, S/370은 이에 지정될 것 이외의 주기억장치에 접근할 수 있는 수단이 없다. 결과는 S/370에 의한 그 주메모리의 재래식 단일시스템 화면이며 이 메모리의 고장허용한계상은 완전히 투명한다. S/88내의 응용프로그램(EXEC370)은 실제의 S/88장치와 S/88 운영시스템 호출을 이용하여 S/370채널 및 I/O장치를 모방한다. 그것은 일종의 응용프로그램 이기 때문에 S/88 콤플렉스의 단일시스템 영상 화면을 가지며 따라서, 이 화면은 전S/370 '의사채널'에 확대된다.
S/370 운영시스템(및 확대에 의한 응용프로그램)을 반대의 견지에서 볼 때, 모든 I/O연산이 이를 통하여 행하여지는 '윈도우'(window)(채널)을 눈앞에 그려보는 것이 도움을 줄 것이다. 윈도우는 성질이 변하지 아니하나, -S/370프로그램을 변경할 필요가 없으나-, 윈도우를 통하여 보이는 화면은 단일시스템 영상 속성을 포함할 수 있도록 확대된다. 그 다음에는 소규모 개념스텝이 S/88에 의하여 관리되는 단일데이타 베이스를 효율적으로 공유하는 다수의 S/370을 그림으로 표시한다.
이러한 연결법의 중요성은 각 S/370을 비교적 간단히 신속하게 역학적으로 재구성할 수 있다는 것이다. 채널 "윈도우"는 2방향식이고 S/88 제어프로그램 EXEC 370은 그 반대측에 있다. EXEC 370은 S/370 CPU를 정지, 리세트, 재초기화, 재구성 및 재시작할 수 있는 충분한 능력을 가진다. 따라서, 단일시스템 영상 속성(S/88 I/O 및 운영시스템)을 가지는 다른 설비를 이용하여 S/370 I/O 설비를 투명 모방함으로써 이러한 속성이 확대되고 S/370에 제공된다.
그러므로 S/370에는 목적위치 독립성이 제공되어 왔다. 그 사용자들이 S/88 운영시스템 디렉토리내에서 데이타 화일에 지정된 이름에 의하여 데이타 화일 또는 기타 자원에 접근할 수 있다. 사용하는 S/370-S/88 모듈의 콤플렉스내에 있는 데이타 화일의 위치를 알 필요가 없다.
하나의 모듈(9)내의 하나의 S/370처리장치에 의하여 발하여지는 S/370 I/ 명령은 동일한 또는 다른 연결모듈내의 데이타 화일과 유사 상주에 접근할 수 있도록 동일한 모듈내의 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/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장치에 대한 마스터이다. 피어처리기쌍은 어느 운영시스템의 중대한 재기록없이 단일시스템 환경내에서 그 해당 운영시스템을 수행한다.
개요-종래의 시스템/88
본 발명은 IBM시스템/370(S/370) 처리장치(VM, VSE, IX 370 등과 같은 S/370 운영시스템중 하나의 제어하에 S/370 명령어들을 수행하는)가 단일시스템 영상, 고온 배선 가능성, 순간오류탐지, I/O 적재 분배 및 고장 결리 및 동적 재구성 가능성 등의 S/88 특징들을 가지고 고장허용한계 연산을 할 수 있도록 IBM시스템/88(S/88) 처리장치(고장허용한계 환경내에서 S/88 운영시스템의 제어하에 고장허용한계 방법으로 S/88 명령어들을 수행하는)에 긴밀히 결합되어 있는 실시예에 대하여 기술한다.
International Business Machines 회사에서 시판하고 있는 IBM시스템/88은 IBM시스템/88 다이제스트(제2집 1986년 발행) 및 기타 S/88 거래처에서 발행하는 간행물에 전반적으로 기술되어 있다. 모듈 10이 포함되어 있는 시스템/88 컴퓨터 시스템(제6a도)은 고도로 신뢰성있는 온라인 처리가 필요한 고객들의 필요를 충족시키기 위하여 설계된 고가용성 시스템이다. 시스템/88은 듀플렉스 하드웨어구조를 정교한 운영시스템 소프트웨어와 결합시켜서 고장허용한계시스템을 제공한다. 시스템/88은 시스템/88 고속데이타 상호연결(HSDI)(제6b도)을 통하여 다중시스템/88 모듈(10a, 10b, 10c)과 시스템/88 네트워크(제6c도)를 통하여 모듈(10d-9)의 부착에 의하여 수평 증대도 제공한다.
시스템/88은 소자고장이 언제, 어디에서 발생하는가를 탐지하고 이러한 고장으로 인하여 생기는 오류와 인터럽션이 시스템내도 도입되지 못하게 하도록 설계되어 있다. 고장허용한계는 시스템/88 하드웨어 설계의 일부이기 때문에 응용개발자에 의한 프로그래밍이 필요하지 아니하다. 고장허용한계는 소프트웨어 오버헤드나 성능저하없이 수행된다. 시스템/88은 처리장치 직접접근기억장치(DASD) 또는 디스크, 메모리 및 제어기를 포함한 주요소자들의 복사를 통하여 고장허용한계를 달성한다. 듀플렉스 소자들이 고장이 나면 그 듀플렉스 파트너는 자동적으로 처리를 속행하고 시스템은 최종사용자가 사용할 수 있게 남아있다. 단시간의 전원고장중 메모리를 유지하기 위한 예비전지에 의한 복사전원은 제공되어 있다. 시스템/88과 그 소프트웨어 곱은 확대, 사용자 사이의 자원 공유, 최종사용자에 대한 단일시스템 영상을 유지하면서 복잡한 요구사항을 해결등을 쉽게 한다.
단일시스템 영상은 자체의 화일과 I/O가 있고 사용자에게 자기가 단일기계에 등재되어 있는 인상을 주는 네트워크 또는 lAN을 경유하여 상호연결된 다수의 처리기들로 구성된 분배처리환경이다. 사용자는 운영시스템에 의하여 디렉토리를 변경하는 것만으로 한 기계에서 다른 기계로 변환할 수 있다.
시스템/88 처리능력은 시스템/88이 실시중이고 최종사용자에 대한 단일시스템 영상을 유지하는 동안 적당한 계획에 의하여 확대시킬 수 있다. 수평 증대는 다중처리모듈을 시스템/88 HSDI를 사용하는 시스템내에 결합시키고 다중시스템을 시스템/88 네트워크를 사용하는 네트워크내로 결합시킴으로써 달성된다.
시스템/88 처리모듈은 제6a도에서 보는 바와같이 완전한 독립 컴퓨터이다. 시스템/88 시스템은 제6b도에서 보는 바와같이 단일모듈이거나 지역 네트워크내에서 IBM HSDI에 연결되어 있는 모듈집단이다. 원격 전송설비를 이용하는 시스템/88 네트워크는 다중시스템들을 상호연결하여 최종사용자에 대한 단일시스템 영상을 형성하는데 이용하는 설비이다. 2개이상의 시스템들을 통신회선에 의하여 상호연결시켜서 긴 홀(haul) 네트워크를 형성할 수 있다. 이러한 연결은 직접 케이블, 임대 전화번호 또 X 2.5 네트워크를 통하여 할 수 있다. 시스템/88 네트워크는 사용자에게 완전히 투명한 모듈과 시스템 사이의 원격자원 및 루트메시지에 대한 참조를 탐색한다.
고온 배선 가능성은 시스템 동작을 인터럽트시킴이 없이 많은 하드웨어 대체를 할 수 있게 한다. 시스템/88은 고장난 소자를 서비스로부터 제거하고그 듀플렉스 파트너로 서비스를 속행하며 조작원의 간섭없이 고장난 소자에 대한 표시기를 점등시킨다. 보수 기술자 또는 서비스 요원은 처리가 계속되는 동안 고장난 듀플렉스판을 제거 및 대체한다. 고객에 대한 이익에는 적시 수리와 감소된 정비비가 포함된다.
시스템/88이 고장허용한계 연속작동기계이지만 기계동작을 중지시켜야 할 때가 있다. 이러한 몇가지 예는 시스템/88 운영시스템을 승격시키거나 하드웨어 구성을 변경(주기억장치를 추가)하거나 특정한 서비스 절차를 수행하는 것 등이다.
듀플렉스 시스템/88 소자와 시스템/88 소프트웨어는 데이타의 완전성을 유지하는데 도움을 준다. 시스템/88은 고장 또는 고장 지점에서의 과도 오류를 탐지하고 이것이 응용이나 데이타 전반에 전파되지 못하게 한다. 데이타는 변조로부터 보호되고 시스템의 완전성이 유지된다. 각 소자에는 그 자체의 오류-탐지 논리 및 진단이 들어있다. 오류-탐지 논리는 매 기계주기마다 병렬연산의 결과를 비교한다.
시스템이 소자기능 장애를 탐지한 경유에는 이 소자는 자동적으로 서비스로부터 제거된다. 고장난 소자가 내부 진단에 의항 검사를 받는 동안 처리는 듀플렉스 파트너에서 계속된다. 오류탐지 기능은 자동적으로 서비스로부터 제거된 고장 소자에 대한 진단을 실행하고 진단중 처리는 그 듀플렉스 파트너상에서 속행된다. 진단에 의하여 일부 소자들을 대체할 필요가 있다고 결정하는 경우에는 시스템/88은 자동적으로 지원센터를 호출하여 문제를 보고하게 할 수 있다. 고객은 신속한 수리와 저보수비로 이익을 얻는다.
시스템/88은 전반적으로 1984년 6월 5일 로버트 레이드에게 수여한 "고장허용한계 계산용 중앙처리장치"라는 제목의 미합중국 특허 제4,453,215호와 관련 미합중국 특허 제4,486,826호, 제4,597,084호, 제4,654,875호, 제4,750,177호, 제4,816,990호 등에서 상세히 기술된 처리기시스템에 근거한 것으로서 이러한 특허들은 참고로 그 전체를 여기에 합체시켰으며 제215호 레이드 특허의 부분들은 본 출원서 제7도 및 제8도에 개략적으로 도시하였다.
본 출원 제7도 및 제8도에 도시한 이와같은 컴퓨터시스템에는 몇개의 모듈장치 사이에 정보전송을 제공하는 처리장치(12), 임의접근기억장치(16), 주변제어장치(20, 24, 32) 및 단일버스구조(30)가 달린 처리기 모듈(10)이 있다. 각 처리기 모듈내의 버스구조에는 복사 파트너 버스(A, B)가 포함되어 있고 각 기능장치(12, 16, 20, 24, 32)에는 동일한 파트너 장치가 있다. 비동기적 주변장치와 함께 동작되는 제어장치 이외의 각 장치는 통상적으로 그 파트너장치와 로크-스셉 동기로 작동한다. 예를들면, 처리기 모듈의 2개의 파트너 메모리장치(16, 18)는 통상적으로 2개의 파트너 버스(A, B)를 구동시키고 버스구조(30)에 의하여 완전 동기로 구동된다.
컴퓨터 시스템은 처리기 모듈내의 각 기능장치의 레벨에서 고장 탐지를 제공한다. 이 특징을 달성하기 위하여 오류탐지기는 각 장치내에서의 하드웨어 연산을 모니터하고 장치 사이의 정보전송을 검사한다.
오류가 탐지되면 처리기 모듈은 오류를 생기게 한 버스 또는 장치를 고립시켜서 정보가 다른 장치에 전송되지 못하게 하고 모듈은 연산을 계속한다. 속행연산은 고장버스 또는 장치의 파트너를 이용한다. 오류탐지가 정보전송에 선행하는 경우에는 속행연산은 고장없이 행하여졌을 때와 같은 시간에 전송을 수행할 수 있다. 오류탐지가 정보 전송과 일치하는 때에는 속행연산은 전송을 반복할 수 있다.
컴퓨터 시스템은 전술한 고장탐지 및 구제행동을 신속히, 즉 조직사이클의 몇분의 1내에 실시할 수 있다. 컴퓨터시스템은 대부분 유효성에 의문이 있고 전체적인 데이타 유효성을 확인하기 위하여 반복할 필요가 있는 단일정보전송만을 가진다.
처리기 모듈에는 고장허용한계 연산을 제공하기 위하여 상당한 하드웨어 중복성이 있더라도 복사장치가 없는 모듈은 완전히 연산을 할 수 있다.
기능장치 중복성은 모듈로 하여금 어느 장치에 고장이 있는 경우에 연산을 계속할 수 있게 한다. 일반적으로 처리기 모듈의 모든 장치는 탐지된 고장이 없는 때에는 선택된 동기성을 가지고 계속적으로 동작한다. 어느 장치내에서 오류를 나타내는 고장이 탐지된 때에는 이 장치는 고립되고 오프라인되기 때문에 이 장치는 정보를 모듈의 다른 장치에 전송하지 못한다. 오프라인 장치의 파트너는 통상적으로 중단없이 연산을 속행한다.
고장허용한계 연산을 제공하기 위한 모듈내의 기능장치들의 파트너 복사 이외에도 처리기 모듈내의 각 장치는 데이타 전송에 관련되는 하드웨어의 복사를 가지고 있다. 기능장치내에서 이와같은 복사의 목적은 다른 장치와는 독립적으로 각 장치내의 고장을 시험하는 오류탐지구조를 포함하여 모듈의 각 장치내의 기타 구조는 일반적으로 복사되지 아니한다.
처리기 모듈의 모든 장치에 서비스하는 공통 버스구조는 전술한 2개의 복사 레벨의 조합을 이용하고 A버스, A버스를 복사하는 B버스 및 X버스를 형성하는 3개의 콘덕터 세트를 가지는 것이 바람직하다. A버스와 B버스는 각각 장치들 사이의 오류정보전송을 경고하기 위하여 비교할 수 있는 사이클 정의, 주소, 데이타, 패리티 및 기타 신호들의 동일 세트를 지니고 있다. 복사되지 아니하는 X버스의 콘덕터들은 일반적으로 모듈-와이드와 타이 및, 오류상태 및 전력과 같은 다른 동작상호신호들을 지니고 있다. 추가 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도 및 제6c도에 도시한 것과 유사한 방식으로 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 마이크로처리기(MC 68020 사용자편람, 제3판(ISBN-0-13-567017-9)에 기술되어 있음)에 의하여 수행된다. 상기 간행물을 참고로 이 명세에 합체시켰다.
이와 같이 각 처리기요소(PE)(60, 62)에는 모토롤라 68020 마이크로처리기장치가 포함되어 있다. 멀티플렉서(61, 63)는 처리기요소(60, 62)를 레이드 특허에서 상세히 설명한 바에 따라 주소/데이타 제어 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도 및 제32b도에 더 상세히 설명되어 있음) 클램프 회로(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) 인터페이스(89, 91)가 포함되어 있다. 기억장치관리장치(81, 83)는 멀티플렉서(71, 73), 송수신기 (13) 및 버스구조(30)를 경유하여 처리요소(85, 87)를 주기억장치(16)에 결합시킨다.
인터페이스(89, 91)는 S/370 처리요소(85, 87)의 처리기 버스들을 각각 S/88 처리요소(62, 60)의 처리기버스에 결합시킨다.
파트너처리장치(23)는 처리기장치(21)와 동일하다. 전술한 바와 관련하여 장치(21)내의 2개 처리요소(60, 62)와 장치(23)내의 2개 대응요소(도시없음)는 통상적으로 동일한 S/88 운영시스템의 제어하에 동일한 명령어를 동시에 수행할 수 있도록 서로 로크-스템으로 운영된다.
이와 마찬가지로, 장치(21)내의 처리요소(85, 87)와 장치(23)내의 그 대응요소들(도시없음)도 동일한 S/370 운영시스템의 제어하에 동일한 명령어를 동시에 수행할 수 있도록 서로 로크-스텝으로 운영된다.
장치(21 또는 23)내에서 오류가 발생한 경우에는 이 장치는 다른 장치에 의하여 고장허용한계 연산을 계속할 수 있도록 서비스로 부터 제거된다.
S/370 처리장치의 특수한 실시예를 이하에서 상세히 설명하지만 인터내셔널 비지니스 머신즈 회사가 발행하고 이 회사에서 입수할 수 있는 "IBM 시스템/370 연산원리"(간행물 번호 GA 22-7000-10, 제11판, 1987.9)에 기술된 요건을 갖춘 다른 공지된 실시예도 사용할 수 있다. 이 간행물의 내용도 참고로 본 명세에 합체시켰다.
제9a도 및 제9b도는 제8도에 도시한 처리기장치(21)용의 S/370 및 S/88 소자들의 물리적 패키징의 일형태를 도시한 것이다. 처리요소쌍(85, 87)를 포함하는 S/370 소자들은 하나의 기판(101)위에 장착되어 있고 처리요소쌍(60, 62)을 포함하는 S/88 소자들은 또 다른 기판(102)위에 장착되어 있다. 2개의 기판(101, 102)은 서로 견고하게 부착되어 샌드위치쌍(103)을 형성하고 후면 패널(도시없음)의 2개 슬롯내로 삽입하기에 적합하게 되어있다. 종래의 후면 패널배선은 제8도에 도시되어 있고 레이드 특허에 기술되어 있는 바와 같이 기판(101, 102)상의 소자들을 서로에 결합시키는 한편, 버스구조(30)에도 결합시킨다.
S/370 처리기를 S/88 처리기에 직접 결합시키는 것을 상세히 설명하기 전에 S/370이 (1) S/88 주기억장치의 일부를 사용하고, (2) 명령과 데이타를 S/88 가상기억장치 공간의 일부를 이용하는 S/88과 교환할 수 있게 하는 기구를 간단히 참조하여보는 것이 도움이 될 것이다.
따라서, 제10도는 S/88 가상기억장치를 하나의 모듈(9)용 기억장치 관리장치(105)에 의하여 실기억장치(16)에 대하여 맵핑하는 적당한 형태를 도시한 것이다. 가상주소공간(106)은 S/88 운영시스템 공간(107)과 사용자 응용공간(108)으로 분할되어 있다. 공간(107)내에는 각 S/370 처리기요소를 처리장치(21)내의 해당 S/88 처리기요소에 결합시키기 위하여 사용되는 하드웨어 및 코드용으로 지정된 구역(109)(주소007E0000 내지 007EEFFFF)이 있다. 주소공간(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/88 주기억장치(18)는 동일한 /370 주기억구역(도시없음)을 필요로 한다. 각 S/370 처리기요소는 그 해당 S/370 주기억구역에만 접근할 수 있고 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 명령어들을 동시에 수행하도록 결합되어 있는 4개의 S/370 처리기요소(85)(각 장치(27, 23)내에 2개씩 들어있는)와 각 장치(21, 23)내에 2개씩 들어 있는 4개의 S/88 처리요소(62)를 개략적으로 도시한 것이다. 따라서, 4개의 S/370 처리기요소들은 프로그램 수행에 관한 한 하나의 S/370 처리장치로서 행동한다. 이와 마찬가지로 4개의 S/88 처리기요소들도 하나의 /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)를 도시한 것이다. PE 85는 처리기요소 인터페이스(89) 내지 처리기요소를 포함한 제2경로를 거쳐 PE 62의 처리기버스(161)에 결합되어 있는 것으로 도시되어 있다. PE 85는 S/370 프로그램 수행중 기억장치(16)내의 지정된 S/370 주기억구역(162)으로 부터 데이타와 명령어를 채취(및 저장)하기 위하여 제1경로를 이용한다. PE 62는 인터페이스(89)를 포함하는 제2경로를 거쳐 PE 85용의 S/370 I/O 연산을 수행한다.
적당한 실시예에 있어서 S/370 칩 세트(150)(제11도)에는 처리기요소(85)용 개별기능칩, 클럭(152), 디렉토리 룩 어사이드 테이블(DLAT)(341)가 다린 캐쉬제어기(153), 버스어댑터(154), 선택적 부동소수점공동처리기요소(151) 및 S/370 구조를 지원하는 마이크로코드 세트를 저장하기 위한 제어저장(171)등이 포함되어 있다. 이러한 S/370 칩 세트는 인터내셔널 비즈니스 머신즈 회사가 시판하고 있는 기존 S/370 운영시스템(VSE/SP, VM/SP, IX/370등과 같은)중 어느 것으로 운영하도록 적합시킬 수 있다.
캐쉬제어기(153)는 저장제어 인터페이스(STCT)와 함계 S/370 기억관리장치(81)를 형성한다. 버스어댑터(154)와 버스제어장치(BCU)(156)에는 PE 내지 PE 인터페이스(89)가 포함되어 있다.
적당한 실시예에 있어서 PE 85와 같은 S/370 CPU는 각각 32비트 데이타 플로우, 32비트 산수/논리장치(ALU) 3포트 데이타 지역기억장치내의 32비트 레지스터 및 8바이트 S/370 명령어 버퍼등을 가진 32비트 마이크로처리기이다. S/370 명령어들은 하드웨어내에서 수행되거나 마이크로 명령어로 해석된다. 칩(153)은 S/370 프로그램 명령어 및 데이타용의 캐쉬기억장치와 연관저장제어기능을 함께 제공한다. 칩(153)은 그 프로그램 명령어를 수행하면서 PE 85로 부터 발하여지는 저장요구를 다룬다. 칩(153)도 I/O 데이타를 전송할 때, 버스어댑터(154)로 부터의 요구들을 다룬다.
버스어댑터(154)와 BCU(156)는 입/출력 연산중 내부 S/370 처리기버스(170)를 S/88 처리기버스(161)에 직접으로(또는 긴밀하게) 상호연결시키기 위한 논리와 제어를 제공한다. BCU(156)는 PE 85 및 PE 62의 처리기버스들을 서로 직접 결합시키는 1차 기구이다. 후술하는 바와같이 PE(62)와 PE(85) 사이에 데이타 및 명령을 전송하기 위하여 (62)를 그 연관시스템 하드웨어로 부터 "분리"시킬 때, S/88 처리기요소(62)와 상호작용을 하는 것은 바로 하드웨어 기구이다.
클럭 칩(152)(제12도)은 클럭신호발생용 중앙집중논리를 사용하고 적당한 클럭신호들을 다룬 칩(85, 151, 153, 154)에 개별적으로 응용한다. 클럭(152)은 시스템/88 버스 (30)로 부터의 클럭신호에 의하여 제어되어 S/370 PE(85) 및 S/88 PE(62)를 동기화 시킨다.
처리기 결합/분리하드웨어와는 별도로 서로 다른 2개의 S/370 및 S/88 하드웨어 구조들을 합병하는 일부는 전술한 비고장허용한계 하드웨어를 고장허용한계 버스구조(30)에 동기적으로 부착시키는 수단이다. 적당한 실시예에 있어서 이러한 인터페이스는 S/370 캐쉬제어기(153)와 S/88 시스템 버스(30)사이를 통하게 하여야 하는 STCI 논리(155)에 의하여 다루어진다. 그 외에도 비고장허용한계 하드웨어는 제8도에 도시한 기판에 복사되어 서로 뿐아니라 파트너장치와 로크-스텝으로 수행할 수 있는 "첵크" 및 "드라이브"논리를 발생시켜야 한다. 따라서 기판(101, 102)쌍의 시스템 소자들로 구성되는 "단일"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) 사이의 충분한 파이프라이닝 능력을 유지하는데 있어서는 인정될 수 없다.
제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/88 클럭을 S/370 클럭 칩(152)내로의 바람직한 S/370 발진기 입력주파수를 성취할 수 있도록 곱함으로써 클럭 동기화 논리(158)내에서 완수된다. 이 경우에는 S/88 및 S/370 클럭 사이클의 주파수가 2배로 된다. 두번째로는 S/370 사이클의 개시를 나타내는 회선(159)상의 피드백 펄스가 S/88 반사이클주기와 동일한 S/370 발진기입력 클럭주기보다 더 큰 주기 1레지스트 대취 지연의 리딩 및 트레일링 에지를 나타내는 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 반사이클 주기내에 시작하게 된다. 버스구조(30)와 S/370 캐쉬제어기(153) 사이의 모든 전송타이밍은 이 반사이클에 있어서 최악의 지연으로 가정한다. 그 외에도 비교논리(15)는 "종단"논리(403)(제32도)를 수반하는 S/88 처리기기판(102)과 동기화 시키면서 S/88 클럭에 의하여 표본추출된 회선에 의하여서만 공급된다. 그러므로 첵크 및 드라이브 S/370 하드웨어가 실제로 그 해당 클럭 발생논리내의 지연변동으로 인하여 동기화에서 약간 벗어날지라도 양측은 버스구조(30)에 공통인 현행 S/88 클럭사이클의 시작 후 반사이클 보다 더 많게 실시되지 아니한다. 동기화 논리(158)는 계속적으로 회선(159)상의 S/370 클럭 피드백을 모니터하고 반사이클 주기를 초과하는 편류를 보장하지 아니한다. 적당한 실시예에 있어서 어느 시스템 리세트중 양측을 동기화시키려면 최대한 1버스(30) 사이클이 필요하다. 리세트 밖의 총지연내의 편류로서 일방의 S/370 클럭을 "확대"시키는 편류는 광범위한 "종단"상태 즉 고장을 생기게 한다.
제12도는 제11도의 배열을 더 상세히 도시한 것이다. S/370 제어기억장치(171)는 PE(85)에 연결되어 있는 것으로 도시되어 있다. 적당한 실시예에 있어서 제어기억장치(171)는 PE(85)내에서 프로그램 명령어와 I/O 연산의 수행을 제어하는 마이크로 명령어를 저장하는 임의 접근기억장치의 16KB로 구성되어 있다. 제어기억장치(171)에는 주저장장치(16)내의 S/370 전용기억장치(162)의 일부인 내부목적구역(IOA)(187)(제28도)으로 부터의 요구에 근거하여 부하된 과도 마이크로코드를 유지하는 버퍼로서 이용되는 64B블록(186)(제29도)도 포함되어 있다. 이 도면에서 PE(62)의 버스구조(161)는 그 가상주소버스(161A)와 데이타버스(161D)로 분할되어 있는 것으로 도시되어 있다. PE(62)는 부동소수점처리기(172), 캐쉬(173), 여기에서 ETIO라고 하는 결합 마이크로 코드를 저장하기 위하여 이용되는 마이크로 코드 저장장치(174)를 포함하는 하드웨어와 연관되어 있다. 아래에서 보는 바와 같이 마이크로 코드와 캐쉬(173)내에 저장된 응용프로그램은 PE(62)와 BCU논리(156)를 제어하여 PE(85)용의 I/O연산을 수행하기 위하여 이용된다. PE(62) 하드웨어에는 주소번역기구(175)도 포함되어 있다. 기록파이프(176)는 시스템/88의 연산을 가속시키기 위하여 다음 사이클중 데이타를 시스템 버스(30)에 응용하기 위하여 하나의 기록사이클중 데이타를 일시적으로 저장한다. 레이드 특허에서 기술된 타이프의 시스템/88 버스논리(177)는 번역장치(175)와 기록파이프(176)를 전술한 레이드 특허에서 일반적으로 기술한 방법으로 시스템 버스(30)에 결합시킨다. 이와 유사한 시스템/88 버스논리장치(178)는 저장제어 인터페이스(155)를 시스템 버스(30)에 결합시킨다.
버퍼(180), 프로그램 가능 롬(PROM)(181), 기억장치(182) 및 레지스터 세트(183)는 시스템/88 및 시스템/370의 초기화중 사용할 수 있도록 PE(62)에 결합되어 있다. PROM(181)에는 시스템을 전원에서 순서로 부트시키는데 필요한 시스템 테스트 코드와 IDCODE가 있다. PROM(181)에는 S/88용 동기화 코드가 있다.
S/370 칩 세트중 2개는 동일한 물리적 기판위에 장착되어 있고 동기화되며 기판자체검사를 제공할 수 있게 로크-스텝으로 프로그램을 수행한다. STC 버스(157)와 채널(0, 1) 버스는 잠재적 고장이 모니터되기 때문에 S/370 처리기는 오류를 다른 필드교체 가능장치에 전파하지 못한다.
인터페이스(89)의 BCU(156) 및 어댑터(154)는 각 처리기(PE 62, PE85)로 하여금 어느 운영시스템도 시스템을 완전히 제어하지 못하도록 다른 처리기를 적당히 제어할 수 있게 한다. 각 처리기의 기능은 부분적으로 각 처리기내에서 실시되는 인터페이스(89)와 마이크로 코드에 의하여 제어된다.
처리기 대 처리기 인터페이스(89)
1. I/O 어댑터(154)
어댑처(154)(제13도)는 S/370 처리기(85)를 그 출력채널(0, 1)을 경유하여 BCU(156)에 접속시킨다. 채널에는 한 쌍의 비동기적 2-바이트-광역 데이타 버스(250, 251)가 포함되어 있다. 버스(250, 251)는 한 쌍의 64바이트 버퍼(259, 260)를 경유하여 처리기 버스 (170)내의 동기 4-바이트-광역 데이타 경로에 결합되어 있다. 데이타는 버스(251)를 경유하여 BCU(156)로부터 어댑터(154)(및 S/370 주기억장치 162)에 전송되고 버스(250)를 거쳐 어댑터(154)로부처 BCU(156)에 전송된다. 어댑터(154)에는 다음의 레지스터들이 포함되어 있다.
1. 베이스 레지스터(110)에는 대기행렬 및 우편함 주소법용으로 이용되는 베이스 주소와 대기행렬 길이가 들어있다.
2. 판독 포인터(RPNTR)와 기록 포인터(WPNTR) 레지스터(111, 112)에는 기준 주소로부터 판독 또는 기록을 위하여 접근 할 수 있는 다음 대기행렬 엔트리까지의 오프셋이 들어있다. 그 값은 명령/주소가 버스(170)를 경유하여 캐쉬제어기(153)로 전송되어야 할 때 명령과 함께 버스 송신 레지스터(BSR)내로 부하된다.
3. 상태 레지스터(IOSR)(118)에는 PU-BCU 및 BCU-PU 요구, 인바운드 메시지 대기행렬의 상태 및 BCU-인터페이스의 상태가 들어있다.
4. 예외 가능 레지스터(ER)(119)내의 비트가 1이고 대응 IOSR-비트가 1인 경우에는 PE85내의 예외는 상승한다.
5. 제어단어 레지스터(CW)(120)는 일부 비트의 세팅/리세팅을 제어한다.
6. 주소검사 경계 레지스터(ACBR)(121)는 내부 목적구역(IOA)(187) 시작 페이지 주소를 보류한다.
7. 주소 키 레지스터(ADDR/KEY)(122, 123)는 통상적으로 기억장치(162)내의 일위치에 접근할 수 있도록 주소/데이타 버스(250, 251)를 경유하여 BCU(156)에 의하여 부하된다. 이러한 레지스터들은 시험 목적용 PE 85에 의하여 부하될 수 있다.
8. 명령-레지스터(CMDO, 1)(124, 125)는 통상적으로 BCU(156)에 의하여 명령 및 바이트 계수가 부하된다. 레지스터들은 시험 목적용 PE85에 의하여 부하될 수 있다.
어댑터(154)는 PE(85)와 BCU(156) 사이의 인터페이스이다. 논리적으로 어댑터(154)는 BCU1(156)에 다음의 서비스들을 제공한다.
-S/370 주기억장치(162)에 접근
-S/370 기억장치(162)내의 우편함 및 메시지 대기행렬에의 접근
-PE(85)와 BCU(156) 사이의 요구/응답 기구
BCU(156)는 그 IOA 구역(187)(제28도)을 포함하여 완전한 기억장치(162)에의 접근을 가진다. 어댑터(154)는 처리기 버스(170)를 경유하여 어댑터(154)로부터 키, 명령 및 기억장치(162) 주소 데이타를 수신한후, 캐쉬제어기(153)에 의하여 키 검사가 행하여지는 동안에, IOA 구역(187)과 사용자 구역(165) 사이의 주소경계검사(ACB 검사)를 수행한다. 저장될 데이타의 주소 회선이 캐쉬내에 보류되어 있는 경우에는 데이타는 캐쉬내에 저장된다. 그렇지 아니하면 제어기(153)는 데이타는 주기억장치(162)로 전송한다. 데이타 채취를 위하여 동일한 기구가 캐쉬제어기(153) 내에 응용된다. PE(85)와 BCU(156) 사이의 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 엔트리)로 세트된다. 2베이스는 베이스 레지스터(110)내에 버퍼 크기의 2배의 경계(즉, 2-16KB)로 세트된다.
인바운드 메시지 대기행렬(189)은 BCU(154)를 경유하여 수신한 모든 메시지를 연대순으로 저장한다. 각 엔트리는 16바이트 길이다.
레지스터내의 판독 포인터(RPNTER)와 기록 포인터(WPNTR)는 BCU(156)에 의하여 대기행렬(189)로부터의 엔트리를 판독하고 대기행력(189)내로의 엔트리를 기록하기 위하여 이용된다. PE(85)는 감지 연산에 의하여 판독 포인터에 접근한다. 레지스터(110)내의 베이스 주소+WPNTR는 기록된 다음 대기행렬 엔트리를 가르키고 베이스 주소+RPNTR는 판독될 다음 대기행렬 엔트리를 가르킨다.
이러한 포인터들은 각 대기형렬 연산 후 갱신된다.
WPNTR+16= WPNTR 기록후
RPNTR+16= RPNTR 판독후
포인터들을 비교함으로써 다음의 조건들이 생긴다.
RPNTR=WPNTR 대기행렬은 비어있다.
RPNTR=WPNTR+16 대기행렬은 가득차 있다.
BCU(156)은 대기행렬에 기록하라고 요구하면 버퍼 불가용(BNA)이 상태 버스를 경유하여 BCU에 송신된다.
우편함 구역(188)내에 저장된 데이타의 유효성은 PE(85)로부터 BCU(156)에 통지되고 그 반대로는 다음의 기구에 의하여 통지된다.
회선(256a)(제16도)상의 PU로부터 BCU에 대한 요구는 PE(85)에 의하여 제어 마이크로 명령어로 세트된다. 이것은 BCU(156)에 대하여 우편함(188)으로부터 명령을 재취하고 이를 수행하도록 어드바이스한다. 요구는 명령 수행 후 BCU에 의하여 리세트된다. 요구의 상태는 PE(85)에 의하여 감지될 수 있다.
BCU(156)는 PE(85)에 의하여 개시된 명령을 수행하는 동안에 또는 언제든지 문제가 생긴 때에 요구를 한다. 선택적으로 마스크되지 아니한 경우에는 PE(5)내에 예외가 생기게 된다.
어댑터(154)는 비동기적 어댑터 채널(0, 1)의 전송속도를 동기처리기 버스(170)에 정합시킨다. 그러므로 BCU(156)는 BCU(156)로의 데이타 전송과 BCU로부터의 데이타 전송을 위하여 어앱터(154)내의 64바이트 데이타 버퍼(259, 260)에 의하여 지원을 받는다. 배열에는 채널(0, 1) 버스와 처리기 버스(170)에의 4바이트 포트가 있다.
동기 레지스터(113, 114)는 BCU(156)와 버퍼 배열(260, 259) 사이에 전송된 데이타를 버퍼시킨다. 버스는 처리기 버스(170)로부터 수신되고 처리기 버스(170)에 전송된 레지스터(115, 116)저장 데이타를 송수신한다.
기억장치 연산(IO/ 데이타 기억장치, 대기행렬 OP)은 명령/바이트 계수, 보호키 및 기억장치 주소를 채널(1) 버스를 경유하여 어댑터(154)에 송신하는 BCU(156)에 의하여 시작된다. 명령/바이트 계수는 명령버스(252)(제13도)상에서 수신되고 명령 레지스터(125)내에 저장된다. 키 및 주소는 데이타는 BCU(156)로부터 주소/데이타 버스(251)(제13도)을 경유하여 수신되고 키/주소 레지스터(123)내에 저장된다. 배열 기록 및 판독 주소 포인터는 레지스터(128)내에 그 시작 값으로 세트된다. 버스(251)상에서의 데이타 전송수(일시에 2바이트)는 바이트 계수에 의하여 정하여진다. 1회의 저장작업에 의하여 64바이트까지의 데이타가 전송될 수 있다. 저장작업내의 어떤 바이트의 저장주소는 64바이트 주소 경계를 횡단하지 못한다.
명령/주소의 뒤에는 버스(251)상의 데이타 바이트가 뒤따른다. 모든 데이타는 64바이트 버퍼(260)내에 수집된다. 최종 데이타가 BCU(156)로부터 수신된 후, 어댑터(154)는 먼저 2개의 데이타 버퍼(259)에 대한 내부우선 순위검사(도시없음)를 수행하고, 그 다음에는 어댑터(154)가 최고의 요구우선순위를 가지는 처리기버스(170)상의 마스터쉽(도시없음)을 요구한다.
2개의 버퍼(59, 260)가 동시에 전송을 요구하는 경우에는 내부우선순위제어가 버스(170)를 먼저 버퍼(259)에게 주고, 그 다음에 조정사이클없이 버퍼(260)에게 주고, 그 다음에 조정사이클없이 버퍼(260)에게 준다. 즉, 판독이 기록보다 우선순위를 가진다.
버스마스터쉽이 주어지면, 명령/바이트 계수, 보호키 및 개시 주소가 캐쉬제어기(153)로 전송된다. 명령전송사이클 다음에는 데이타 전송사이클이 뒤따른다.
캐쉬제어기(153)는 보호키 검사를 수행한다. 키 위반은 어댑터(154)에 버스(174)상태로 보고된다. 캐쉬제어기(153) 및 주기억장치(162)에 의하여 탐지된 기타 검사조건들은 ANY-CHECK 상태로서 보고된다. 어댑터(154)에 의하여 탐지된 키 위반과 상태조건들은 상태전송사이클로 BCU에 송신된다.
어댑터(154)에 의하여 탐지되고 BCU(156)에 보고할 수 있는 상태조건은 2가지가 있다. 이러한 2가지 검사조건에 있어서는 기억장치(162)로의 접근이 억제된다.
BCU(156)로부터 수신되는 각 주기억장치 주소는 ACB 레지스터내의 보관된 주소와 비교하여 접근이 기억장치(162)의 IOA(187) 또는 고객구역(165)에 대한 것인지의 여부를 결정한다. BCU(156)로부터의 각 명령과 함께 수신하는 "고객"(customer)비트는 주기억장치 접근이 IOA구역(187) 또는 고객구역(165)에 대한 것인지의 여부를 결정하고 부적당한 접근을 검사한다.
아래에서 설명하는 버퍼 불가용(BNA)조건은 대기행렬 연산을 위하여서만 보고된다.
판독 동작(I/O 판독, 우편함 판독)은 저장동작과 본질적으로 동일한 방법으로 BCU(165)에 의하여 시작된다. 명령/바이트 계수, 보호키 및 주소가 BCU(156)로부 수신되자마자 어댑터(154)내부 우선순위검사가 수행되고 처리기 버스(170) 마스터쉽이 요구된다. 버스 마스터쉽이 주어지면, 명령/바이트 계수, 보호키 및 주기억장치개시 주소가 캐쉬제어기(153)로 전송되어 판독주기가 개시된다. 어댑터(154)는 요구받은 데이타를 먼저 그 버퍼(259)에 적재하고, 그 다음에는 버스(250)를 거쳐 BCU(156)에 대한 BCU 요구에 적재한다. 상태는 각 데이타 전송과 함께 보고된다.
저장동작을 위한 상태 조건 및 보고 기구는 판독동작에 응용한다.
PE(85)는 버스(170)를 경유하는 감지(판독)동작과 제어(기록)동작에 의하여 어댑터(154)내에 있는 대부분의 레지스터에 접근할 수 있다.
감지 동작에 있어서 명령은 어댑터(154)로 전송되어 레지스터(129)내에 래치된다. 다음 주기에는 감지 멀티플렉서(126)가 명령에 따라 선택되고 이 명령은 BSR(116)내에 적재되고 다음의 버스(170) 사이클에서 유효한 예상데이타를 가진다.
감지될 레지스터상의 내부 패리티 오류가 탐지된 경우에는 어댑터(154)가 양호한 패리티를 PE(85)에 회신하지만 키/상태 버스상의 검사 조건을 높인다. 이 기능은 특수한 감지 코드 포인트에 의하여 시험한다.
제어동작에 있어서는 버스(170) 명령에 데이타가 뒤따르고, 이 데이타는 다음 사이클에서 목표 레지스터내에 적재된다.
감지 또는 제어동작을 위한 명령 사이클내에서 또는 제어동작을 위한 데이타 사이클내에서 패리티 오류를 버스(170)상에서 탐지한 때에는 어댑터(154)가 클럭을 중지시킨다.
베이스 레지스터(110)에는 대기행렬 및 우편함 어드레싱용의 베이스 주소와 대기행렬 길이 코드가 들어있다. 대기행렬은 베이스 주소에서 시작되고 우편함 구역은 베이스+대기행렬 길이에서 시작된다.
RPNTR 및 WPNTR 레지스터(111, 112)에는 베이스 주소에서 판독 또는 기록을 위하여 접근되어야 하는 다음 대기행렬 엔드리까지의 오프셋이 들어있다.
감지된 때에는 판독 포인터 기록포인터는 어댑터(154)내의 감지 멀티플렉서(126)에 의하여 베이스 주소와 접합된다. 그러므로 감지된 동작에 의하여 복귀되는 단어가 접근될 다음 대기행렬 엔트리의 완전한 주소이다.
I/O 상태 레지스터에는 다음의 비트(여기에서 설명하지 아니한 다른 비트 이외에)가 들어있다.
Any check(비트 0)-CHSR<0……24> 및 대응 CHER-비트내의 검사조건이 1인 경우에는 1에 세트된다. Any check는 ATTN-REQ를 생기게 한다. MODE-REA<1>=1인 경우에는 Clock-Stop Diana 신호가 활동하게 된다.
BNA sent(비트 6)-버퍼 불가용(BNA) 비트는 BCU(156)가 인바운드 메시지를 대기행렬속에 저장시키려 할때, 대기행렬이 만원인 때, 즉 RPNTR=WPNTR+16인 때에는 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)에 의하여 세트된다. 비트(10, 14)가 PE(85)에 의하여 리세트되면 채널(0, 1)용 회선(256d)상에 BCU to PU Request가 생긴다.
PU to BCU Req(비트 11)-채널(0)용 CW 레지스터(120)의 비트(11)의 채널(1)용 CW 레지스터(120)의 비트(15)를 세트시킴으로써 PE(85)에 의하여 회선(256a)상에 세트된다. PU to BCU acknowledge 신호에 의하여 회선(256b)상에 리세트된다.
BCU powerloss(비트 13)-이 비트는 그 전원을 상실하거나 '리세트상의 전원'이 발생하는 때에 BCU(156)에 의하여 1에 세트된다. 이것은 CW 레지스터(120)의 '리세트 BCU powerloss'비트에 1이 기록되고 BCU가 더 이상 전원손실상태에 있지 아니한 경우에는 0으로 리세트된다.
Allow Arbitration(비트 29)-이 비트는 어댑터 모드 레지스터의 비트(3)가 비활동적인 경우에는 채널버스신호 'Allow Arbitraion'을 활성화시킨다.
BCU(156)로부터 수신한 명령/주소의 일부인 고객접근비트는 기억장치접근을 IOA 구역(187)내에 있어야 한다. 이러한 접근에 대하여는 키 검사가 행하여지지 아니하며 따라서 어댑터 하드웨어 키를 0로 강제한다. (모든 키 엔트리와 정합시킨다.)
고객접근비트가 '1'인 경우에는 기억장치접근을 위한 페이지 주소는 고객기억구역(165)내에 있어야 한다. 그렇지 아니하면 ACB검사조건이 접근을 위하여 제시된다.
PE(5)는 메시지 명령을 이용하여 어댑터(154) 레지스터를 판독(감지)하거나 기록(제어)한다.
이러한 명령들의 헝식은 다음과 같다.
비트 0-7 CMD : 명령형
8-11 SRC : 요구하는 버스장치 주소
12-15 DST : 수신하는 버스장치 주소
16-23 MSG : cmd 사이클로 전송될 데이타
24-27 REG 1 : 제어용의 레지스터 번호
28-31 REG 2 : 감지용 레지스터
PE-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, P0, P1)
명령/상태 버스(249)(비트 0-3, P)
태그 엎(BCU to 버퍼)회선(262a)
태그 다운(버퍼 to BCU) 회선(262b)
PU to BCU 요구회선(256a)
BCU to PU Acknowledge회선(256b)등이 포함되어 있다.
채널(1)에는 주소/데이타 버스(251), 명령/상태 버스(252), 태그 엎 및 태그 다운 회선(262c, 262d)이 포함되어 있다.
채널(0)은 S/370 기억장치(162)(및 PE 85)로부터 BCU(156)까지의 데이타 전송용으로 이용되고 채널(1)은 BCU(156)로부터 기억장치(162)(및 PE 85)로의 데이타 전송용으로 이용된다.
채널버스(249, 250, 251, 252)는 각각 64바이트 이하의 데이타를 저장할 수 있는 I/O어댑터(154)내에서 시작되고 BCU(156)내에서 종료된다. I/O어댑터(154)는 완전단어형식(32비트)를 가진 S/370 내부처리기 버스(170)와 그 반단어형식(16비트)를 가진 저속 버스(249-252) 사이의 속도정합으로서 이용된다.
각 채널은 2개 부분 즉 2-바이트 광역(반단어)데이타 버스(250, 251)와 반 바이트 광역(4비트)명령/상태버스(249, 252)로 조직되어 있다. 태그신호들은 요구/응답을 거쳐 연산과 특별 신호들을 제어하는 수단을 제공한다.
각 채널을 통한 데이타 전송은 언제나 2개의 사이클(2-바이트 버스를 거쳐 4개 바이트를 전송하는)내에서 행하여진다. 논리적으로 말하면, 모든 데이타 전송은 S/370 주기억장치(162)와 BCU(156)를 포함하는 I/O서브시스템 사이에서 행하여진다. BCU(156)는 마스터이다. 즉, BCU는 PE(85)가 일단 전송의 필요를 신호로 통지한 때는 모든 전송동작을 개시한다.
명령/상태 버스(249, 252)는 선택사이클중 전송방향(채취/저장)과 전송될 데이타의 양의 정의하기 위하여 이용된다. 주소/데이타 버스(250, 251)는 선택사이클중 주저장 주소를 전송하기 위하여 이용되고 실제 전송 주기중 데이타를 이송한다. 이 버스는 기억장치(162)내의 "우편함" 및 "메시지 대기행렬"이라고 알려진 특수구역(188, 189)을 표시하기 위하여도 이용된다.
채취동작(기억장치 162로부터의)중 상태는 명령/상태 버스(249)를 거쳐 버스(250)상의 처음 2개 바이트 데이타와 함께 전송된다. 이러한 상태는 어느 주소검사, 키검사등을 표시하거나 성공적인 연산을 표시하기 위하여 0이 된다.
저장동작(기억장치 162내로의)이 수행되면 상태사이클은 모든 데이타가 주기억장치(162)에 이송된 후 뒤따르게 된다.
제14a도 및 제14b도는 채취 및 저장동작의 서브사이클/및 서브사이클 2중 버스부분의 지역사용을 도시한 것이다.
여기에서
aaa … 데이타 필드내의 제1바이트(왼쪽 끝)의 주소
A : 1=주소 검사
B : 1=버퍼 불가용
C : 1은 고객기억장치(165)접근, 0은 마이크로 코드 구역접근(IOA 187)
ddd … 기어거장치로부터의 4바이트 데이타
fff …필드길이-1(바이트(0…63십진수)내의)
kkkk 기억장치 키(0…15십진수)
k 1=키 검사
00000 : 32바이트 우편함 구역내의 오프셋
pp 우선순위(0…3, 3이 최고이다.)
… 무관심
/// : 버스가 부종이다.(정의되지 아니하였다.)
in 인바운드(BCU to 버퍼)
in 인바운드(BCU to 버퍼)
다음의 태그 회선들은 데이타 전송작업용으로 이용된다.
1. 버스 어댑터(154)로부터 BCU(156)로의 PU to BCU Request 회선(256a)은 PE(85)가 I/O동작의 필요를 표시하기 위하여 이용한다. 일단 세트되면 신호는 BCU(156)에 의하여 리세트될 때까지 활동을 한다.
2. BCU(156)에서 어댑터(154)로의 태그 엎 회선(262a)은 어댑터(154)로부터의 아우트바운드 데이타를 요구하거나 입력 데이타를 버스상에서 이용할 수 있음을 표시하는데 이용된다. 태그 엎 회선(262c)도 동일하게 기능한다.
3. 어댑터(154)에서 BCU(156)로의 태그 다운 회선(262b)은 BCI(156)에 대한 데이타가 일시적으로 부족한 경우에 이러한 상황을 표시하기 위하여 이용된다. 태그 다운의 하강 단부는 버스상의 아우트바운드 데이타 가용성을 표시한다. 태그 다운 회선(262d)도 동일하게 기능한다.
4. BCU(156)에서 어댑터(154)로의 BCU to PU Acknowledge 회선(256b)은 PU to BCU 요구신호를 리세트하는데 이용된다. 이러한 리세트 I/O 우편함 연산이 완료되었을때 수행된다.
PE(85)는 명령어열에서 시작 I/O 명령어(SIO)를 탐지한 때에는 I/O 서브시스템, 즉 BCU(156)에 대하여 "PU to BCU Request"회선(256a)을 활성화시킴으로 I/O 연산의 필요에 대하여 경고한다. 이러한 태그에 의하여 BCU(156)는 기억장치(162)내의 "우편함"(188)을 조사하여 이 연산이 채취 또는 저장인가의 여부, 얼마나 많은 바이트를 전송하여야 되는가 등을 알아낸다. 우편함에는 실제로 해당 I/O 연산의 채널 SIO, CUA, CAW 및 명령어(CCW)가 들어있다.
저장작업은 일반적으로 BCU(156)가 데이타를 PE(85)로 송신하는 작업이다. 이 "데이타"는 선택사이클로 송신되는 명령/키/주소이거나 주기억장치(162)에 저장될 "실" I/O 데이타이다. 어느 경우에나 사건의 순서는 동일하다.
제15a도 내지 제15c도는 다음의 설명을 위하여 데이타와 상태정보가 어댑터(154)와 BCU(156)내의 32비트 버퍼/레지스터 외에 게이트되는 방법과 고순서(좌측) 및 저순서(우측)비트의 정보가 어댑터(154)의 18비트 채널(0, 1) 버스상에 배치되는 방법을 일반적형태로 개략 도시한 것이다.
제25도 및 제26도는 BCU(156)와 어댑터(154) 사이의 데이타 전송용 신호들의 특별한 집합을 제공한다.
저장동작중 BCU 클럭 사이클이 시작되면 (제15a도), BCU(156)는 제1사이클용 데이타를 버스(251)상에 배치한다. 이것이 주기억장치 데이타 연산인 경우에는 명령, 바이트 계수, 접근 키 및 주기억저장 주소의 제1바이트가 명령/상태버스(252)와 주소/데이타 버스(251)상에 각각 배치된다. 이것이 우편함 조사를 위한 선택사이클인 경우에는 명령이 고정위치내에 있는 우편함을 표시하기 때문에 주기억저장주소는 배치되지 아니한다. 제1서브사이클은 2사이클 시간동안 버스상에 유효하게 유지된다.
BCU(156)는 선택사이클중 데이타를 버스(251)상에 배치한 때로부터 1 BCU 클럭사이클이 경과한 후 "태그 엎" 신호 회선을 상승시킨다. 태그 엎 회선(262a)에 의하여 어댑터(154)는 최초의 2방트들을 레시스터(113)의 좌측반내에 저장하게 된다. BCU(156)는 다음의 클럭사이클이 시작되면 다음 서브사이클용의 데이타(2개의 제2바이트)를 어댑터(154)의 레지스터(113)의 또다른 반에 저장할 수 있는 주소/데이타 버스(251)상에 배치한다. 이러한 데이타는 주기억저장주소의 나머지이거나 오프셋(쇼트가 우편함 조사 선택사이클에 속하는 경우)이다. BCU(156)는 3 BCU클럭사이클동안 두번째 2바이트들을 보류하고 "태그 엎"신호를 탈락시킨다.
채취동작은 일반적으로 BCU(156)가 주기억장치 데이타공간(162), 주기억장치(162)내의 마이크로 코드구역, 우편함이거나 메시지 대기행렬로부터 데이타를 요구하는 동작이다. 어느 경우에도 선택사이클은 수행하여야 할 연산에 대하여 어댑터(154)의 논리를 지시하기 위하여 채취동작보다 선행하여야 한다. 선택사이클은 명령/상태 버스(249)상의 명령어 "채취"명령인 것을 제외하고 버스(252)를 이용하는 저장동작과 동일한 방법으로 명령/키/주소를 버스(249)상에 비치함으로써 수행된다.
다음 클럭사이클(선택사이클이 완료된 후)이 시작되면 BCU(156)는 "태그 엎"신호를 호출하고 이를 3 BCU 클럭사이클동안 우지한다(제15도). 태그 엎은 버퍼로부터 데이타를 요구한다. 버퍼가 데이타를 이송할 수 있는 때에는 1 사이클 후에 이용할 수 있다. 연산이 반동기적이기 때문에 BCU(156)는 처음의 2바이트 데이타는 2 사이클동안 버스상에 유효하게 유지되고 그 다음에는 1사이클의 스위치 오버타임이 있고 그 다음에 두번째 2바이트 데이타가 BCU(156)에 게이트될 수 있다.
그러나 "태그 엎"이 상승하는 순간에 어댑터(154)가 가용데이타를 전혀 가지지 아니하는 상황이 있다. 이러한 상황은 전형적으로 "초기"데이타 채취시에 즉, 데이타를 새로운 주소에서 채취할 때 일어나며 이때에는 채취요구가 캐쉬제어기(153)와 기억장치제어기(155)를 경유하여 처리한 다음에 어댑터(154)로 되돌려 보낼 때까지 얼마간의 시간이 걸린다. 주기억장치(162)로의 재진입도 이와 마찬가지로 일시적 지연을 야기시킨다.
어댑터(154)는 데이타를 이송할 수 없는 때마다(제15c도), "태그 엎"탐지되는 즉시 "태그 다운"회선을 상승시킨다. BCU(156)는 "태그 엎"을 상승시킨 후 늦어도 5사이클이내에 "태그 다운"을 표본추출하여야 한다.
어댑터(154)는 제1데이타 워드(4바이트)를 이용할 수 있을때까지 "태그 다운"을 유지한다. 이때 어댑터(154)는 처음의 2바이트들을 버스(250)상에 배치하고 "태그 다운"을 탈락시킨다. "태그 다운"신호의 하강에는 BCU의 논리(253)을 트리거한다.
BCU(156)는 최초의 바이트들이 "태그 다운"이 드로핑된 다음에 2사이클동안 유효하고 그 후에는 제2의 2바이트들을 이용할 수 있다고 가정한다. 선택사이클중 설치되는 계수에 따라 60바이트까지는 한번에 2바이트씩 추적할 수 있다.
선택사이클 내에서 명령 받은 모든 우편함 데이타가 수신된 때에는 BCU(156)는 회선(256)상의 "BCU tp PU Acknowlege"신호를 어댑터(154)에 상승시켜서 연산을 시작한 회선(256a)상의 PU to BCU요구를 리세트시킨다.
PE(85)와 BCU(156) 사이의 대부분의 정보전송은 어댑터(154)내의 베이스 레지스터(110)에 저장된 베이스 주소와 대기행렬 길이를 이용하여 미리 정의된 기억장치위치(188, 189)를 통하여 행하여진다. 인바운드 메시지 대기행렬(189)은 CPU에 의하여 연대순으로 송신되는 모든 메시지를 저장한다.
3. 버스제어장치(156)-개요(제16도, 제17도)
버스제어장치(BCU)(156)는 S/370 I/O 연산을 수행하는데 이용되는 S/370 처리기(85)와 그 연간 S/88처리기(62)사이의 1차 결합하드웨어이다.
BCU(156)에는 인터럽트를 처리기(62)에 제출하고 처리기(62)를 그 연관하드웨어로부터 비동기적으로 분리시키고 처리기(62)를 BCU(156)에 결합시키기 위하여 S/88 처리기(62)상에서 실시되는 응용프로그램(EXEC 370)과 마이크로 코드(ETIO)와 상호작용하는 수단이 포함되어 있고 이러한 것들은 모두 S/88 운영시스템에 투명하다. 투명 인터럽트와 분리기능은 명령과 데이타를 바람직한 S/370 I/O 연산을 수행하도록 S/88 처리기(62)에 의하여 이용할 수 있는 형태로 전환시키기 위하여 S/370 I/O 명령 및 데이타를 S/370 처리기(85)로부터 S/88 처리기(62)에 효율적으로 전송하는 S/370 처리기와 S/88 처리기의 직접 결합을 할 수 있게 하는데 이용된다.
EXEC 370과 ETIO는 마이크로 코드 또는 응용프로그램으로 할 수 있고 기억장치(174) 또는 캐쉬(173)에 저장시킬 수 있음을 알 수 있다.
BCU(156)(제16도)에는 버스 제어장치 인터페이스논리 및 레지스터(205), 직접메모리접근제어기(DMAC)(209) 및 지역기억장치(210)가 포함되어 있다. 지역 주소 및 데이타 버스(247, 223)는 기억장치(210)를 구동기/수신기회로(217, 218)를 경유하여 PE 62 주소, 데이타 버스(161A, 161D)에 결합시키고 인터페이스 논리(205)에 결합시킨다. DMAC(209)는 래취(233)를 경유하여 주소 버스(247)에 결합되고 구동기/수신기(234)를 경유하여 데이타 버스(223)에 결합되어 있다.
적당한 실시예의 DMAC(209)는 아래에서 상세히 설명하는 68450 DMAC이다.
DMAC(209)에는 4개의 채널(0-3)이 있고 이 채널들을 해당 Request 및 Acknowlege경로에 의하여 인터페이스논리(205)(제17도)에 결합되어 있고 각각 특수기능에 전용된다. 채널(0)은 S/370 I/ O명령들을 S/370 기억장치(162)내의 우편함 구역(188)(제28도)으로부터 지역기억장치(210)(MALBOS 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 메시지 WRITE)내의 메시지 대기행렬 구역(189)(제28도)로 전송한다.
버스 어댑터(154)에는 2개의 채널(0, 1)이 있다. 어댑터 채널(0)은 DMAC 채널(0, 1)의 우편함 판독 및 S/370 I/O 기록기능(즉, S/370에서 BCU 156으로의 데이타 흐름)을 다룬다. 어댑터 채널(1)은 DMAC 채널(2, 3)의 S/370 I/O 판독 및 Q 메시지 기록기능(즉, BCU 156에서 S/370으로의 데이타 흐름)을 다룬다.
4. 직접메모리접근제어기(209)
DMAC(209)는 M 68000패미리 레퍼런스 메뉴얼(FR 68K/D, Copyring Motorola, inc. 1988)에 기술된 유형(MC 68450)으로 하는 것이 바람직하다. 이 매뉴얼은 참고로 이 명세서에 합체시켰다. DMAC(209)는 데이타 블록들을 처리기로부터의 간섭을 최소한으로 하면서 신속하고 효울적인 방법으로 이동시킴으로써 모토롤라 M 68000 패밀리 마이크로 처리기(출원의 M 68020 처리기 소자(62)와 같은)의 성능과 구성능력을 보수할 수 있게 설계되어 있다. DMAC(209)는 메모리에서 메모리로, 메모리에서 장치로, 장치에서 메모리로의 데이타 전송을 실시한다.
DMAC에는 프로그램가능 우선순위를 가진 4개의 독립 DMA 채널이 포함되어 있고 24-비트 주소와 16-비트 데이타 버스를 가진 비동기적 M 68000 버스 구조를 사용한다. 그것은 명시적 또는 묵시적으로 주소를 지정받을 수 있다.
어느 시스템내의 209와 같은 DMAC의 주된 목적은 소프트웨어 제어하에서 마이크로 처리기가 다룰 수 있는 것보다 더 빠른 고속도로 데이타를 전송하는 것이다. 직접메모리접근(DMAC)이라는 말은 마이크로처리기와 동일한 방법으로 시스템내의 메모리에 접근할 수 있는 주변장치의 능력을 말하는데 사용된다. 본 출원에서 메모리는 지역기억장치(210)이다. DMAC연산은 시스템처리기가 수행할 필요가 있는 다른 연산과 동시에 행할 수 있으며, 따라서 시스템 전체의 성능을 크게 증대시킨다.
DMAC(209)는 데이타 블록들을 지역 버스(223)의 한계에 가까운 속도로 이동시킨다. 데이타 블록은 기억장치내의 특정 주소에서 시작되는 바이트, 단어 또는 긴단어 오퍼한드의 순서로 구성되어 있고 블록의 길이는 전송계수에 의하여 결정된다. 단일 채널 연산에는 몇개의 데이타 블록을 기억장치(210)에 또는 기억장치로부터 전송하는 것을 포함할 수 있다.
DMAC(209)가 수반되는 연산은 동일한 기본단계, 즉(62)에 의한 채널 초기화, 데이타 전송 블록종료를 따르게 된다. 초기화 단계에서는 처리기(62)는 제어정보, 주소 포인터 및 전송계수와 함계 DMAC의 레지스터들을 적재하고 채널을 출발한다. DMAC의 전송단계중 오퍼란드 전송에 대한 요구를 수리하고 전송을 위한 주소법과 버스 제어를 제공한다. 종료단계는 연산이 완료된 후 DMAC가 상태 레지스터(CSR)내의 연산상태를 표시할 때 오커스 된 데이타 전송작업의 모든 단계중에는 DMAC(209)는 다음의 3가지 운영 방식중 한 방식으로 있게 된다.
1. IDLE-이것은 DMAC(209)가 외부장치에 의하여 리세트되고 시스템처리기(62) 또는 주변장치로부터의 오퍼란드 전송요구에 의한 초기화를 대기하고 있는 때에 가정하는 상태이다.
2. MPU-이것은 DMAC(209)가 시스템(통상적으로 주시스템처리기(62)내의 또다른 버스마스터에 의하여 선택된 칩인데 진입하는 상태이다. 이 방식에서는 DMAC 내부 레지스터들이 기록 또는 판독되어 채널동작을 제어하거나 블록전송 상태를 검사한다.
3. DMA-이것은 DMAC(209)가 오퍼한드 전송을 수행하기 위하여 버스 마스터로 행동할때 진입하는 상태이다.
DMAC는 묵시주소 또는 명시 주소 데이타 전송을 수행할 수 있다. 명시 전송에 있어서 데이타는 근원에서 내부 DMAC홀딩 레지스터로 전송되고 그 다음 버스사이클에서는 데이타를 홀딩 레지스터로부터 수신지로 이동된다. 묵시전송은 데이타가 내부 DMAC 버퍼링없이 근원에서 수신지로 직접 전송되기 때문에 하나의 버스사이클만이 필요하다.
채널운영에는 3가지 유형 즉, (1) 단일블록전송, (2) 계속 연산 및 (3) 연쇄 연산이 있다. 단일 데이타 블록들을 전송하는 때에는 메모리 주소와 장치 주소 레지스터(MAR, DAR)가 사용자에 의하여 초기화되어 전송의 근원과 수신지를 명시하게 된다. 블록내에 전송되는 오퍼란드의 수를 셈하기 위하여 메모리 전송계수 레지스터도 초기화된다.
2개의 체이닝 방식은 배열 체이닝과 연결 체이닝이다. 배열 체이닝 방식은 메모리 주소와 전송계수로 구성되어 있는 기억장치(210)내의 접속배열로부터 연산을 한다. 베이스 주소 레지스터(MAR)와 베이스 전송계수 레지스터(BTC)는 배열의 시작 주소와 배열 엔트리의 수를 가르키기 위하여 초기화된다. 각 블록전송이 완료됨에 따라 다음 엔트리가 배열로부터 채취되고 베이스 전송계수가 결정되고 다음 배열 엔트리를 가르키기 위하여 베이스 주소가 증가된다. 베이스 전송계수가 0에 이르면 방금 채취된 엔트리가 배열내에서 정의된 최종블록 전송이다.
연결배열 체이닝방식은 메모리 배열내의 각 엔트리에도 배열내의 다음 엔트리를 가르키는 연결 주소가 들어 있는 것을 제외하고 배열 체이닝방식과 유사하다. 이것은 비접속 메모리배열을 허용한다. 최종엔트리에는 0로 세트된 연결 주소가 들있다. 이 방식에서는 베이스 전송계수 레지스터(BTC)가 필요없다. 베이스 주소 레지스터(BAR)는 배열내의 제1엔트리의 주소로 초기화된다. 연결 주소는 각 블록전송초에 베이스 주소 레지스터를 갱신하기 위하여 이용된다. 이러한 체이닝 방식은 배열은 순차순서로 재편성할 필요없이 배열 엔트리를 쉽게 이동시키거나 삽입할 수 있다. 배열내의 엔트리의 수도 DMAC(209)에 명시할 필요가 없다. 이러한 주소지정 방식은 본 출원에서는 아래에 상술하는 방법으로 링크 리스트로부터 자유작업 대기 행렬 블록(WQB)에 접근하기 위하여 DMAC(209)에 의하여 이용된다.
DMAC(209)는 DMA 연산의 완료와 같은 사건이 다수 발생하거나 PCL 회선(57a-d)을 사용하는 장치의 요구가 있는 때에는 PE(62)를 중단시킨다. DMAC(209)는 PE(62) 벡터 인터럽트 구조내에서 사용할 수 있는 8개의 온-칩 벡터 레지스터내의 인터럽트 벡터들을 보유한다. 2개의 벡터 레지스터, 즉 통상 인터럽트 벡터(NIV)와 오류 인터럽트 벡터(EIV)는 각 채널용으로 이용할 수 있다.
각 채널에는 0, 1, 2 도는 3의 우선순위 레벨이 주어진다. 즉 채널(0, 1, 2, 3)에는 0, 2, 2, 1의 우선순위 레벨이 지정된다.(우선순위 레벨 0이 최고 순위이다.)
요구는 외부적으로 장치에 의하여 발생되거나 내부적으로 DMAC(209)의 자동요구기구에 의하여 생긴다. 자동요구는 채널이 언제나 계류요구를 가지고 있는 경우에는 최대속도로 발생되거나 DMA 활동을 위하여 이용할 수 있는 버스대역폭의 일부를 선택함으로써 정하여지는 제한된 속도로 발생될 수 있다. 외부요구는 각 채널과 연관된 요구신호에 의하여 발생되는 버스트 요구이거나 사이클 도용요구로 할 수 있다.
DMAC(209)에는 4개의 채널용 레지스터(제18도)와 하나의 범용 제어 레지스터(GCR)가 들어있고 이러한 레지스터들은 모두 소프트웨어 제어하에 있다.
DMAC(209) 레지스터들에는 근원 및 수신지 주소 및 기능코드, 전송계수, 오퍼란드 크기, 장치포트 크기, 채널 우선순위, 여속주소 및 전송계수 및 주변제어 회선의 기능등과 같은 데이타 전송에 관한 정보가 들어 있다. 하나의 레지스터(CSR)는 채널활동, 주변장치 및 입력 및 DMA 전송중 발생하였을 여러가지 사건들에 관한 상태 및 오류정보도 제공한다. 범용제어 레지스터(GCR)는 제한속도 자동요구(DMA)연산에서 사용될 버스이용 계수를 선택한다.
입력 및 출력 신호들은 기능적으로 다음에 설명하는 그룹으로 조직된다. (제19a도 참조)
주소/데이타 버스(A8-A23, D0-D15)(248) 16-비트 버스는 DMA 연산 방식중 주소 출력을 제공하기 위하여 멀티플렉스된 시간이며 데이타를 외부장치로부터 입력시키기 위하여 (PE 62 기록 또는 DMAC 판독중) 또는 데이타를 외부장치에 출력하기 위하여 (PE 62 판독 또는 DMAC 기록중) 양방향 데이타 버스로서 이용된다. 이것은 3-상태 버스이고 멀티플렉스 제어회선(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)를 선택하기 위하여 이용된다. 이것이 확인된 때에는 A1-A7상의 주소와 데이타 스트로브(또는 8-비트 버스를 사용하는 때에는 A0)는 전송내에 포함된 내부 DMAC 레지스터를 선택한다. SELECT는 주소디코드 신호를 주소 및 데이타 스트로브로 자격을 부여함으로써 발생되어야 한다.
회선(270b)상의 ADDRESS STROBE(AS)는 유효주소가 주소버스(161)상의 존재한다는 것을 표시하기 위하여 DMA방식으로 하나의 출력으로서 이용되는 양방향신호이다. MPU 또는 IDLE 방식에서는 그것은 DMAC는 어느 때 버스의 제어를 취할 것인가(DMAC가 요구를 하고 버스의 사용이 허용된 경우)를 결정하기 위하여 입력으로서 이용된다.
READ/WRITE는 버스사이클중 데이타 전송의 방향을 표시하기 위하여 이용되는 양방향신호(도시없음)이다. MPU방식에서는 고레벨이 DMAC(209)로부터 데이타 버스(223)로의 전송을, 저레벨이 데이타 버스로부터 DMAC(209)로의 전송을 표시한다. DMA 방식에서는 고레벨이 주소지정 메모리(210)로부터 데이타버스(223)로의 전송을 표시하고 저레벨이 데이타 버스(223)로부터 주소지정 메모리(210)로의 전송을 표시한다.
UPPER AND LOWR DATA STROBE 양방향 회선(도시없음)은 데이타가 언제 버스상에서 유효하며 버스의 어느 부분이 전송(D8-15 도는 D0-7)내에 포함되어야 하는가를 표시한다.
DATA TRANSFER 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)상의 주소 및 데이타 정보를 분리시켜서 DMAC 버스 사이클중 데이타 버스(223)의 상반부와 하반부사이로 데이타를 전송하기 위하여 이용된다. OWN 회선은 DMAC(209)가 버스를 제어하고 있음을 표시하는 출력이다. 그것은 외부주소 구동기와 제어신호 버퍼를 전환시키는 가능신호로서 이용된다.
BUS REQUEST(BR) 회선(269)은 지역버스(223, 247)의 제어를 요구하기 위하여 DMAC가 가정한 출력이다.
BUS GRANT(BG) 회선(268)은 현행 버스사이클이 완료되는 즉시 마스터쉽을 인수할 것임을 DMAC(209)에게 통보하기 위하여 외부버스 아르비터(16)가 가정한 입력이다.
회선(258a, 258b)상의 2개의 인터럽트 제어신호(IRQ, IACK)는 인터럽트 논리(21)를 경유하여 PE(62)와 함께 인터럽트 요구/긍정 응답 핸드쉐이크 순서를 형성한다. 회선(258a)상의 INTERRUPT REQUEST(IRQ)는 PE(62)로부터 서비스를 요구하기 위하여 DMAC(209)가 가정한 출력이다. 회선(258b)상의 INTERRUPT ACKNOWLEDGE(IACK)는 DMAC(209)로부터 인터럽트를 수신하였음을 긍정하기 위하여 논리(216)를 경유 PE(62)가 가정한다. DMAC(209)는 IACK의 가정에 응답하여 PE(62)가 적당한 DMAC인터럽트 조정기 루틴의 주소를 채취하기 위하여 사용할 버스(223)의 D0-D7상의 벡터를 배치한다.
장치제어 회선들은 DMAC(209)와 4개의 DMAC 채널에 결합된 장치사이의 인터페이스를 수행한다. 3개회선의 4개 조합들이 단일 DMAC 채널과 그 연관주변장치에 전용되고 나머지 회선들은 모든 채널들이 공유하는 전역신호들이다.
회선(263a-d)상의 REQUEST(REQ 0 THROUGH REQ 3) 입력들은 주기어장치(162)와 기억장치(210)사이의 오퍼란드 전송을 요구하기 위하여 논리(253)에 의하여 가정된다.
회선(264a-d)상의 ACKNOWLEDGE(AGE 0 THROUGH ACK 3) 출력들은 오퍼란드가 전의 전송요구에 응답하여 전송중임을 통지하기 위하여 DMAC(209)가 가정한다.
PERIPHERAL CONTROL LINES (PCL 0 THROUGH PCL 3)(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도 내지 제19C도에서는 도해 및 설명을 쉽게 하기 위하여 여러가지 기능장치들로 분리되어 있다. 따라서 논리(205)에는 어댑터(154)와 BCU(156)사이의 데이타 전송의 속도 및 성능을 증대시키기 위하여 지역 데이타 버스(223)와 어댑터 채널(0, 1)사이에 삽입된 다수의 인터페이스 레지스터들이 포함되어 있다. 인터페이스(205)의 하드웨어 논리(253)는 DMAC(209), 주소 해독 및 조정 논리(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)로 전송하기 위한 바이트계수를 보류한다. 2개의 계수기는 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 논리는 각 DMC 채널마다 하나씩 회선(263a-d)상의 서비스 요구를 한다. DMAC는 회선(264a-d)상의 긍정응답 신호로 응답한다. 선택(270), 데이타 전송긍저응답(265), 주변장치 제어회선(257a-d), 데이타 전송완료(267) 등과 같은 기타 회선들은 DMAC(209)와 관련하여 위에서 설명하였다.
BCU 분리 및 인터럽트 논리(215, 216)(제20도, 제21도)
S/370 시스템에 고장허용한계 연산 및 단일시스템 영상환경과 같은 S/88 시스템의 특유한 특성들을 제공할 수 있는 방법으로 S/370과 S/88 처리기들을 긴밀하게 결합시키기 위하여는 2가지 특징이 중요하다는 것을 전술하였다. 이러한 특징들을 여기에서는 S/88처리기를 그 연관하드웨어로부터의 "분리"와 "독특한 인터럽트"기구라고 말한다. 2가지 특징은 S/88 운영시스템에 대하여 투명한 방식으로 조작된다. 분리와 인터럽트 논리(215, 216)는 BCU(156)내에서 제공된다.
"분리"논리는 각 명령어 수행 사이클중 /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)와의 통신을 개시한다.
BCU(156)내이 DMAC(209)와 기타 논리는 이러한 특별 응용코드를 필요에 따라 행동하도록 호출하는 특정레벨(6)에서 S/88에 인터럽트를 제시한다. 각 인터럽트의 제시는 S/88 운영시스템에 대하여 투명하다.
몇개의 인터럽트 조정기 루틴이 이와 같은 인터럽트에 응답하여 수행하는 기능의 유형은 다음에 S/370 I/O 연산의 펌웨어 검사의 일예를 들어 간단히 설명하기로 한다.
파트너장치를 기준으로 다중파트너장치를 가진 모듈내에서 DMAC(209)를 경유하여 S/88 에 대한 S/370인터럽트를 다루기 위한 기구 및 S/88 운영시스템 수정에 관하여 설명하면 다음과 같다.
하나의 파트너장치는 수정된 이중 S/88 처리기 기판과 이중 지역기억장치, DMAC, 고객논리 등이 들어 있는 이중 S/370 처리기 기판이 연결된 샌드위치이다. 이러한 이중 샌드위치 기판의 같은 요소들은 고장탐지하는 이유를 병행하여 완전동기(로크-스탭)로 작동한다.
이러한 전체 샌드위치는 통상적으로 동일한 파트너 샌드위치를 가지며 파트너들은 로크-스탭으로 운영되며 따라서 하나의 단일고정허용한계 개체로 보인다. 이 이중재복사 하드웨어를 제21도에 도시한 바와 같은 단일운영장치라고 보기 위하여는 다음의 설명만으로 충분하다.
적당한 실시예에 있어서 이러한 운영장치(295 내지 295-8)중 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)내의 다른 에 관한 "지식"을 가지지 아니한다.
다중처리환경과 S/88 구조로 인하여 통상 S/88 시스템내의 인터럽트 조정은 CPU 장치(62 내지 62-8)사이에 공유된다. 간이도면에서는 각 인터럽트(I/O, 타이머, 프로그램 트랩 등으로부터의)는 모든 S/88 처리장치에의 공통버스(30)상에 병렬로 제시되어 있다. 하나의 장치가 그것을 서비스할 책임을 인수하고 이로 인하여 다른 장치들은 그것을 무시한다. 서비스하는 CPU 장치가 어느 것이냐에 관계없이 조정기 코드용 운영시스템내에는 단일벡터 테이블, 단일엔트리 포인트(벡터당)가 있고 인터럽트의 베치는 (단일)운영시스템에 의하여 결정 및 조정된다.
다중 S/370 구성에 있어서 정규 S/88 인터럽트들은 모두 전술한 바와 같이 작동하고 S/88 인터럽트 조정기 코드는 변경되지 아니한다. 소 하드웨어는 DMAC(209 내지 209-8)을 허용할 수 있게 변경된다. 인터럽트 제시는 정상 S/88 인터럽트 기구 및 소프트웨어에 대하여 완전히 투명하다.
DMAC는 다중 S/370장치(85 내지 85-8)가 서로 간섭할 수 없도록 DMAC, BCU 및 S/370이 부착되어 있는 S/88 처리기(62)에 의하여서만 다루어져야 한다는 것이 요건이다. 이를 위하여 DMAC IRQ 회선(258a)은 DMAC(209)가 부착되어 있고 모든 정상 S/88 인터럽트 요구회선이 그러하듯 공통 S/88 버스(30)상에 나타나지 아니하는 S/88 처리기(62)에 직접 배선되어 있다. 주어진 /88 처리기(62)는 S/370을 지원하기 위하여 S/88로부터 빼앗은 타임슬라이스동안 직접 부착되어 있는 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 하드웨어, 대기행렬, 링크 리스트 및 모든 제어 파라미터에 접근한다. 하드웨어 설계는 공통 가상주소 분리 '윈도우'가 다중 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 시간을 제외하고 이러한 인터럽트의 서비싱은 S/88 운영시스템에 대하여 투명하다.
따라서 완전한 인터럽트 설계는 다중처리시스템 운영에 본질적인 영향을 주지 아니하고 다중처리 운영시스템에 중대한 변경을 가함이 없이 서로 다른 인터럽트 서비싱 철학을 사용하는 다중처리시스템 환경으로부터 개별처리기 설비를 빼냄으로써 다중 S/370 장치의 고립 및 보호와 함께 S/370 DMAC 인터럽트의 간헐적 "요구 전용"서비스상에 완수한다.
DMAC인터럽트 기구의 상세한 조작을 위하여는 제19a도 및 제20도에 유의하여야 한다. 선택벡터를 가진 DMAC(209)와 같은 주변장치가 S/88 처리기(62)에 인터럽트 요구(IRQ)를 제시하는 때에는 단일 IRQ회선이 장치에 의하여 활동하게 된다. 이 IRQ 회선은 암호화된 인터럽트 요구가 특정한 우선순위 레벨로 입력 핀(IPL0-IPL2)을 경유하여 S/88 처리기(62)에 제시되도록 S/88 처리기 구조에 의하여 명시되는 방법으로 암호와 회로(293)에 배선되어진다.
처리기(62)는 내부상태 레지스터내에 보관된 우선순위 마스킹 비트를 이용하여 언제 인터럽트를 서비스할 수 있는가를 효과적으로 결정한다. 준비완료되면 처리기(62)는 특별한 "인터럽트 긍정응답"(IACK) 주기를 시작한다.
내부적으로 처리기(62)에 의하여 제어되는 IACK주기내에서는 서비스를 받고 있는 사이클과 우선순위 레벨의 유형을 식별하기 위하여 독특한 주소구성이 주소버스(161A)상에 제시된다. 이것은 인터럽트 장치로부터의 벡터수에 대한 요구이기도 하다. 모든 요구장치들은 서비스를 받는 우선순위 레벨을 자체 레벨과 비교하고 정합우선순위를 가진 장치는 1-바이트 벡터수를 데이타 버스(161D)에 게이트시켜서 처리기(62)가 판독할 수 있게 한다.
일단 벡터수를 얻으면 처리기(62)는 감독자 스택에 관한 기본 내부상태를 제외한 다음에 사용할 예외벡터의 주소를 작성한다. 이것은 내부적으로 장치의 벡터수를 4로 곱하고 이 결과를 내부벡터 베이스 레지스터의 내용에 더한 다음에 예외벡터의 메모리 주소를 제공함으로써 행하여진다. 이 벡터는 인터럽트 조정기 코드용의 새로운 프로그램 계수기 값이다.
제1명령어는 이러한 새로운 프로그램 계수기 값을 이용하여 채취되고 정상 명령어 해독 및 수행은 감독자 상태에서 현행 우선순위 레벨에 세트된 처리기(62)상태 레지스터로 재개된다.
IACK 주기의 시작부터 최초의 인터럽트 조정기 명령어의 채취에 이르는 상부단계들은 하드웨어와 처리기(62) 내부 연산의 결합에 의하여 행하여지고, 프로그램 명령어 수행을 필요로 하지 아니한다. 순 결과는 고순위 인터럽트 조정기를 수행하기 위하여 이전에 실시한(저순위) 프로그램을 투명하게 미리 비우는 것이다.
적당한 실시예에 있어서 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)는 회선(270)상의 주소 스트로브 신호(AS)가 PE(62)와 연관된 S/88 하드웨어에 대한 정규 주소 스트로브인 회선(270a)에 대한 논리(215)를 통과할 수 있다.
그러나, S/88 처리기(62)에 의하여 수행되는 명령어가 "007"과 동일한 4개의 고위 6 숫자(S/370 I/ O연산에 관련된 기능을 위하여 PE 62를 그 S/88 하드웨어로부터 분리시키고 PE 62를 BCU 156에 결합시키는 것을 의미한다.)를 가지고 주소 버스(161A)상의 가상 주소를 응용하는 경우에는 해독논리(280)가 회선(270a)상의 AS신호를 차단하기 위하여 신호를 회선(282)상에 놓고 AS를 회선(270b)를 경유하여 BCU(156)에 송신한다. 해독논리(280)는 최선(FC 0-2)상에서 적당한 기능 코드를 탐지할 수 있도록 설계할 수 있으나 이것은 단순히 설계 선택에 지나지 아니한다. 제22도, 제23도 및 제24도는 AS 신호가 상승되기 전에 회선(270a)상의 AS를 차단할 수 있는 버스(161A)상의 주소 신호와 회선(270)상의 주소 스트로브 사이의 지연을 도시한 것이다. 이것은 주소 버스에 응용되는 S/88 가상 주소들의 특별 그룹 이외의 수단은 PE(62)를 그 연관 S/88 하드웨어로부터 분리시키고 PE(62)를 BCU(156)에 결합시키는 것을 표시하는 조건을 해독하기 위하여 이용할 수 있다.
회선(282)상의 블로킹 신호는 조정논리(285)에 대한 회선상에 PE(62) 지역버스요구 신호가 생기도록 OR회로(284)에 응용된다. 논리(285)는 DMAC(209)가 아직 요구를 회선(269)상에 배치하지 아니한 경우에만 PE(62)에 대한 요구를 허용한다. PE(62) 버스허용 회선(191)은 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 요소 사이로 전송될 수 있다. 응용프로그램(EXEC 370)과 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)로부터 분리시키고 주소(007EXXXX)가 논리(280)에 의하여 해독되는 때에는 이를 BCU(156)에 결합시키는 것을 알 수 있다. 이러한 분리는 S/88 운영시스템에 대하여 투명하다.
이와 마찬가지로 해독논리(281)(및 연관 하드웨어)는 회선(270a)으로부터의 주소 스트로브(AS)를 차단하고 PE(62)에 대한 DMAC(209) 인터럽트 순서중 조정논리(285)에 대한 지역버스 요구를 개시한다.
더 상세히 말하면, DMAC(209)가 인터럽트 신호를 회선(258a)상에 배치하면 이 신호는 OR 회로(292a, 292) S/88 인터럽트 우선순위 논리(293)의 레벨(6) 입력 및 회선(IPL 0-2)을 경유하여 PE(62)에 인가된다. PE(62)는 인터럽트 긍정응답 주기를 가지고 응답한다. 예정된 논리 비트(인터럽트 레벨의 값을 포함한다.)가 출력(FC 0-2)과 주소버스(161A)(비트 A 1-3, A 16-19)상에 배치되고 이러한 비트들은 논리(281)에 의하여 해독되어 회선(283)상에 출력이 생기게 한다. 이 출력과 회선(258c)상의 인터럽트 신호는 AND 게이트(291)로 하여금 신호를 회선(287)에 인가시키게 함으로써 논리(215)가 AS를 회선(270b)을 경유하여 BCU 논리(253)에 인가하게 한다.
회선(287)상의 신호는 회선(270a)으로부터의 AS를 차단하고 PE(62) 버스 요구를 조정논리(285)에의 OR회로(284)를 경유하여 회선(190)상에 배치한다. 주소 스트로브(AS) 신호는 S/88 하드웨어로 가는 것이 차단되기 때문에 이 인터럽트는 S/88 운영시스템에 대하여 투명하다.
특별한 IACK 비트들이 전술한 바와 같이 버스(161A)와 FC 0-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)는 회선(270)상의 AS 신호에 응답하여 회선(286a, 286b) 상의 ENABLE 신호를 떠올려서 처리기 버스(161A, D)를 회로(217, 218)를 경유하여 지역버스(248, 223)에 결합시킴으로써 DMAC(209)로부터 PE(62)로의 적당한 벡터를 판독하게 한다. DMAC(209)는 그 데이타 버스(248)(제19a도)의 가장 중요하지 아니한 바이트로부터 구동기 수신기(234)와 지역데이타 버스(223)의 비트(23-16)를 경유하여 S/88 처리기 데이타 버스(161D)로의 인터럽트 벡터들을 제시한다.
DMAC(209)에 의하여 주어진 벡터 수는 S/88 인터페이스 마이크로 코드(ETIO)내의 8개의 인터럽트 조정기중 하나로 점프하기 위하여 /88 처리기(62)가 이용한다.
회선(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. 링크 리스트를 포함한 지역데이타 버퍼 및 제어구조로부터 또는 이에 대한 직접적인 /88 (62) 판독/기록.
2. S/88 PE(62) 판독/기록 명령, BCU(156)으로의/부터의 판독 상태. 명령들은 특정 주소로부터 해독된다.
3. S/88 PE(62) 판독/기록 DMAC 레지스터(초기화 및 정상 연산을 위한). 레지스터 수는 특정 주소로부터 해독된다.
지역저장주소 공간에 포함되는 것은 다음과 같다.
1. 데이타 버퍼 및 제어구조(64K바이트(512 이하)에는 물리적 기억장치(210)내의 링크 리스트가 포함된다.)
2. BCU 명령구역(특정 주소로부터 해독된 256바이트 명령)
3. DMAC 접근구역(특히 주소로부터 해독된 256바이트 레지스터 수)
지역주소 해독 및 버스조정장치(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) 인터럽트에 긍정 응답하고 전술한 바와 같이 MC 68020 구조에 따라 각 인터럽트를 완성한다.
이러한 특별 연산은 S/88 PE(62)가 제시되는 주소 및 기능코드 비트에 의하여 (구성된 특별)해독이 지역기억장치(210)의 범위내에 들어 있는 주소가 아닌 디퍼런스와 함께 탐지된다.
그러므로 지역버스 조정장치(216)에는 이러한 경우를 위한 특별 해독기가 있어서 논리가 DMAC에 대하여 사전에 프로그램으로 편성된 그 인터럽트 벡터를 제시하도록 통지하는데 협조한다. 그 이외에는 DMAC 레지스터를 판독하는 S/88 처리기(62)와 유사하다.
주소버스(247)는 고위숫자가 16진수(H) 007E로 해독될 때 PE(62)에 의하여 선택된다.
나머지 4개의 6 숫자는 64KB의 지역저장 주소범위를 제공하며 이는 다음과 같이 지정된다.
I/O 장치(또는 명령) 주소해독
DMAC 레지스터 select 007E0000-007E00FF(구역 3 이상)
BCU Reset 007E0100(구역 2 이상)
BSM Wr Sel Up 00E701104(구역 2 이상)
BSM Rd Sel Up 007E0108(구역 2 이상)
Read BCU Status 007E010C(구역 2 이상)
지역저장선택 007E0200-007EFFFF(구역 1 이상)
다음의 데이타는 선택된 DMAC 메모리 전송 계수 레지스터 및 연속 BSM 판독/기록 선택 명령내에서 사용할 BCU(156)용으로 S/88 처리기에 의하여 지역데이타 버스(223)상에 배치된다.
31 23 15 7 0
0000 0qbb bbbb bbbb rspp kkkk CLXX XXXX
비트 31-16(0000 0qbb bbbb bbbb) 바이트 전송계수는 DMAC 메모리 전송계수기내에 세트된다.
26=고위바이트 계수 비트(=1 맥스 바이트 계수(4096 전용)에 있어서)
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)(64바이트 블록내의)와 함께 버스 어댑터(154)에 제시하기 전에, 2배 단어 경계 비트(26-16)를 감소시킨다.
15-14=저위바이트 계수 비트. 이 비트는 2배 단어로부터 1(버스 어댑터 요건을 위한)을 뺀 바이트 오프셋을 나타낸다. 이 비트들은 2배 단어만을 전송하기 때문에 DMAC(209) 또는 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)에 의하여 지역데이타 버스(223)상에 다음이 배치된다.
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바이트 max)
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 비트)
DMAC에 대한 인터럽트 긍정 응답 주기(8비트 인터럽트 벡터 판독)
판독 BCU 상태(32비트 BCU 판독)
프로그램된 BCU 리세트
DMAC(209) 지역버스 연산에는 다음이 포함된다.
링크-리스트 적재(16비트)
DMAC 연산(32비트)
지역저장 주소만을 제공한다.
지역버스 요구를 제공한다.
인터럽트
4채널용으로 PE(62)에 정상 인터럽트 벡터를 제공한다.(8비트)
불법 DMAC 연산 및 기타 DMAC 탐지 오류용으로 PE(62)에 오류 인터럽트 벡터를 제공한다. BCU(156) 지역버스 연산에는 다음이 포함된다.
DMA 연산중 판독/기록 데이타(32비트)를 제공한다.
DMAC(209)에 대한 데이타 요구를 개시한다.
DMAC 회선(PCLO, 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 또는 링크-리스트 적재 순서용으로 활성화된다. 이것이 발생하면 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)의 SIZ 0, 1)가 전송될 바이트의 수 및 버스 정렬을 결정한다. 비트(2-15)는 저장 공간(210)용 조소비트이다.
링크-리스트 방식에 있어서, DMAC 주소비트(A2)는 지역기억장치(210)에 대한 저위주소비트(2배 단어경계)로서 이용된다. DMAC(209)는 단어중심(16비트)장치(A1는 저위주소비트이다.)이고 지역기억장치(210)는 2배 단어(32비트)에 의하여 접근되기 때문에, 접속된 지역저장 위치들로부터 그 내부 링크-리스트내로 들어오는 데이타를 DMAC(209)가 판독할 수 있도록 하드웨어내에 어떤 수단을 제공하여야 한다. 이것은 기억장치(210)내의 동일한 2배 단어 위치를 저위 주소비트와 같은 A2를 이용하여 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배 단어에 접근한다. 단어 접근 어드레싱 기구로 이중어 접근을 하려면 주소 이동이 필요하다.
지역기억장치(210)로의 주소비트 이동은 DMAC 기능코드 비트를 경유하여 하드웨어내에서 수행된다. DMAC(209)로부터의 7의 기능코드는 주소비트(A 14-A 01)이 지역기억장치(210)에 제시되게 한다. 정확한 연산을 하기 위하여 DMAC에는 실 바이트계수의 1/4(실 단어 계수의 1/2)이 적재된다. DMAC 기록조작에 있어서는 모든 DMAC 연산이 통상적으로 2배 단어 접근이지만 DMAC(209)로부터의 UDS 및 LDS회선(도시없음)을 제어함으로써 단어 기록을 할 수 있게 되어 있다. UDS 및 LDS 신호들은 고위(D 31-D 16) 및 저위 부분(D 15-D 0) 지역기억장치(210)의 접근을 야기시킨다.
PE(62) to DMAC(209) 방식에서는 S/88 처리기(PE 62)는 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 처리기 SIZO, SIZI(도시없음) 및 A0회선들은 DMAC(209)에 대한 UDS(상위 데이타 스트로브) 및 LDS(하위 데이타 스트로브) 입력(도시없음) 을 발생시키는데 이용된다. 이것은 전술한 DMAC 출원에서 더 상세히 설명한 바와 같이, DMAC(209)내의 바이트 와이드 레지스터에 접근하기 위하여 필요하다. LDS회선은 NOT SIZO 또는 SIZI의 논리적 OR 또는 주소버스(161D)의 A0로부터 발생한다. UDS회선은 A0의 논리적 NOT로부터 발생된다. SIZO회선은 단어 와이드 레지스터에 접근하고 있을 때(NOT SIZO) 저위바이트에 접근하기 위하여 이용된다. SIZI 회선은 "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) 하드웨어를 상세히 설명하면 다음과 같다.
BCI(156)에는 어댑터 버스 BSM 판독 및 BSM 기록 조작용으로 이용되는 2개의 전단어(11비트) 계수기(220, 222)와 2개의 경계(4비트) 계수기(221, 224)가 들어있다. 경계 계수기(221, 224)는 64바이트 경계 교차가 단일 명령/데이타 전송 조작용 BCU(156)에 의하여 탐지되거나 바이트 계수가 64바이트보다 더 큰 때에, 버스 어댑터에 대한 시작주소를 나타내기 위하여 이용된다. 경계 계수기 내용은 최종블록 전송을 제외한 모든 블록 전송을 위하여 버스 어댑터(154)에 제시된다. 전단어 계수기 내용은 최종블록 전송(최종 명령/데이타 전송 작업)만을 위하여 제시된다.
S/88처리기(62)는 바이트 계수, 키 및 우선순위 비트를 레지스터(222 또는 220)에 전송하기 위하여 지역버스(223)(제45f도)상에 배치한다. r비트(계수 비트 1)는 단어(2바이트) 경계를 나타내고, 비트(계수비트 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비트 장치이다. 모든 채널내에서의 DMA 조작중 단어(2바이트)를 전송하도록 프로그램되어 있고 각 내부메모리 주소 레지스터(MAR)는 전송당 한 단어(2바이트)씩 증가된다. 그러나, 전송은 실제로 32비트이기 때문에, 2배 단어 (4바이트) 증가분이 필요하다. 이를 수행하기 위하여 S/88 처리기 (PE 62)는 언제나 MAR를 원하는 시작주소 (기억장치 210내의)하나반까지 초기화한다. 이때 BCU(156)는 주소를 지역버스(223)에 제공하기 전에 MAR로부터의 주소를 2배로 하고 기억장치(210)에서 보는 바와 같이 정확한 주소순서가 되게 함으로써 이를 보상한다.
BCU(156)는 다음을 수행한다.
1. 경계 계수기(221 또는 224)가 BSM 주소 레지스터 (228 또는 231)이 적재되는 것과.동시에 지역데이타 버스(223)의 역비트(2-5)로부터 적재된다.
2. 2배 단어 경계(비트 2)상의 전단어 계수기(220 또는 231)가 감소된다.
3. 2배 단어 경계(비트 2)상의 BSM 주소 레지스터 (228 또는 231)가 증가한다.
데이타의 블록 전송중 64바이트 이상이 남아있거나 경계 크로싱이 일어나는 때에는 BCU(156)는 계수기(221 또는 224)와 BSM 주소 레지스터 (231 또는 228) 비트(0,1)(역)로부터 명령/상태 버스(249 또는 252)에 대한 BSM 판독/기록 명령 바이트 계수를 적재한다. 그다음에 판독/기록 작업이 수행된다. BCU(156)는 2배 단어 경계상의 경계 계수 레지스터(221 또는 224)와 전단어 계수 레지스터(220 또는 222)를 감소시키고 그외에도 2배 단어 경계상의 BSM 주소 레지스터 (231 또는 228)를 증가시킨다. BCU(156)는 BSM 주소 레지스터(231 또는 228)의 비트(5-2)=0000, 64-바이트 경계일때 정지한다. 이때 경계 계수기 비트는 =1111이어야 한다.
데이타의 블록 전송중 64바이트 이하가 남아있고 경계 크로싱이 없는 때에는 BCU(156)는 계수기(220 또는 222)의 비트(5-2)와 r, s비트로부터 어댑터 버스 명령/상태 버스(249)에 대한 BSM 판독/기록 명령 바이트 계수를 적재한다. 이때 BCU(156)는 판독/기록 작업을 수행하고 그동안에 2배 단어 경계상의 레지스터(220 또는 222)를 감소시키고 2배 단어 경계상의 BSM 주소 레지스터(231 또는 228)를 증가시키며 레지스터(220 또는 222) 비트(12-2)가 모두 1일때 정지한다. 경계 크로싱은 계수 레지스터(220 또는 222)를 경계레지스터(221 또는 224)와 비교하여 탐지한다. 계수 레지스터(220, 222)값이 경계 레지스터(221, 224)값보다 더 클 때에는 경계 크로싱이 탐지된다.
(g) 핸드쉐이크 순서 BCU(156)/어댑터(154)
제25도의 타이 및 차트는 2개의 32비트 단어를 지역기억장치(210)내의 작업대기행렬 버퍼로 전송하는 것을 포함하여 BCU(156)와 판독 우편함 명령 및 저장판독 명령을 위한 어댑터(154)사이의 핸드쉐이킹 순서를 도시한 것이다.
우편함 판독 또는 저장판독 명령이 버스(290)(제19a도)상에 발하여지면 한 쌍의 신호(Gate Left 및 Gate Right)가 순서대로 레지스터(214, 219)(제19b도)내의 명령 및 주소의 좌, 우 부분을 어댑터(154)에 게이트시켜서 S/370 기억장치(162)로부터 적당한 데이타를 채취한다. 태그 엎 명령은 주기적 판독 데이타 신호에 의하여 추적되는 회선(262a)상에 떠오른다. 태그 다운은 채취된 데이타가 버퍼(259)에 저장될 때까지 회선(262b)상에 떠있다. 주기적 클럭 좌측 신호와 클럭 우측 신호의 다음 부분이 떠오르면 먼저 채취된 단어의 좌, 우 부분이 버스(250)를 거쳐 버퍼(226)내로 게이트된다.
버스요구는 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를 말함으로써 논리(153)가 Store Select를 회선(210a)상에 상승시키게 하고 버스(223)상의 데이타는 지역기억장치(210)내의 적당한 버퍼내에 배치된다.
연속주기 태그 엎, 클럭 레프트 및 라이트, DMAC 요구는 연속데이타 단어들을 버퍼(226)에 게이트시키고 이러한 단어들은 DMAC(209)가 조정논리(216)를 경유하여 지역버스(247, 223)에 접근하고 긍정응답(Acknowledge)과 DTC신호를 발신함에 따라 기억장치(210)내의 적당한 버퍼에 전송된다.
제26도도 대기행렬 선택 및 기억장치 기록 명령을 위한 핸드쉐이킹 순서를 도시한 것이다. 어느 명령어는 버스(290)상에 발신되면 게이트 레프트 및 라이트 신호가 명령과 주소(이전에 레지스터 225, 227에 저장된)를 어댑터(154)에 전송한다. 주기적 데이타 신호가 추적하는 태그 엎 명령이 회선(262)상에 상승된다. DMAC 요구는 회선(263c 또는 d)상에 상승된다. DMAC(209)는 회선(269) 및 논리(256)를 경유하여 지역버스(247, 223)를 조정한다. 요구가 회선(268)를 경유하여 허가되면 DMAC(209)는 회선(267)상의 DTC에 의하여 추적되는 회선(264c 또는 d)상에 긍정응답을 상승시켜서 최초의 데이타 단어를 지역장치(210)에서 레지스터(227)로 전송한다. 다음주기 게이트 레프트, 라이트 신호는 최초의 데이타 단어를 레지스터(227)로부터 어댑터(154)의 버퍼로 전송한다.
회선(263c 또는 d)상의 연속 DMAC 요구신호, DMAC 긍정응답, DTC 신호는 DMAC(209)가 지역버스(247, 223)의 제어를 조정함에 따라 연속 데이타 단어들을 레지스터(227)로 전송한다. 연속주기 게이트 레프트, 라이트 신호는 각 데이타 단어를 레지스터(237)로 부터 버퍼(260)로 전송한다.
S/370 처리기 소자 (PE 85)
적당한 실시예의 PE 85와 같은 각 처리소자에는 S/370명령어의 처리를 위한 기본설비가 들어있고 다음과 같은 설비가 들어 있다.
기본 32비트 데이타 플로우, 32-비트 산술/논리장치(ALU)(306), 32-비트 이동장치(307), 48레지스터(각 32비트)데이타 지역기억장치, 3포트 어드레스 가능성을 가진 303, 8바이트 S/370명령어 버퍼(309), 타이머 설비(CPU 타이머, 비교기등)(315)
제27도는 PE 85의 적당한 형태의 간소화된 데이타 흐름을 도시한 것이다. 이 기술분야에서는 많은 S/370처리기 구현이 알려져 있는 것으로 이해된다. 적당한 실시예의 각 처리기 소자(85)의 적당한 형태는 시스템(370) 구조의 명령어를 수행할 수 있는 처리기이다. 처리기는 기억장치(16)의 실 저장구역(162)으로부터 처리기 버스(170)를 거쳐 명령어와 데이타를 채취한다. 이러한 양방향 버스(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),(/370 명령어 버퍼(Ⅰ-버퍼)(309), 연산 레지스터(310), 트렙과 예외제어가 달린 사이클 계수기(311)로 구성되는 "연산 해독기 그룹",
-시간 간격 타이머(315), 일용클럭, 클럭 비교기 및 CPU 타이머로 구성된 비교적 독립적인 소형장치(315)인 "타이머 그룹".
이러한 논리적 장치들의 사용을 개략적으로 간단히 설명하면 다음과 같다.
Ⅰ-버퍼(309)는 해독기가 S/370명령어를 되도록 빨리 이용할 수 있게 한다. 연산 코드가 들어 있는 최초의 반단어는 연산 레지스터(310)를 경유하여 해독기(312)에 공급되어 S/370 Ⅰ-단계가 시작되게 한다. 제2 및 제3반단어(있는 경우에는) 주소 계산을 위하여 ALU에 공급된다. Ⅰ-버퍼(309)는 /370 명령어 순서가 개시되기 전에 레지스터(313)내의 강제 연산(FOP)을 경유하여 IPL, LOAD, PSW 또는 PSW교체와 같은 조작에 의하여 적재되는 2배 단어 레지스터이다. Ⅰ-버퍼(309)는 명령어가 연산 레지스터(310)(및 주소 계산을 위하여는ALU 306)에 공급됨에 따라 워드-바이-워드로 다시 채워지고 각 성공적인 분기중 완전히 재충전된다. 연산 해독기(312)는 수행할 연산을 선택한다. 해독기는 연산 및 마이크로 코드 연산 레지스터(310)로부터 공급받는다. 모드 비트는 어느것이 해독에 대한 제어를 얻는가(강제 연산의 경우에는 이를 얻지 아니하는 것)을 결정한다.
Ⅰ-버퍼(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명령어가 있게 된다.
강제연산 레지스터(FOP)(313)는 내부제어용으로 이용된다. 이러한 레지스터들은 트랩과 예외 조건들로부터 입력을 얻고 해독기(312)내의 또다른 방식을 강제한다. 전형적인 동작은 Ⅰ-버퍼 적재, 트랩 레벨로의 전이 및 예외루틴의 시작등이다.
각 제어 레지스터(310)에는 자체의 주기 계수기(311)가 있다. 마이크로 코드주기 계수기는 일부 강제연산(FOP)에 의하여 공유된다. 산술연산과 다른 마이크로 명령어의 대부분은 하나의 주기만을 필요로 한다. 처리기 버스 연산을 수행하는 마이크로 명령어의 대부분은 2개의 주기를 필요로 한다.
데이타 지역기억장치(303)에는 2개는 출력포트이고 하나는 입력 포트인 3개의 포트를 거쳐 접근할 수 있는 48전단어(4-비트)레지스터가 들어있다. 어느 레지스터도 레지스터(314)를 경유하여 입력용으로 어드레스될 수 있고 동일한 레지스터 또는 2개의 서로 다른 레지스터도 출력용으로 동시에 어드레스될 수 있다. 이러한 3겹의 어드레싱은 어퍼란드 페칭이 처리와 중첩하게 할 수 있다. 방금 기록조작용으로 어드레스된 레지스터는 비교기 논리 및 데이타 게이팅(도시없음)으로 인하여 동일주기내에 입력으로도 이용될 수 있다. 이것은 파이프 라이닝 행동을 촉진시킨다.
ALU(306)는 2개의 전단어 오퍼란드상에서 참 양식과 역 양식으로 AND, OR, XOR 및 ADD연산을 수행할 수 있는 전단어 논리장치인것이 바람직하다. 십진 합산은 지원을 받는다. 패리티 예보 및 전파와 고속캐리 전파가 포함된다. 세이브(save) 레지스터(320)는 나눗셈 연산을 지원한다. 상태논리(321)는 분기 결정, 부호 평가등을 위한 여러가지 조건을 만들어내고 저장한다.
제어저장 주소 레지스터(CSAR)(308)는 마이크로 명령어와 테이블을 제어기억장치(171)내에 어드레스한다. CSAR(308)에 대한 입력은 연관 수정자(322)로부터의 갱신 주소 또는 성공적 분위기로부터의 분기목표주소 또는 테이블 조사용 강제주소이다. 테이블 조사는 각 S/370명령어의 시작 및 일부강제 연산(FOP)에 있어서는 강제적이다. CSAR(308)는 연산코드 패턴을 연산코드 테이블(제29도)에 접근하기 위한 주소로서 얻는다. 이러한 연산코드 테이블의 출력은 연산 레지스터(310)로부터 직접 해독할 수 있는 수행방식을 정의한다. 간접 수행이 필요한 경우에는 연산코드 테이블 출력이 CSAR내로 피드백되어 적당한 마이크로 루틴을 어드레스한다.
저장주소 레지스터(302)는 24-비트 주소용으로 설계되어 있다. 연관수정기(323)는 채취된 데이타 블록의 크기에 따라 주소를 갱신한다. 명령어들은 Ⅰ-버퍼(309)가 비워짐에 따라 하나의 단어(4바이트)의 증분내에 미리 채취된다. 저장주소 레지스터(302)에의 입력은 명령어 오퍼란드 주소 레지스터(324)에서 온다. 이것은 더 나아가 가속을 이유로 명령어 주소 레지스터가 병렬로 세트된다.
CUP 데이타 흐름은 한번에 3개의 S/370 명령어까지 중첩 처리할 수 있게 한다. S/370 명령어는 하드웨어내에서 수행되거나 마이크로 명령어에 의하여 해석된다. 적당한 실시예의 기본 사이클 시간은 80ns이다. 명령어 처리는 하나 이상의 80ns 단계에서 수행된다. 고속곱셈 설비(PE 151)는 이진 연산과 부동 소숫점 곱셈 연산을 촉진시킨다. 제어저장(171)으로부터의 마이크로 명령어는 너무 복잡하고 너무 비용이 많이 소요되어 전적으로 하드웨어내에서만 구현할 수 없는 S/370 명령어의 수행을 위하여서만 채용된다. 마이크로 명령어는 필요한 경우에는 명령어당 60ns의 속도로 공급된다. 마이크로 명령어 세트는 S/370 명령어의 해석을 위하여 최적화된다. 마이크로 명령어는 반단어 형식을 가지며 2개의 오퍼란드를 어드레스할 수 있다.
제어저장(171)내에 들어있지 아니한 마이크로 코드는 S/370 메모리(162)내의 지정구역인 IOA구역(187)내에 보류된다(제28도, 제29도 참조). 이러한 마이크로 코드에는 예외, 빈번히 수행되지 아니하는 S/370 명령어들을 위한 저성능 민감코드가 포함되어 있다. 이 마이크로 루틴들은 제어장치(171)의 RAM 부분내의 64B버퍼(186내로 요구에 근거하여 채취된다. PE(85)가 제어장치(171)내에서 구현되는 것보다 더 큰 주소와 마주치는 때마다 캐쉬 제어기(153)와 저장 제어기 인터페이스(155)에 대한 64B 블록 채취동작을 개시한다. 장치(153, 155)는 IOA(187)로부터 64B 블록을 채취하고 이를 PE(85)로 송신하고 이 PE(85)는 이를 버퍼(186)내에 저장한다. 마이크로 명령어는 수행을 위하여 버퍼(186)로부터 PE(85)에 의하여 채취된다. 모든 마이크로 코드는 초기 마이크로 코드 적재(IML)시간에 메모리내로 적재된다. 시스템은 IML지원을 제공하여 S/88로부터 메모리로의 마이크로 코드 적재를 촉진한다.
S/370 명령어와 사용자 데이타는 8KB 고속 캐쉬 기억장치(340)(제31도)로부터 채취된다. 데이타는 전단어 기초상의 캐쉬(340)로부터 또는 캐쉬내로 판독/기록된다. 캐쉬로부터 또는 캐쉬내로 전단어를 판독/기록하는데 필요한 시간은 120ns이다. 캐쉬(340)는 자동적으로 필요가 생긴 때에 메모리(162)로부터의 64바이트 블록으로 다시 채워진다. PE(85)는 처리기 버스 명령을 경유하여 캐쉬(340)와 교신한다. (85)에 의하여 제공되는 가상주소는 디렉토리 룩 어사이드 테이블(DLAT)(341)내의 해당 사전 번역페이지 주소를 조사하는데 이용된다.
PE(85)내의 데이타 지역기억장치(303)에의 16개의 범용 레지스터, 4개의 부동 소숫점 레지스터 및 24개의 작업 레지스터가 포함되어 있다. 모든 레지스터는 3개의 분리된 주소가능 포트를 경유하여 개별적으로 어드레스될 수 있다. 따라서, 기억장치(303)는 2개의 오파란드를 ALU(306)내에 병렬로 공급할 수 있고 동일한 80ns 사이클내에서 ALU(306) 또는 캐쉬(340)로부터 전단어를 동시에 받아들일 수 있다. 재래식 데이타 지역기억장치에서와 같은 직렬화가 없기 때문에 산술 및 논리 연산은 다음 명령어의 준비와 중복하여 수행될 수 있다.
CUP는 S/370 명령어용 8바이트 명령어 버퍼(Ⅰ-버퍼)(309)를 유지한다. 이 버퍼는 성공적인 S/370 분기 명령어에 의하여 초기화된다. PE(85)는 캐쉬(340)로부터의 S/370 명령어 스트린에서 데이타의 2배 단어를 채취하고, 이를 Ⅰ-버퍼(309)내에 적재한다. 최초의 전단어가 Ⅰ-버퍼(309)내에 적재된 때, PE(85)는 명령어 수행을 다시 시작한다. Ⅰ-버퍼 데이타는 S/370 명령어의 수행과 동시에 캐쉬(340)로부터 채취된다. 각 S/370 명령어 수행내의 제1사이클이 비캐쉬 사이클이기 때문에 CPU는 전단어를 캐쉬(340)로부터 Ⅰ-버퍼(309)내로 미리 채취하기 위하여 이 사이클을 이용한다.
제2비캐쉬 사이클은 유효주소 계산중 색인법을 필요로 하거나 마이크로 루틴에 의하여 수행되는 S/370명령어와 함께 이용할 수 있다. 이러한 경우에는 S/370 명령어 채취는 S/370 명령어 수행과 완전히 중첩될 수 있다.
적당한 실시예에 있어서 S/370 칩 세트(150)는 송신 칩의 인터럽트 래치를 리세트함으로써 이에 긍정응답하는 인터럽트를 수신하는 칩을 필요로 하는 인터럽트 기구를 경유하여 통신한다.
시스템(예 : BCU156를 경유하여) 하나 이상의 비트를 어댑터(154)의 상태 레지스터(STR)(후술한다)내에 세트(활성화)시킬 때마다 시스템은 N-ATTN-REQ 제어회선도 활성화시켜야 한다. 이로 인하여 현행 S/370 명령어가 수행되었을때 처리기 소자(85)내에 예외가 생겨서 처리기소자(85)로 하여금 상태 레지스터를 "바라보게"한다. 이때 예외조정기는 STR내용을 감지하고 '인터럽트 타이프'를 질의하고 적당한 시스템 마이크로 루틴을 디스패치한다. 처리기 소자(85)가 STR내의 비트를 활성화시킬 때마다 시스템은 이에 따라 이에 반응하여야 한다. 기본적으로 인터럽트 요구에는 다음과 같이 2가지가 있다.
1. 시스템 요구(SYSREQ)는 S/370 처리기소자(850)에 대한 요구(BCU 156 경유)이다. 시스템은 인터럽트 타이프를 STR내에 세트시켜서 그 요구를 명시한다. 이에 의하여 처리기 소자(85)내에는 예외가 생기고 이 소자는 제어를 예외조정기에 전송한다. 예외조정기는 적당한 마이크로 루틴을 디스패치하고 이 마이크로 루틴은 어댑터(154)에 PROC-버스 명령을 발하여 적당한 인터럽트 타이프를 STR내에 리세트시키고 인터럽트 타이프가 정의하는 기능을 수행하며 다음 S/370 명령어의 수행을 시작한다.
2. 전송 요구는 시스템이나 PE(85)에 의하여 불러낼 수 있고 시스템 인터페이스상에 추가 데이타 전송을 포함할 수 있다. 이를 위하여 STR내에는 2개의 인터럽트 래취가 가정되는데 그중 하나는 처리가 통신요구(PCR)이고 다른 하나는 시스템 통신요구(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를 감지하며, SCR래치를 찾아내고, 레지스터(116)로부터의 데이타를 판독하고, SCR래치를 리세트시킨다. 시스템은 SCR래치기 리세트되었는가의 여부를 알아보기 위하여 SCR래치를 질의할 수 있다.
3. 시스템은 위의 순서를 반복함으로써 추가 데이타를 (85)에 전송할 수 있다.
데이타는 IOA저장구역(187)을 경유하여 교환할 수 있다. 데이타를 IOA구역(187)으로 또는 IOA 구역으로부터 저장 또는 채취할 수 있게 하는 PE(85)와 어댑터(154)용의 PROCBUS명령이 있다.
PE(85)에는 시스템에 의하여 채취될 데이타를 세트시키는 IOA구역(187)내에 지정된 한 세트의 버퍼가 있다. 이와 마찬가지로 시스템에는 PE(85)에 의하여 채취될 데이타가 세트되는 IOA 구역(187)내에 지정된 또다른 버퍼 세트가 있다. 인터럽트 타이프(IOASYS/IOAPU)는 SYSREQ내에 서로에게 데이타가 IOA버퍼내의 세트되었음을 표시하기 위하여 이용될 수 있다.
특정기계 검사 및 외부 인터럽션 조건들은 사용시스템에 의하여 제기된다. 시스템은 SYSREQ또는 XFERREQ 통신요구를 발함으로써 인터럽션 조건을 PE에 전달한다. PE(85)는 다음의 기능을 수행한다.
a. 레지스처(STR)를 감지하고, 그 내용을 질의한다.
b. 시스템 제공 마이크로 루틴을 호출한다. 시스템 인터럽트 요구조정기는 특정 인터럽트 처리를 수행한다. 적당한 시점에서 마이크로 루틴은 PROCBUS명령을 어댑터(154)에 발하여 해당 SYSREQ 또는 SFERREQ를 리세트시킨다. 끝으로 그것을 제어를 S/370 마이크로 코드에 복귀시킨다.
c. PE(85)는 적당한 S/370 인터럽트 클라스를 위한 PSW 교체를 수행하고 NSI기능을 수행한다.
I/O 인터럽션 요구는 I/O비트를 STR내에 세트시킴으로써 시스템에 의하여 발생된다. 현행 S/370 명령어가 완료될 때마다 예외 조정기가 불려나온다. 이 루틴에서 PE(85)는 I/O 인터럽트 요구를 인식하기 위하여 를 판독한다. 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)상에 놓이고 접근 키는 키상태 버스상에 놓이며 이와 동시에 'N-Command-Valid'신호가 뜨게 된다.
2. 키/상태 버스(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신호는 정지 레벨(0)에 활동없이 남아 있는다. 데이타와 상태가 다음 주기로 이송될 수 없는 경우에는 MMU-Busy가 1로 상승하고 데이타와 상태가 실제로 버스상에 놓이는 주기에서는 0으로 복귀된다.
PE(85)는 저장작업중에도 다음 주기(저장작업을 시작한 후)에서 Key Status Bus상에 있는 상태를 기대한다. 상태가 다음 주기로 이송될 수 있는 경우에는 MMU-Busy는 비활동(0)으로 남아 있고 그렇지 아니하면 1로 상승되며 상태가 실제로 이송되는 주기에는 0으로 복귀된다.
5. 회선(MISS IND)상의 캐쉬 누락표시기는 DLAT-누락, 키 누락 또는 주소지정 위반을 PE(85)에 표시하기 위하여 캐쉬 제어기(153)가 이용한다. 표시는 상태내에서도 이용할 수 있는 정보의 복사이다. 회선은 상태가 Key Status Bus상에 제시되는 동일 주기내에만 유효하나, 누락표시 회선은 몇 나노초 빨리 작동된다. 누락표시는 다음 주기에서 PE(85)를 경유하는 트랩을 강제한다.
6. 회선(Bus-Grant PE 85)상의 신호는 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-PE 85가 활동적으로 되고 N-Bus-Busy가 불활동적으로 되는 주기에 이어지는 다음 주기에 활동적으로 (정지 레벨) 될 수 있다.
9. 회선(ADDR-DECREMENT)는 시작 주소로부터 아래로 내림차순 위치까지 진행되는 (십진 데이타 처리 데이타 전송을 위하여 필요한 것과 같은) 기억장치 접근작업을 위하여 PE(85)가 이용한다. 신호는 N-CMD-Valid가 작동되는 동일 주기내에 활성화될 수 있다.
10. 회선(CMD-CANCEL)상의 명령취소신호는 이미 개시된 기억장치로의 채취 접근을 취소하기 위하여 PE(85)가 이용한다. 이것은 PE(85)가 요구받은 데이타의 즉시 사용을 금지하는 조건들을 탐지한 때에 N-CMD-Valid가 활동적으로 된 후 주기내에서 일어난다.
적당한 실시예에 있어서 일반적으로 잘 알려진 5개 그룹의 PROCBUS명령, 즉 CPU-기억장치, I/O기억장치, MMU연산, 메시지 교환, 부동 소수점 등이 있다.
버스(171)의 제어를 요구하는 버스장치(PE85, 어댑터 154 또는 캐쉬 제어기 153)는 명령을 버스상에 세트시킨다. CPU 기억장치 및 I/O 기억장치 명령을 위하여 버스장치는 접근 키 및 동적 주소번역 비트도 키 상태 버스상에 세트시킨다. 명령을 완수한 후 상태는 동일 버스상에서의 요구하는 버스장치로 복귀된다.
어댑터(154)는 CPU 기억장치 명령과 I/O 기억장치 명령을 발하는 한편, PE(85)는 CPU 기억장치 명령만 발한다. 이러한 명령 그룹들은 다음과 같다.
조작 CPU메모리 명령 I/O메모리 명령
1. S/370 주기억장치
참조
a) 채취
캐쉬 히트 캐쉬로부터 채취 캐쉬로부터 채취
캐쉬 미스 메모리로부터 캐쉬회선 재적
재(cast out포함) 및 캐쉬로
부터 채취
b) 저장
캐쉬 히트 캐쉬내 저장 캐쉬내 저장
캐쉬 미스 메모리로부터 캐쉬회선 재적 메모리내 저장
재(cast out 포함) 및 캐쉬
내 저장
2. 내부목적구역 일부 CPU 메모리 명령이
IOA
(IOA) 저장주소 검사에 접근할 수
있다.
참조
I/O 기억장치 명령은 S/370 주기억장치 주소의 검사없이 캐쉬 제어기(153)내에서 수행된다. 이러한 검사는 STC 1(155)내에서 수행된다. CPU기억장치 명령은 수행을 위하여 제어기(153)로 향하고 1바이트 명령필드와 3바이트 실주소 또는 가주소 필드를 가진다. 명령 필드 비트는 다음과 같다.
CMD비트 의미
0-1=10 CPU메모리 명령
2=1 채취 작업
2=0 저장 작업
3=1 캐쉬 바이패스, 주소검사 없음
3=0 주소에 의한 캐쉬 접근/검사
-S/370 주소 비교
-ACB검사
4=1 DLAT 접근 없음, 즉
-키 제어 보호 검사 없음
-참조 및 변경 비트 취급
없음
DLAT접근, 즉
-키 제어 보호 검사
-참조 및 변경 비트 취급
5-7=nnn 바이트 길이 계수
000=1바이트
001-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로부터 또는 IOA 내로 4바이트 까지 판독/기록하기 위한 것임.
4. 채취(101000)/저장(100000)캐쉬 가상 N바이트, 실주소를 가지고 캐쉬로부터 또는 캐쉬내로 4바이트까지 판독/기록하기 위한 것임.
I/O기억장치 명령은 어댑터(154)에 의하여 개시되고 캐쉬 제어기(153)로 향한다. 이 명령은 데이타 스트링을 1-64바이트로부터 올림차순 주소순위에 따라 길이로 전송한다. 32비트 명령 형식에는 3저위바이트내의 실바이트 주소가 포함되고 고위바이트에는 최고위 비트"0"가 포함되어 있으며 다음 최고위 비트는 채취 또는 저장작업을 정의하고 나머지 6개 비트는 데이타 전송의 길이(바이트)를 정의한다. 데이타 스트링은 버스상의 위치정렬이 필요한 최초 및 최종 전송을 제외한 단어 경계상에 전송된다.
MMU명령은 캐쉬 제어기(153)와 DLAT, ACB, 디렉토리 등을 포함한 그 레지스터를 제어하는데 이용된다.
메시지 명령은 버스(151)에 연결된 버스장치사이에 메시지를 전송하는데 이용된다.
S/370기억장소 관리장치(81)
1. 캐쉬 제어기(153)(제31도)
캐쉬 제어기(제31도)에는 캐쉬 기억장소(340) 및 어드레싱과 비교논리(347, 348), 채취 정렬기(343) 및 고속주소번역을 위한 디렉토리 룩 어사이드 테이블(DLAT)(341)이 포함되어 있다. 제어기(153)는 처리기 버스(170)로부터 가상주소 및 기억장치 명령어를 받아들이고 캐쉬 기억장치(340)를 경유하여 청구를 충족시킬수 없는 때에는 멀티플렉서(349) 및 STC버스(157)를 경유하여 기억장치 제어 인터페이스(155)(제11도)에 채취 또는 저장 명령을 전송한다.
DLAT(341)는 가상페이지 주소를 실페이지 주소로 고속 번역한다. 그 2×32엔트리는 64개의 예비번역 페이지 주소를 보유한다. 가상페이지 크기는 4KB가 바람직하다. DLAT누락의 경우에는 PE(85)는 인터럽트되고 가상주소 번역은 마이크로 프로그램이 S/370주기억장치(162)내의 세그먼트 및 페이지 테이블(도시없음)을 이용하여 공지된 방법으로 실시한다. 이때 DLAT(341)는 기억장치로부터 채취되어 캐쉬내에 배치된 정보의 새로운 가상 및 실페이지 주소를 반영하기 위하여 갱신된다. 기억장치 키의 복사는 S/370키 기억장치로부터 채취되어 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)내에 직접으로 저장된다.
4KB키 기억장치(344)는 16MB메모리용 기억장소키를 보유한다. 키 기억장치는 4K×8로 조직된 배열이다. 각 바이트는 하나의 기억장소 키를 보유한다. 각 DLAT엔트리는 그 4KB-블록 주소와 연관된 기억장소 키의 사본을 보유한다. 이것은 페이지에 반복하여 접근하는 동안 키 기억장치에의 접근 수를 크게 감소시킨다. 기억장소 키 지정내의 변경은 키 기억장치와 캐쉬 기억장치내의 사본에 영향을 준다.
캐쉬 제어기(153)가 수신기 회로(355)를 경유하여 처리기 버스(170)로부터 수신하는 명령, 데이타 및 주소는 명령, 데이타 및 주소 레지스터(350, 351, 352)내에 저장된다. 주소 레지스터(347)는 관련 S/370처리소자(PE85)용 유효주소의 범위를 저장한다. 비교논리(348)는 수신된 주소의 유효성을 검증한다. 주소 레지스터(347)와 그 관련 비교논리(348)에 의하여 제공되는 S/370주소 비교기능은 PE(85)와 I/O버스 어댑터(154)로 부터의 주소들을 다룬다.
주소 비교 경계(ACB)레지스터 (353)비교기능은 고객구역용으로 되어 있는 S/370주기억장치 참조가 IOA구역을 어드레스하지 못하게 한다. ACB레지스터(353)는 S/370기억장치(162)내의 보류된 구역과 비보류구역 사이의 분할 회선(경계)을 저장한다. S/370기억장치에 대한 각 접근은 수신 주소를 ACB값과 비교하는 비교논리(354)내에서 있게 된다.
2. STCI(155)(제32a도,제32b도)
(a)개요
기억장치 제어 인터페이스 (STCI)(155)는 S/370칩 세트(150)를 버스논리(178)와 시스템 버스(30)(제1도)를 경유하여 S/88듀플렉스 고장허용한계 기억장치(16,18)에 연결시킨다. 그것은 명령당 1-64바이트로부터의 데이타 전송을 정의하는 S/370처리기 및 I/O저장/채취 명령을 지원한다. ECC갱생,메모리,초기화,구성, 재진입 등은 S/88처리기(62)와 기억장치(16,18)에 의하여 다루어진다. 제32a,b도는 STCI(155)의 상세한 데이타 흐름을 도시한 것이다.
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)의 장치는 버스 구조의 사용을 조정한다. 장치는 버스 사이클 요구 신호를 가정하고 버스 사이클 요구를 가정하는 고순위 장치에 있어서 조정 네트워크에 의하여 동시에 검사함으로써 이것을 행한다. 조정단계중 연속적으로 버스 구조에 접근하는 장치 또는 파트너장치쌍은 버스 마스터라 하고 다음 클럭단계중 전송 사이클을 시작한다. 각 메모리장치(16,18)는 결코 마스터가 되지 못하고 조종하지 못한다.
사이클의 정의단계중에 사이클용 버스 마스터로 결정되는 장치는 사이클 정의 또는 기능신호들을 발생시킴으로써 사이클의 유형을 정의한다. 버스 마스터는 주소신호도 가정하고 주소 패리티 회선상에 주소 및 기능 신호에 대한 짝수 패리티를 배치한다. 처리기 모듈의 모든 장치들은 그 내부동작 상태에 관계없이 언제나 주변제어장치가 패리티 신호를 수신함이 없이 동작할 수 있더라도, 기능 및 주소신호를 운반하는 버스 콘덕터상의 신호를 수신한다. 정의되고 있는 사이클은 이 당시 버스대기 신호가 가정되면 포기된다.
응답단계중에는 통화중인 시스템의 주소지정장치는 Bus Busy신호를 가정하여 사이클을 포기할 수 있다. 예를들면, 메모리장치는 통화중이거나 갱생 주기중 주소가 지정되는 경우에는 Bus Busy신호를 가정할 수 있다. 응답단계중에 가정된 Bus Error신호는 오류가 사이클의 정의단계중 주소와 함께 주어질 때에는 사이클을 포기한다. 데이타는 판독과 기록 주기동안 데이타 전송단계중 A버스와 B버스상에 전송된다. 이에 의하여 시스템은 데이타 회선의 사용을 위한 재조정에 의뢰하지 아니하고 원시장치 또는 종착장치에 관한 데이타를 태그할 필요없이 버스 구조상의 판독 사이클과 기록 사이클의 혼합을 파이프 라인할 수 있다.
완전단어 전송에는 UDS 및 LDS(상,하 데이타 스트로브)신호의 가정이 수반된다. 반단어 또는 바이트 전송은 이러한 스트로브 신호중 하나만이 수반되는 전송으로 정의된다. 기록전송은 단순히 어느 스트로브 신호도 가정하지 아니함으로써 버스 마스터에 의하여 사이클내에서 일찌기 포기될 수 있다. 스트로브 신호는 버스 데이타 패리티를 계산하는데 포함된다.
데이타 이송단계중 검색된 오류는 이를 탐지한 장치로 하여금 최초의 사후 데이타 단계인 다음의 타이밍 단계에서 Bus Error신호중 하나 또는 둘을 가정하게 한다. 주변제어장치는 오류가 데이타를 사용하기 전에 발생한 것인가를 알아보기 위하여 대기한다. 그러나, 시스템의 중앙처리장치(21)와 주메모리장치(16)는 데이타가 수신되는 즉시 이를 이용하고 오류가 있는 경우에는 정확한 데이타를 예비하고 대기한다. 사후 데이타 단계중 버스 오류 신호의 가정은 전송주기의 다음 (6차)단계중 전송단계를 반복되게 한다. 이것은 그렇지 아니하면 이러한 제2사후 데이타 단계, 즉 6차 단계중 데이타를 버스 구조상에 전송하였을 사이클이 있는 경우에는 이 사이클을 포기한다.
도시한 시스템의 정상후면작동 방식은 모든 장치들이 Obey Both방식으로 되어 있는 때이며 이 방식에서는 A버스와 B버스가 오류에서 벗어나 있는 것처럼 보인다. 예를들면, 모든 장치들은 A버스상의 오류에 응답하여 동기적으로 Obey B방식으로 전환된다. 모듈(9)은 S/88중앙처리장치내에서 실행되는 감독자 소프트웨어에 의하여 Obey Both작동 방식으로 복귀한다.
Obey B 작동 방식과 Obey A작동 방식에 있어서 A버스와 B버스는 시스템 장치를 의하여 구동되고 모든 장치들은 여전히 완전한 오류 검사를 수행한다. Obey B방식의 작동과 유일하게 다른 점은 장치들이 데이타의 반복을 요구하면서 사이클을 포기함이 없이 단순히 복종되지 아니하는 하나의 버스상의 추가 오류만을 등재하는 것이다. 그러나, 복종되는 버스상의 버스 오류 신호는 전술한 바와같이 다루어지고 모든 장치들을 전환시켜서 다른 버스를 복종하게 한다.
(b)시스템 버스단계
제33도는 전술한 조작을 모듈(9)용 버스 구조(30)상의 4개의 파이프 라인 다중단계 전송주기들을 도시한 것이다. 파형(56a,56b)은 도면 상단에 표지된 바와같이 (1)에서 (21)까지 번호가 붙은 연속 타이밍 단계를 위하여 클럭(38)이 X버스(46)에 응용하는 S/88마스터 클럭 및 마스터 동기화 신호들을 도시한 것이다. 파형(58a)으로 표시된 버스 구조상의 조정신호는 각 타이밍 단계초에 변경되어 21개 단계중 각 단계에서 #1, #2, #3, …#21로 사이클 번호를 붙인 새로운 주기에 대한 조정을 개시한다. 제33도는 파형(58b)을 가진 사이클 정의신호를 나타낸다. 각 주기별 사이클정의 신호는 파형(58b)상에 사이클 번호로서 표시한 바와같이 그 사이클에 대한 조정신호보다 1클럭단계 늦게 발생한다. 도면에는 그외에도 Busy, 대기, 데이타, A버스 오류 및 B버스 오류 신호들도 표시되어 있다. 도면의 밑줄은 시스템의 작동하는 후면방식을 표시하고 서로 다른 방식 사이의 전이를 보여준다.
제33도에 의하면 타이밍 단계 신호(1)중 모듈(9)은 사이클 #1용 사이클 조정신호를 발생시킨다. 시스템은 지정된 Obey Both방식으로 작동한다. 단계(1)의 사이클 조정중 정하여진 버스 마스터장치는 사이클 정의 신호 파형(58b)상에 범례 #1로서 지정된 타이밍 단계(2)중 수행된 사이클을 정의한다.타이밍 단계(2)에서도 졔2사이클, 사이클 #2에 대한 조정이 수행된다.
타이밍 단계(4)에서는 사이클 #1용 데이타가 전송되고 사이클 #3용 정의가 수행된다. 버스 A오류는 파형(58f)로 지정된 이 타이밍 단계중 가정된다. 오류 신호는 사이클 #2를 포기하고 모듈내의 모든 장치들은 Obey B방식으로 전환시킨다. 타이밍 단계(4)의 A버스 오류신호는 전타이밍 단계(3)내에서 시스템의 적어도 하나 이상의 장치가 A버스(42)로부터의 신호에 관한 오류를 탐지하였음을 표시한다. 오류는 타이밍 단계(3)중 파형(58e)내에 데이타 부재에 의하여 표시되는 바와같이 버스 구조상에 데이터가 전혀 없는 때에 발생하였고 따라서 데이타 전송을 반복할 필요가 없다.
타이밍 단계(5)중에서 Obey B방식으로 작동하는 시스템에 의하여 채취 사이클이 조정되고 사이클 #4에 대한 기능이 정의되고 사이클 #3용 버스 구조상에는 응답신호가 존재하지 아니한다. 따라서 이 사이클은 타이밍 단계(6)중 데이타의 전송을 속행한다. 타이밍 단계(6)에서도 파형(58d)내에 표시된 바와 같이 버스대기가 가정되고 이는 사이클 #4과 관련되어 있다. 그 결과는 이 사이클이 또 다른 타이밍 단계용으로 확대되고 사이클 #5을 포기하는 것이다.
타이밍 단계(7)에서는 새로운 사이클 #7이 조정되고 사이클 #6에 대한 정의작업이 속행된다. 타이밍 단계(8)에서는 사이클 #4용 데이타가 전송을 위한 버스 구조에 응용된다. 타이밍 단계(8)에서도 Busy신호가 가정된다. 이 신호는 사이클 #6에 대한 응답의 일부이고 이 사이클을 포기한다.
타이밍 단계(9)에서의 조정 및 정의작업은 또 다른 버스 A오류에 의하여 가정되는 것과 동일한 패턴을 따른다. 시스템은 이미 Obey B방식으로 작동하며 이에 따라 이 신호에 대한 응답은 오류를 등재하는 것 뿐이다.
타이밍 단계(10)내에서 가정되고 타이밍 단계(11)로 속행되는 But Wait신호는 사이클 #8을 다음 타이밍 단계용으로 확대하기 때문에 이 사이클용 데이타는 지정된 바와같이 이 단계중에 전송된다. 이러한 단계중에 가정된 But Wait신호도 도시된 바와 같이 사이클 #9 및 #10을 포기한다. Wait신호로 사이클 #8을 확대시키기 위하여 단계(10), (11) 또는 (12)중에 가정된 Busy신호는 사이클 #8을 포기할 것이다. 사이클 #7용 데이타 전송은 타이밍 단계(10)중 Wait 및 Busy콘덕터상의 신호에 관계없이 이 타이밍 단계(10)내에서 발생한다.
타이밍 단계(11), (12) 및 (14)중에 발생하는 버스 A오류 신호는 등재될 시스템이외의 시스템이 이미 Obey B방식으로 작동하고 있기 때문에, 이러한 시스템에 대하여는 전혀 효과가 없다. 타이밍 단계(14)중에 가정된 Wait신호는 사이클 #13을 포기한다. 그것은 사이클 #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. 조정단계-이 단계는 버스 제어기들이 버스 마스터쉽을 잡기 위하여 경쟁할 때 모든 사이클이 진행한다. 전형적으로 조정우선 순위는 조정장치의 후면 패널 Llot ID상에 근거한다. STCI설계의 적당한 실시예에 있어서 조정우선순위는 단일 CPU용의 Slot에ID 근거하고 다중 CPU구현에 있어서 실타스크 요구상에 근거한 우선 순위를 지정하기 위하여 각 CPU(PE 85 및 그 장치쌍)상의 FIFO Almost Full/Almost 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 Busy 조건이 포함될 수 있고 메모리는 STCI(155)로 하여금 전의 사이클 정의 단계를 재조정 및 재발생하게 할 수 있다.
4. 데이타 단계-일단 저장요구가 받아들여지면(과거의 사이클 응답단계) 데이타 단계는 응답단계에 뒤따르는 사이클(사이클 정의 단계에서 2사이클 뒤)내에서 일어난다. 16, 32 또는 64비트 데이타는 판독 또는 기록상의 125ns 단계내에서 전송될 수 있다.
5. 사후 데이타 단계-버스 오류에 대한 검사요구가 있으면 데이타가 최초로 송신된 때로부터 2사이클 뒤에 시스템 버스(30)상에서 데이타가 (STCI 155 또는 메모리 16로부터) 반복된다. A버스와 B버스는 동일한 데이타를 운반하기 때문에 A 또는 B버스 오류는 사후 데이타 단계중에 일어날 수 있다.
버스(30)를 조정하는 S/88처리기(62)와 STCI(155)사이의 중요한 차이를 설명하면 다음과 같다. 전형적으로 S/88 처리기(62)는 어느 순간에 5개 단계중 하나의 단계에서만 작동된다. 그러나, STCI는 그 채취, 저장 파이프 라인 능력(후술한다)이 있기 때문에 동시에 5개 단계에서 작동할 수 있다. 예를들면, STCI(155)는 64바이트 판독작업중 오류가 전혀 없고 STCI가 5개의 연속사이클의 각 사이클에서 버스(30)의 조정 제어를 허가받은 경우에는 동시에 5개 단계에서 작동할 수 있다. 이것은 특히 모듈(9)의 유니프로세서 버젼내에서 시스템 성능을 향상시킨다.
(c) STCI특징
STCI 특징의 일부를 설명하면 다음과 같다.
1. FIFO 400-4개(64×9비트)의 First-In-First-Out 고속 RAM은 장치(155)가 통화중 되기 전에 4개의 64바이트 저장 명령을 보유할 수 있는 버퍼를 형성한다. 그것은 모든 데이타용 출력까지 들어오는 패리티를 휴대한다. S/370클럭(152)은 명령과 데이타를 FIFO(400)내로 클럭하고, S/88클럭(38)은 명령과 데이타를 FIFO(400)으로부터 클럭한다. FIFO(400)의 적당한 실시예는 1988년 1월 15일에 사이프레스 반도체회사가 발행한 제품정보편람 5-343 페이지에 상세히 기술된 CY7C409이다.
산업표준 핸드쉐이킹 신호 이외에 Almost Full/Almost Empty(AFE) 및 Half Full(HF) 플래그가 제공된다. AFE는 FIFO가 Almost Full 또는 Almost Empty일때에는 높고 그렇지 아니한 때에는 낮다. HF는 FIFO가 Half Full일때에는 높고 그렇지 아니한 때에는 낮다.
Imput=Ready(IR)제어신호가 높은 때에는 메모리는 Shift-In(SI)의 제어하에 그 입력에서 9비트 명령단어들을 받아들인다. Output-Ready(OR)제어신호가 높은 때에는 Shift-Out(SO)입력의 제어하에 저장된 것과 동일한 순서로 출력된다. 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가 낮아질때까지 출력상에 나타나지 아니한다.
데이타는 메모리를 통하여 물리적으로 전파되지 아니한다. 판독 및 기록 포인터는 데이타를 이동하는 대신에 증가시킨다. 기록 포인터를 증가시키고 신호를 빈 FIFO의 SI입력으로부터 OR출력까지 전파하는데 소요되는 시간(fallthrough 시간)또는 판독 포인터를 증가시키고 full FIFO의 SO입력으로부터 IR출력까지 신호를 전파하는데 소요되는 시간(bubblethrough 시간)을 데이타가 FIFO(400)를 통과할 수 있는 속도를 결정한다.
전원이 끝이면 FIFO는 마스터 리세트 신호에 의하여 리세트된다. 이에 의하여 장치는 반 상태로 들어가게 되고 이것은 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 신호의 고위상태에 의하여 표시된다. FIFO가 리세트된 후 모든 데이타 출력(D 00-D 08)은 저위상태에 있다. FIFO가 비어있는 채로 남아있는한, OR 신호는 낮아지고 이에 응용되는 모든Shift Out(SO)펄스는 무시된다. 데이타가 FIFO로 이동한 후 OR 신호가 높아진다.
2개의 플라그, 즉 Almost Foll/Almost Empty(AFE)와 Halt Full(HF)는 얼마나 많은 단어들이 FIFO내에 저장되어 있는가를 기술한다. AFE는 그 안에 저장된 단어들이 8개 이하 또는 56개 이상인 때에는 높다. 기타의 경우에는 AFE 플라그는 낫다. JF는 FIFO내에 저장된 단어들이 32개 이상인 때에는 높고, 기타의 경우에는 HF 플라그가 낫다. 플라그 전이는 SI 및 SO의 낙하 연단에 상대적으로 일어난다.
2. SBI 논리-S/370 처리기(85)로 하여금 S/88 처리장치(16)에 대한 판독/기록을 개시하게 하는 시스템/88 버스 인터페이스(SBI) 논리(178), 이것에는 버스(30)에 대한 접근용 사이클을 조정하여 16,32 또는 64비트 전송을 개시하는 논리(408)가 포함되어 있다. 논리(178) 인터페이스 회선 및 조정논리(408)는 여기에서 설명하는 바와 같이 수정되지 아니하는 범위 안에서 Reid 특허에서 기술하는 타이프로하는 것이 바람직하다.
3. 고장허용한계-FIFO 버퍼(400)를 포함한 모든 STCI 논리는 S/370 처리기 기판에 대한 자체검사를 제공할 수 있게 듀플렉스된다. 유일한 심플렉스 논리에는 비교논리(420a-g), 중단논리(403) 및 클럭발생논리(도시없음)가 포함되어 있다. 따라서, STCI(155)에는 제8도의 기억장소 관리장치(83)의 일부인 실질적으로 동일한 STCI쌍(155a)(도시없음)이 있다.
비교기 논리(420a-g)는 제8도의 비교논리(15)를 형성하고, 중단논리(403)는 제8도의 공통 제어논리(75)의 일부를 형성한다. 적당한 실시예에 있어서 S/370 비교검사는 오류있는 데이타가 버스 구조(30)를 경유하여 분산되지 못하게 방지하기 위하여 STCI쌍(155, 155)에서만 수행된다. 그러나, S/370 기계검사 및 패리티 오류는 버스(460)를 경유하여 논리(403)에 공급된다. BCU 버스(247, 223)상의 일부는 오류 S/88 비교회로(12f)(제8도)에 의하여 픽업된다.
4. 주소검사-162와 같은 각 S/370 처리기 기억저장공간의 크기가 위반되지 아니하게 하는 한편, 베이스 오프셋(제10도)을 이용하여 시스템/88 기억장치(16)내의 유효한 물리적 /370 사용자 주소를 만들어낼 수 있도록 2개의 메모리 맵 레지스터(404, 405)(MEM Base MEM Size)가 제공되어 있다.
5. 동기조작-S/370 클럭(152)은 S/88 클럭(38)의 시작부터 하나의 S/370 발진기 입력 클럭 주기내에서 클럭 사이의 동기화를 허용할 수 있도록 버스(30)와 동기화 논리(158)(제19C도)를 경유하여 S/88 클럭(38)(제7도) 16Mhs 입력에서 파생된다.
6. STC 버스 인터페이스-모든 표준 S/370 채취/저장 명령은 명령 취소와 함께 수행된다. 패리티 오류 또는 ECC 오류에는 S/370 운영시스템에 보고되지 아니하고 오히려 리트라이(retry)(ECC 또는 버스 패리티 오류)로서 취급되거나 중단된다(내부기판 패리티 오류). 64바이트 회선 경계 크로싱은 주소 랩 어라운드(wraparound)에서 끝나게 된다.
제11도에 도시한 바와같이 STCI(155)는 8KB 명령어/데이타 캐쉬(340)뿐 아니라. 64 엔트리 DLAT(341) 사이클 내로 안내하고, 그 다음의 각 저장작업 사이클싱에 32 비트 이하의 데이타를 안내하는데 이용된다. STC 유효회선은 명령/주소가 동일 사이클내의 STC 버스상에서 유효한다는 것을 통지하기 위하여 장치(153)에 의하여 (155)에로 구동된다. STC cancle 회로는 전에 발하여진 명령을 취소하기 위하여 장치(153)에 의하여 STCI(155)에로 구동된다. 그것은 STCI Valid가 발하여진 후 2 사이클 이내에 나타날 것이다. 그것은 PE(85) 명령 취소 입력과 논리합된다. STC Busy 회선(40)은 장치가 통화중이고 새로운 명령을 받아들일 수 없음을 표시하기 위하여 "STC Valid"가 발하여진 때로부터 1 사이클 후에 STCI(155)에 의하여 장치(153)에로 구동된다. 그것은 장치(155)가 새로운 명령을 수신하기 1사이클 전에 릴리스된다.
회선(433)상의 STC Data Invalid는 데이타가 데이타 전송을 무효화시키기 위하여 채취상에 복귀되는 것과 동일한 주기내에서 STCI(155)에 의하여 장치(153)에로 발하여진다. 장치(153)는 회선이 활성화되어 있으면 데이타를 무시한다. 이 회선은 고속 ECC 오류가 버스(30)상에서 발생하거나 데이타가 STCI 장치쌍(155)의 논리사이에서 잘못 비교되거나 버스(30) 판독 사이클중 부정확한 패리티가 탐지된 때에 데이타와 동시에 송신된다.
STC 데이타 전송 회선(441)은 후속 사이클에서 STC 버스(157)상의 데이타 전송을 통지하기 위하여 STCI(155)에 의하여 장치(153)에로 구동된다. 그것은 저장을 위하여 장치(153)는 다음 32 비트 단어를 다음 사이클에 공급하도록 지시한다. 채취를 위하여 그것은 장치(153)에 대하여 다음 사이클에는 다음 사이클상의 STC Data Invalid가 우선하지 아니하는 한, 유효 데이타를 포함될 것을 알린다. STCI(155) 설계는 위의 모든 상태가 하나의 S/370 CPU내에서 동일한 순간에 활동할 수 있게 되도록 충분히 파이프 라인된다. 이러한 식으로 버스 허가가 계속되고 버스 오류가 없다고 가정하면 STCI(155)는 32 비트, 62.5ns STC 버스 (157)상에 64 비트 판독(125ns 시스템 버스(30) 사이클 당)을 이용하는 대기상태없이 파이프 라인된 데이타를 채취상에 유지할 수 있다.
시스템/88 인터페이스(140)는 BCU 지역가상주소 공간내에서 MEM Size/MEM Base 레지스터(405, 404)에의 접근을 지원하기 위하여 STCI(155)내에서 이용된다. "Broken"(403) 및 "버스 인터럽트 요구"(IRQ) 오류도 S/88 처리기 기판(102)상의 오류와 병합되어 저순위 유지 보수 인터럽트를 버스(30)상에 단일 CPU로서 구동시킨다.
Bus IRQ 오류는 통상적으로 동일한 동일한 기판이나 파트너 기판에 의하여 서로 다르게 검색되는 버스(30)로 부터의 비보호 신호로 인하여 생기는 중단오류들은 중단된 것처럼 버스(30)로 부터 기판을 분리시키지 못한다는 접에서 중단오류와 다르다. 이러한 오류들은 기판이 Obey Both방식에 있는 때에만 활동적이 된다.
그 외에도 회선(411, 412, 413)상의 "Obey A", "Obey B" 및 "듀플렉스"신호들은 S/370 처리기내에서 재구현되기 보다는 /88 처리기 기판논리(415)로 부터 구동된다. Obey A/Obey B 신호는 검사 및 구동측 데이타 입력 멀티플렉서 및 버스 오류조건 게이팅용의 입력 멀티플럭서(71, 73)(제8도)를 제어하는데 이용된다. 회선(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버스에 결합되어 있다. /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)의 출력의 도트 오어링은 해당 데이타 입력 멀티플렉서 기능(71, 73)(제3도)을 수행한다.
레지스터(405, 404)내의 MEM Size/MEM Base 값은 BCU 지역주소 공간에 의하여 S/88처리기(62) 가상주소 공간내에 메모리 맵된다. 이러한 값은 일단 주어진 S/370 CPU 공간(162)이 정의되면 S/88 부트 프로세스중에 세트되어야 한다. 이 값은 STCI 저장/채취 작동이 진행중이 아닌 한, S/88에 의하여 변경될 수 있다.
레지스터(404, 405)는 지역주소(007EO1FC)를 경유하여 제19a도의 주소 해독논리(216)에 의하여 접근되며 다음의 데이타, 즉 S/370 기억장치(162) 크기(MEM Size) 및 기억장소 베이스 주소(MEM Base)와 동등한 PA 비트(20-23) 및 PA 비트(20-27)이 포함되어 있다. 여기에서 MEM Size=S/88 기억장치로 부터 저장장소구역(162)에 할당된 주기억장소의 메가바이트(1 내지 16) MEM Base=기억장치(16)의 물리적 주소 공간에의 주소(0)로 부터 저장장소구역(162)에 지정된 오프셋의 메가바이트 PA=S/88 번역가상주소(즉, 물리적 주소)
논리(216)가 주소(007EO1FC)를 해독한 때에는 크기 및 기준주소 비트들이 그 버스(161D)를 거쳐 기리치(62)에 의하여 레지스터(405, 404)내에 세트된다. 이 작동중 논리(216)는 처리기(62)를 그 연관 하드웨어로 부터 분리시키고, 여기에서 레지스터(404, 405)의 적재는 S/88 운영시스템에 대하여 투명하다. 그 외에도, S/370 운영시스템은 이러한 레지스터의 존재 또는 S/370 기억장치(162)에 접근하는데 그 이용을 알지 못한다.
제30도, 제32a도 및 제32b도는 기억장치 제어 인터페이스(155)에 의하여 이용되는 신호 I/O 회선을 도시한 것이다. 여기에는 STC 버스(157) 이외에 S/88 시스템버스(30), S/88 처리기(62) 및 S/88 CPU 기판(102)상의 논리(415)에 인터페이스 하는데 필요한 모든 회선들이 포함된다. 설명을 쉽게 하기 위하여 제8도의 송수신기(13)는 제32a도 및 제32b도 및 제32b도에는 도시하지 아니하였다.
(d) 데이타저장조작
캐쉬 제어기 장치(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 데이타 전송은 논리(401)에 의하여 상승되고 이 명령을 위한 모든 STC 버스 데이타 전송이 완료된 때까지 사이클마다 활동하게 된다. 저장할 때에는 STC데이타 전송은 취소명령이 발하여지지 아니하였음을(STC 유효 후 2 사이클까지) 확인할 때까지 발하여지지 아니하고, 따라서 명령은 FIFO로 이동되지 아니한다. 그러나, 이 시간중 논리(401)는 24 비트 주소를 레지스터(417)로 부터 레지스터(442)로 이동시키고 최초의 4 바이트 데이타가 장치(153)로 부터 레지스터 (417)로 전송된다. 그외에도, FIFO HF 및 AFE플래그(409)가 명령 버퍼(416)로 부터 해독된 바이트 전송 길이에 비교된다. FIFO 플래그는 사용중인 4개의 버퍼 깊이 범위중 1을 표시한다. 바이트 전송 길이+명령 단어 데이타의 4바이트가 FIFO 플래그에 의하여 표시되는 최악 버퍼 깊이에 가산되었을때 FIFO 64 단어 능력을 초과하는 경우에는 모든 STC 데이타 전송 활성화가 이러한 오버플로우 상태가 사라질 때까지 계속된다. 이것은 충분한 단어가 로 FIFO부터 이동되어 플래그 상태를 변동시키자마자 일어난다.
취소가 일어나지 아니하고 FIFO 오버플로우가 존재하지 아니하면 블록(401)으로 부터의 명령 해독이 레지스터(442)로 부터 멀티플렉서(447)를 경유하여 오는 24 비트 주소와 접합하여 FIFO(400)내에 저장된다. A/D 레지스터(417)로 부터의 후속 32 비트 데이타 블록은 일단 초기저장 명령이 FIFO로 이동되면 연속되는 사이클내에서 레지스터(442)를 거쳐 FIFO(400)내에 저장된다. 게이트(423)는 버스(30)로의 16비트 전송을 위하여 하위 16 비트를 상위 16 비트로 멀티플렉스 하는데 이용된다.
S 비트는 저장을 채취와 구별하는데 이용되고 C/A 비트는 제35호에서 보는 바와 같이 FIFO(400)내의 명령단어와 데이타 단어 사이를 구별하는데 이용된다. 패리티는 FIFO를 통하여 유지된다.
FIFO 입력 및 출력은 서로 다르게 클럭된다. 데이타는 S/370 클럭과 함께 FIFO(400)내로 이동되고 /88 클럭과 함께 FIFO 밖으로 이동된다. 타이밍은 FIFO(400)가 비어있을때 FIFO(60ns)의 최악폴드루 시간을 허용할 수 있게 세트된다. 제35도는 FIFO 명령 및 데이타 단어를 도시한 것이다. 여기에서
S=(1=/저장, 0=채취)
C/A=(1=Cmd/Add, 0=데이타)
P 01=바이트 0, 1 짝수 패리티
P 23=바이트 2, 3 짝수 패리티
LDW=하위데이타 단어 선택(상위단어에 멀티플렉스된 하우데이타 단어 ; 이 경우에는 P 01=P23)
64B OVFL=홀수주소 정렬로 인하여 초과된 16 단어전송 ; 추가 32 비트 데이타 전송 사이클이 필요하다.
32b, 16b, 8B, 4B=가중 바이트 전송 계수
TRL1, 0="트레일링"단어내의 유효바이트용 암호와(최종 32 비트 데이타 전송)
FIFO(400)의 입력/출력측에 있는 블록(401)내의 개별 순서기들은 FIFO내-외로의 전송을 추적한다. 출력 순서기는 실제로 현행 채취 또는 저장 명령을 위하여 계류중인 버스(30) 데이타 전송의 수를 추적한다. 일단 명령단어가 FIFO출력에 도달하면 C/A 비트=1이 논리(401)내에서 해독되고 이전의 명령이 아직 완료되지 아니하고 미결중에 있는 한, FIFO(400)로 부터의 S/370 실주소는 논리(422, 423)를 경유하여 베이스 레지스터(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)를 위하여 할당된 크기 구역을 초과하지 아니하는 경우에는 상의 4 비트가 논리(423)에 의하여 레지스터(404)내의 S/370 기억장소 기준값에 가산되고 버퍼(420)내의 하위 비트(19-1)에 접합되어 물리적 27 비트 단어 주소를 형성하고 이 주소는 S/370 구역(162)으로의 시작 S/88 주소로서 이용된다. 그렇지 아니하면 소프트 프로그램 건사가 보고된다. 64 바이트 주소 경제 크로싱은 시작주소에 대한 랩 어라운드로 끝나게 된다.
주소 U/D 계수기(421)는 출력되는 물리적 주소의 비트(5-2)를 보유하는데 이용된다. 그것은 출력 순서기와 동기화되어 클럭되며 정상적으로 증가되는 반면에, 사이클 응답단계의 Bus Busy 또는 Bus Error에 응답하는 때에는 감소될 것이다. 일단 출력 순서기가 적재되면 연관 논리는 Bus Error 및 Bus Busy에 응답하는 동안 논리(408) 경유하여 버스조정 허가에 근거한 저장사이클을 개시한다. 적당한 S/88 기능코드는 S/88 저장명령에 대응하는 논리(401)에 의하여 생성되며 기능코드는 조정사이클 요구가 허가된 때 버스 구조(30)의 A, B버스에 응용하기 위하여 레지스터(443)내에 배치된다.
출력 순서기는 통상적으로 허가가 있을 때마다 0에 이를 때까지, 즉 현재의 명령으로는 더 이상 전송할 바이트가 없음이 표시될 때까지 버스(30)에 대한 32 비트 전송에 있어서는 하나씩, 64 비트 전송에 있어서는 둘씩 감소된다.
사이클 정의 단계(back-to-back 허가)와 중첩된 사이클 응답 단계중 Bus Busy 또는 Bus Error의 경우에는 출력 순서기가 취소된 32 비트 전송에 있어서는 하나씩, 1트 전송에 있어서는 둘씩(채취에 한한다) 증가된다.
주소 U/D 계수기(421)는 취소된 32 비트 전송에 있어서는 하나씩, 64 비트 전송(채취에 한한다)에 있어서는 둘씩 감소된다.
데이타 출력 레지스터(425)는 출력되는 데이타를 일시 저장하기 위하여 사용된다. 데이타 출력 보류 레지스터(426)는 데이타를 후속 버스 오류(A 또는 B버스)로 인하여 재구동시켜야 하는 경유에 필요하다. 이 경우에는 후속 데이타(고위 주소에 대한)는 데이타 전송이 최초의 전송으로 부터 2 사이클 후에 반복하여야하기 때문에 버스 오류와 연관되어 있는 전의 사이클 데이타보다 더 일찍 받아들여서 기억장치(16, 18)에 저장하여야 한다(저장과는 달리 채취된 데이타는 순서외에는 수신할 수 없다.). 한편, 버스조정 논리(408)는 모든 전송이 버스(30)상에 개시되고 받아들여질 때까지 계속적으로 사이클을 조정한다. 조정 및 시스템버스(30)와 기억장치(16)에 대한 데이타 전송은 (b)항에서 이미 설명한 바와 같다.
끝으로 FIFO 설계는 통화중이 되기전에 64 비트까지(거의 4 그룹의 64 바이트 저장 전송)를 저장할 수 있다. 저장에 있어서 FIFO가 채워지지 아니하고 기억장치와 연관된 명령 및 데이타 단어를 받아들일 수 있는 한, FIFO는 채워질 때까지 계속적으로 적재된다. 따라서, STC Busy는 각 저장명령이 수행된 후 드롭되고 장치(153)를 릴리스시켜서 S/370 처리기(85)를 계속 수행할 수 있게 한다. 장치(153)내의 캐쉬 히트비가 높다고 가정하면 거의 64 바이트 기억장치의 동등을 FIFO 또는 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)에만 결합되어 있다.
비교논리(420g)는 버퍼(420)로 부터의 주소비트(27-6), 주소 U/D 계수기(421)로 부터의 주소비트, 수정 주소비트(1) 및 패리티 발생기 논리(445)로 부터의 패리티 비트, 레지스터(443)로 부터의 기능코드를 STCI(155a)로 부터의 대응비트와 비교한다. 잘못 비교된 경우에는 논리(402g)는 오류 신호를 중단논리(403)와 버스 A오류 및 B회선에 적용한다.
논리(402e)는 데이타 출력 레지스터(425)로 부터의 데이타 출력 비트를 STCI(155a)로 부터의 대응비트와 비교하고 잘못 비교된 신호들은 논리(403)와 버스 오류 A,B회선에 적용한다. 논리(402d)는 FIFO 논리(401)로 부터의 비트를 STCI(155a)로 부터의 대응비트와 비교한다. AND 게이트(446)는 STC Busy 신호가 회선(440)상에서 활동중인 동안에 STC Valid신호가 상승되면 논리(403)에 오류 신호를 제공한다.
(e) 데이타 채취 작업
채취명령은 전술한 바와같이 레지스터(416, 417, 442)와 FIFO(400)를 통하는 저장명령과 동일한 경로를 따른다. 차이점은 STC 데이타 전송 선호는 데이타가 기억장치(162)로부터 버스(30)를 경유하여 레지스터(428 또는 429)내에 수신되었음이 알려질 때까지 STC 버스 논리(408)상에 올라오지 아니한다는 점이다. 채취명령과 STC Valid 신호는 레지스터(417)에 수신 및 저장된다. 명령 및 그 초기억장소 주소는 레지스터(417)에 저장된다. STC 버스 논리(401)는 다음 STC 버스 사이클중 STC Busy신호를 발하여 STC Busy가 제거될 때까지 캐쉬 제어기(153)가 또다른 명령을 보내지 못하게 한다.
따라서, 채취명령이 수신되었을때 STC Busy 신호는 캐쉬 제어기(153)가 수신될 채취 데이타를 기다리고 있기 때문에 채취명령이 완전히 수행될 때까지 논리(401)에 의하여 유지된다. (저장주기중 STC Busy는 모든 저장 데이타가 제어기(153)로부터 FIFO(400)로 전송되자마자 이동된다.) 채취명령 주기중 STC Busy는 FIFO(400)내의 저장명령의 일부 또는 전부가 수행될 때까지 유지되어야 하며 그 다음에야 채취명령이 수행된다. 이때에 비로서 STC Busy가 이동하여 그 다음 명령을 STC (155)에 전송할 수 있다.
레지스터(416, 417)에 명령을 저장한 다음의 주기에서는 명령과 주소가 레지스터(442)내로 전송되고 그 다음에는 FIFO(400)내로 전송된다.
S/370 채취명령이 FIFO(400)의 최종 스테이지에서 수신되고 전술한 바와같이 출력-준비가 높은 때에는 C/A 및 기타 명령비트가 논리(401)내에서 해독된다. 해독된 S/370 명령비트에 해당하는 S/88 기능코드는 초정사이클 요구가 하기된 때에 버스 구조(30)에 응용할 수 있도록 레지스터(443)에 배치된다.
허가 및 후속 사이클 정의 단계와 사이클 응답 단계에 뒤이어 STCI(155)는 사이클 응답 단계중 버스 busy 또는 오류를 보고 받지 못한 것으로 가정하고 데이타 단계로 들어간다. 최초의 32비트는 비트(DP, UDS 및 LDS)와 함께 기억장치(16)와 파트너의 구역(162)내 적당한 위치로부터의 구조(30)의 A,B 버스상에 수신되고 버스(30)사이클의 후반을 시작하는 S/88 클럭에 의하여 레지스터(428, 429)내로 래치된다. 데이타는 Obey Both 또는 Obey A 방식이 활동중이라고 가정하고 레지스터(428)로부터의 다음 S/88 클럭 사이클(다음 버스(30)사이클의 시작)내의 버퍼(430)상에 게이트된다. 64비트 전송을 위하여 두번째 32비트는 이전 데이타의 버퍼(430)로의 전송과 동시에 레지스터(428, 429)내에 래치된다. 패리티 발생기(431)는 홀수 패리티를 430에 저장된 데이타 워드에 추가한다. 이러한 데이타와 패리티 비트는 수신된 UDS, LDS 및 DP비트와 함께 버스(435, 436)를 경유하여 논리(402c)에 응용된다. 논리(402c)는 이러한 비트들은 STCI쌍(155a)내에서 생성된 대응비트들과 비교한다. 이때 버퍼(430) 최초의 데이타 워드+패리티를 버퍼(432)에 게이트시켜서 버스STC(157)의 버스(406)를 경유하여 캐쉬 제어기(153)에 전송하기 위하여 다음 STC버스사이클중 구동되게 한다. 버퍼(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오류, 데이타의 잘못된 비교 또는 페리티 오류 등이 데이타 단계중에 일어나면 논리(402c)에 의하여 STC 주소/데이타 버스(406)상의 데이타와 함께 회선(433)상에 STC Data Invalid가 발하여진다. 그외에도, 후속 데이타가 데이타가 무효로된 주기후의 주기내에 도달하면 STCI SBI 논리에 의하여 이 데이타 주기에 뒤따르는 A, B버스상에 버스 오류 조건이 강제된다. 이에 의하여 데이타는 2사이클(즉, 버스오류가 보고된 후 1사이클)뒤로 다시 구동되고 이에 의하여 채취된 데이타를 순서대로 전송함으로써 버스상의 데이타 완전성과 기능성을 유지한다. A, B버스상의 버스 오류를 구동시키는 것은 "참"버스 오류에 대하여 ECC 오류 조건을 보고하고 이에 의하여 시스템 버스(30)상의 모든 제어기에 따라 버스 Obey논리에 변경을 야기시키지 아니하는 메모리(16)에 상당하는 것이다.
이와 마찬가지로 버스(435, 436)를 경유하여 들어오는 데이타와 검사 패리티를 비교하는데 이용되는 동일한 논리(402c)는 레지스터(428 또는 429)를 경유하여 시스템 버스(30)로부 역순환 데이타 비교를 수행함으로써 420e내의 데이타 출력비교의 결과를 검증하기 위하여 저장작업에서도 이용된다. 이것은 기판(101)상의 송수신기(13)문제를 더 빨리 식별하는데 도움을 주고 잘못된 비교가 있고 다음 버스 주기에서 버스 오류가 보고된 경우에는 기판중단논리(403)를 기억장치상에 세트시킨다. 그외에도 채취 및 저장 작업을 위하여 유효한 잘못된 비교에 대한 고장 조건을 만들어내는 모든 비교기 출력(402a-g)이 논리(403)내에 중단 조건을 발생시킨다. 중단의 초기 세팅은 A, B버스상에 버스 오류 신호를 생기게 함으로써 전사이클내에서의 데이타 전송을 반복하게 하는 한편, 전사이클내의 사이클 정의 단계가 포기된다.
채취에 있어서는 저장과는 달리 이전에 FIFO내에 있는 모든 명령이 장치가 STC Busy 회선(440)을 드롭시키고 또다른 명령을 받아들일 수 있기 전에 수행되어야 하며 현행 채취도 또한 같다. 캐쉬 제어기(153)는 또다른 저장명령이 발하여지기 전에 채취명령을 위한 데이타를 수시하여야 한다.
제36a도 내지 제36d도는 가용 판독/기록 사이클 타이프의 정의를 도시한 것이다. 여기에서
UU=상위 워드의 사위 바이트
UM=중간 워드의 상위바이트
LM=중간 워드의 하위바이트
LL=하위 워드의 하위 바이트
MEM 16=16 비트 메모리 사이클
MEM 32=32 비트 메모리 사이클
MEM 64=64 비트 메모리 사이클
LW=긴 단어(32비트)
UDS=상위 데이타 스트로브
LDS=하위 데이타 스트로브
장치(155)의 적당한 실시예에서는 하드웨어를 회소화하는데 역점을 두기 때문에 64비트 기록은 이용할 수 없다. S/370로부터의 32비트 저장 이송을 지원하기 위하여는 64×36 FIFO만으로 충분하다. 32비트 기록만을 사용함으로써 생기는 하나의 성능 제한은 인터리브 기억장치(16)내의 각 S/38메모리 기판 'leay'는 72비트 길이(64비트 + 8 ECC 비트)이기 때문에, 각 리프는 일단 기록상에 접근되면 3개의 추가(125ns) 주기중 busy상태로 머무르게 된다는 것이다. 이것은 동일한 리프는 연속 기록상에 5사이클(625ns)마다 한번씩만 접근될 수 있음을 의미한다. 모든 /370 32비트 기록은 연속주소용으로 정의도기 때문에, 이것은 동이한 64비트 경계내에서의 연속전송은 5사이클(625)마다 더 빨리 행하여질 수 없는데 비하여 서로 다른 64비트 경계상에서의 연속 125ns 사이클로(조정이 성공하였음을 가정하고) 행하여질 수 있음을 의미한다.
64비트 판독 사이클이 지원되며, 이 경우에는 연속판독이 동일한 리프에 접근하지 아니하는 한, 이 판독들은 연속 사이클내에서 수행될 수 있다. 기타의 경우에는 이 판독들은 2사이클(250ns)마다 수행될 수 있다. 각 32비트는 버스(30)로부터64비트 판독상에 62.5ns마다(즉, 매125ns 버스(30) 사이클마다 두번씩)수신되기 때문에 STC 버스와 버스(30)사이클 시간은 데이타가 수신된 후 시스템 버스(30)로부터 STC 버스(157)에 파이프 라인될 수 있도록 정합된다. 2개의 여분의 버퍼링 수준(버퍼 430, 429)와 함께 이용된다.
각 27비트 주소 및 각 4비트 기능코드는 버스(30)사이클 정의 단계중 수반 패리티 비트와 함께 송신된다. 32비트 데이타도 버스(30)데이타 단계중 그것과 연관된 패리티 비트를 캐리한다. 버스(30)상의 기본 125ns사이클은 정상 16 및 32비트 전송 뿐 아니라, 125ns 윈도우내의 64비트 판독전송도 허용한다. 선택적으로 추가 하드웨어는 STCI(155)내의 연속 64비트 기록전송을 지원하는데 이용될 수 있다.
S/370 I/O 지원(37도)
제37도는 S/370 I/O 기능을 지원하기 위하여 이용되는 S/88 하드웨어와 응용코드의 개관을 개략적으로 도시한 것이다. 하드웨어장치는 601, 6012, 615-619, 621 및 623-625이다. 스프트웨어 또는 펌웨어 루틴은 603-614, 620, 622 및 626이다.
이러한 몇개 소자들의 기능을 설명하면 다음과 같다. 블록(606)은 블록(606 내지 614)으로 구성되는 S/88 응용코드의 국제어이다. EXEC 370으로 알려져있는 이러한 블록들은 S/370 외부장치, 서비스, 구성, 조작원 콘솔 등의 모방 및 지원에 관한 모든 S/88 응용코드 기능을 수행한다.
블록(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)은 EXEC 370의 일부이고, S/370 프로세스와 블록(604)사이에 인터페이스 모방기능을 제공한다.
블록(601)은 2 BCU(156)가 포함되어 있는 S/370의 오류수정 작업을 위하여 특별히 기록된 S/370 목적코드가 들어있는 S/88 데이타 "패치 화일"이다. 이러한 "패치 화일"중 하나를 선택하고 그 블록(605)내에 적재를 할 수 있는 블록(604)에 의하여 제공된 디버그 패널이 있다.
블록(608-1)은 S/370의 모방을 담당한 코드로 구성되어 있다. 이 블록은 S/370 CCW의 채취, 블록(605)으로 또는 블록으로부터의 데이타 이동, S/370 I/O인터럽트 정보를 블록(603)에 대한 보고 및 적당한 제어장치코드 에뮬레이터의 선택을 수행한다. 하나 이상의 S/370 채널(예 : 608-2)이 있을 수 있으나, 동일한 코드가 이용된다.
블록(609-1)은 S/370 제어장치 에뮬레이터 코드이다. 시스템 370에는 여러가지 타이프의 제어장치, 즉 DASD 제어기, 테이프 제어기, 통신 제어기 등이 있다. S/370 제어기 기능은 블록(609-1) 및 개별장치 에뮬레이터(블록 610 내지 614) 사이에 분배된다. 블록(609-1)의 주목적은 주소분리 기능이지만 기타의 제어장치 특별기능은 블록(609-1)내에 상주한다. 그러므로 이러한 타이프의 블록(예 : 블록 609-2)이 하나이상 즉, DASD 제어기 에뮬레이터, 통신 제어기 에뮬레이터 등이 있으나, 지원받은 S/370 제어장치와의 1 : 1 통신은 없다.
블록(610)은 S/370 콘솔을 모방하는데 필요한 코드를 나타낸다. 블록(611)은 S/370 터미널을 모방하는데 필요한 코드를 나타낸다. 블록(612)은 S/370 판독기를 모방하는데 필요한 코드를 나타낸다. 이것은 표준 VM판독기를 본따서 만든 가상입력장치이다. 그것은 또다른 근원, 전형적으로 테이프 또는 디스켓으로부터 생겨난 순차화일의 입력을 제공한다.
블록(613)은 S/370 프린터를 모방하는데 필요한 코드를 나타낸다. 실제 S/88 프린터는 후의 풀 프린팅을 위하여 S/88 화일에 구동되거나, S/370 데이타를 이러한 S/88화일에 기록할 수 있다. 블록(614)은 S/370디스크를 모방하는데 필요한 코드를 나타낸다. 2개의 형식, 즉 계수, 키 및 데이타와 고정블록은 서로 다른 2세트 코드에 의하여 지원받는다.
블록(615)은 S/88 터미널, 전형적으로는 S/88 콘솔 출력장치를 나타낸다. 시스템/88 콘솔은 S/370에 3278 또는 3279 터미널로 나타나는 디스크상의 로그에 메시지를 등재하는 것 이외에 S/88 조작원 메시지와 S/370 조작원 메시지를 디스플레이한다.
블록(616)은 S/88 터미널을 나타낸다. 블록(617)은 S/88 디스크상의 S/88 순차 데이타 화일을 나타낸다. 블록(618)은 S/88 프린터 또는 S/88 디스크상의 순차 데이타 화일을 나타낸다. 블록(620)은 S/88 테이프 장치상 장착된 시스템/370 테이프를 읽고, 이러한 테이프가 원 S/370 테이프상에 나타날 때 이를 블록(617)으로 형식화하는 코드이다. 블록(621)은 S/370 기록 테이프가 장착된 S/88 테이프 드라이브를 나타낸다.
블록(622)은 퍼스널 컴퓨터로부터 /88내로 들어간 화일을 일고, 이 화일이 S/370 시스템상에서 생겼을 때 처음에 나타난대로 블록(617)내에 이를 형식하시키는 코드이다.
블록(623)은 S/88 및 시스템/370에 데이타를 송신하고 이로부터 데이타를 수신하도록 구성된 퍼스널 컴퓨터이다. 블록(624)은 S/370시스템이다. 블록(625)은 S/88 스풀 프린터를 나타낸다. 블록(626)은 S/88 화일을 모방된 시스템/370 DASD장치로 형식화하는 코드이다. 이것은 화일을 지원받고자하는 S/370 DASD중 어느 것에 형식화시키는 S/88 분리실행 타스크이다.
S/370 I/O 연산, 펌웨어 개관
시스템/370 I/O를 간략히 개관하면 다음과 같다. S/370 구조는 몇가지 타이프의 I/O 명령어, 프로그램시험가능 조건코드(CC) 기법 및 프로그램 인터럽트 기구를 제공한다. 개념적으로는 I/O 명령어는 'I/O 채널'쪽으로 향하게되고 이 I/O 채널은 다른 CPU처리와 병행하여 I/O 연산작업을 지시 및 제어하며 I/O 명령어가 수행되거나(조건코드를 경유하여) I/O 연산이 완료된 때(프로그램 인터럽트를 경유하여) 상태를 CPU에 보고한다.
S/380 명려어, 조건코드, 인터럽트 및 I/O 장치(DASD, 테이프, 터미널 등)은 긴밀하게 구성되어 있다. 그러나, I/O 채널은 설계 래티튜드를 제공할 수 있도록 느슨하게 구성되어 있고 여러가지 다른 구현도 존재한다.
고장허용한계 시스템/370의 광의적인 개량은 S/370 CPU(주문형 펌웨어가 달린 칩 세트)와 /88 및 운영시스템(OS)의 타임 슬라이스로 구성되는 '의사 I/O 채널'이며 S/370 I/O 장치 에뮬레이션과 시스템 콤플렉스의 전면 통제를 제공하는 특별 펌웨어와 응용레벨 소프트웨어(EXEC 370)이 추가된다. 이러한 콤플렉스의 S/88 부분은 고장허용한계 CPU, OS, I/O 장치, 전원/패키징, 버스 및 메모리를 제공하며 S/370 CPU는 하드웨어 중복 및 추가되는 비교논리를 통하여 고장허용한계를 만든다.
요구되는 주문 펌웨어(즉, 마이크로 코드)는 다음의 두 그룹으로 된다.
a. S/88 처리기(62)상에서 실행되는 S/88 BCU-드라이버 펌웨어(ETIO)-BCU/DMAC 하드웨어, 인터럽트 서비스 및 상태 오류조정의 초기화 및 제어를 위한 루틴
b. S/370 마이크로 코드- I/O명령어. I/O 인터럽트 조정 및 리세트, IPL, 정지 등의 인보케이션과 같은 일부 특별제어
여러가지 펌웨어 조작의 문맥을 이해하는 하나이 방편으로서 전형적인 I/O 연산에서 일어나는 간단한 사건순서, 즉 80바이트 메시지의 모방된 S/370 3278 디스플레이 터미널에의 S/370 기록을 고찰하여보면 다음과 같다.
이 실시예에 있어서 초기화가 이미 행하여졌다고 가정하면, S/370과 S/88은 정상적으로 작동하고 다른 S/370 I/O 연산은 진행되지 아니하며 참조는 제43도 및 제19a도 내지 제19C도로 향하게 된다. PE(62)와 BCU(156)의 소자 사이의 데이타/명령 전송은 제20도와 관련하여 전술한 "분리"기구를 이용하여 수행된다. 제43도의 흐름도는 이러한 전형적 시작 I/O 연산을 개략적으로 도시한 것이다.
a. S/370 처리기(85)는 시작 I/O(SIO) 명령어를 말한다. (적당한 실시예에서는 칩 세트(150)내의 모든 I/O 명령어가 마이크로 코드화된다.)
b. SIO용 주문 펌웨어가 임보크(invoke)된다. 그것은 몇개의 파라미터를 고정우편함 위치(188)내 (S/370 주메모리의 IOA구역내)로 이동시키고 BCU(156)에 대한 서비스 요구(PU- BCU 요구)를 송신하고 응답을 대기한다.
c. BCU 하드웨어는 청구를 검색하고 S/370 IOA 고정위치로부터의 16바이트 우편함을 판독할 명령을 발생시킨 다음에, BCU-PU ACK 를 경유하여 요구를 리세트시킴으로서 S/370 처리기(85)에 응답한다. ('요구가 서비스 받음'을 의미한다.)
d. S/370 처리기(85)내에서는 SIO 펌웨어가 릴리스되어 SIO 명령어를 종료시키고 다음 순서 명령어에서 처리를 속행한다.
e. S/370 하드웨어를 사건 'c'의 결과로서 사건 'd'와 함께 우편함 데이타의 16바이트를 버스(170)를 경유하여 어댑터(154)내의 BCU 인터페이스 버퍼(259)에 전송한다.
f. 데이타가 버퍼(4바이트 블록으로)되면서, BCU 하드웨어는 반복하여 DMAC(209)(채널 0)에 우편함 데이타(4 바이트 블록으로 되어있는)를 지역기억장치(210)내의 작업대기행렬 블록으로 이송하도록 신호를 보낸다.
g. 16바이트 전송이 완료되면 DMAC(209)는 S/88 처리기(62)에 인터럽트(NOTIFY, 제43도)를 제시하고 그 다음에는 다음의 링크 리스트 항목을 적재함으로써 앞으로의 우편함 작동을 준비한다. 이러한 인터럽트는 처리기(62)에 대한 8개의 DMAC인터럽트 중 하나, 즉 "정상"DMAC 채널(0)인터럽트이다.
h. S/88이 DMAC인터럽트(마스킹으로 인하여 예상되는 지연에 따라)를 인수하였을 때, 주문 펌웨어 서비스 루틴(ETIO 내의)이 수행된다. 그것은 DMAC(209) 상태를 검사하고 링크 리스트에 대한 참조로 방금 수신한 작업대기행렬 블록을 찾아내고 이 블록을 EXEC 370 응용프로그램으로 통과시키기 위하여 대기시킨다.
i. EXEC 370은 작업대기행렬을 검사하고 작업대기형렬 블록의 대기를 풀고 작업대기행렬 블록내에 데이타 요구를 구성하고 펌웨어 루틴을 호출하여 데이타의 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인터럽트중 하나이다.
l. 펌웨어 인터럽트 서비스 루틴은 다시 DMAC 상태를 검사하고 WORK QUEUE블록을 EXEC 370용으로 대기시킨다.
m. EXEC 370은 필요한 데이타 전환을 행한 다음에 S/88 의 서비스를 이용하여 모방된 3278 터미널에 데이타를 기록한다. 얼마 후 이 작업의 종료(정상 또는 오류)를 통지받고 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)으로부터 펜딩 인터럽트 대기행렬로 이동되고 또다른 주문 펌웨어가 채널이 다음에 인터럽트용으로 이용가능하게 되었을때 이를 서비스한다. 마스크되지 아니한 경우에는 이 펌웨어는 S/370의 문맥을 프로그램의 인터럽트 루틴으로 즉시 전환시킨다.
개량된 FT 시스템을 개관하여 보면, 부착 조속 I/O 처리기로서의 S/88 역할을 개념화하게 되며, 이는 S/370용의 I/O 조정기 또는 의사채널이다. 그러나, 실제로는 처리기들 사이의 기본 통신은 모두 S/88로부터(설계상) 개시되어야 한다. S/88은 또한 EXEC 370을 경유하여 모든 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 명령어는 어떤 행동을 개시하게 할 수 있어야 하며, 이러한 설비는 PU-BCU 요구회선(256a)에 의하여 제공된다. 이는 S/370이 S/88을 대기하는 고우선순위 메시지(통상적으로 I/O 명령어)를 가지고 있음을 의미한다. 이러한 서비스 요구의 우선순위 성격은 자동 우편함 기법과 DMAC 채널(O)의 링크 리스트 프로그래밍을 위한 이유이다.
DMAC(209) BCU 하드웨어 설계의 일부이다. 그것은 S/88 펌웨어에 의하여 초기화되고 기본적으로 제어되며 데이타 전송은 각 채널별로 하나씩 4개의 요구(REQ) 입력회선(263a-d)을 구동하는 BCU논리에 의하여 페이스가 조정된다. 그외에도 외부 BCU논리는 각 우편함 전송이 종료됨에 따라 채널(O) PCL회선(257a)을 활성화시킴으로써 DMAC(209)가 S/88 처리기(62)에 인터럽트 요구를 제시하게 한다.
S/370과 S/88 사이의 기본 데이타 전송 작동은 다음과 같이 4가지가 있다.
크기 어댑터(154) DMAC(209) DMAC
채널 채널 작동타이프
1. 우편함 판독 16 연속
바이트 0 0 링크 리스트
2. 데이타 판독 1-4096 시작-중지
바이트 0 1 사전 비움
가능
3. 데이타 기록 1-4096
바이트 1 2 시작-중지
사전비움
가능
4. 메시지-Q 기록 16
바이트 1 3 시작-중지
DMAC(209)의 초기화 및 프로그래밍은 완전히 표준이며 MC 68450 구조에 일치하는 것이 바람직하다. 이를 요약하면 다음과 같다.
4 채널-단어(16비트)전송크기, REQ 회선이 전송제어, 기억장치(210)내의 메모리주소 합계, 장치(BCU데이타 버퍼 레지스터) 주소는 계수되지 아니함. 인터럽트 가능, 보류없는 사이클 도용. 긍정응답/묵시적으로 주소지정/단일 어드레싱 방식을 가진 장치, 16비트 장치 포트, PCL=상태 입력
상기 이외에,
CH 0 : 장치-메모리(기억장치 210) 전송, 링크 배열 연쇄화
PCL=인터럽트를 가진 상태 입력
CH 1 : 장치-메모리(기억장치 210) 전송, 연쇄화없음
CH 2 3 : 메모리(기억장치 210)-장치 전송, 연쇄화없음
DMAC는 장치가 16비트 데이타를 가진 것으로 '생각'하지만 외부논리가 32비트를 전송하게 한다. CH O(DMAC 209의 채널 0)내에 이용되는 링크 배열 체이닝 방식은 링크 리스트가 존재하고 ETIO 초기화 루틴에 의하여 설정되었음을 암시한다. 일단 CH 0가 시작되면 오류조건 또는 링크 리스트내의 최종 유효엔트리와의 맞남에 의하여서만 중지한다. 정상작동에 있어서는 DMAC(209)가 우편함 판독을 완료할 때마다 S/88에 대한 인터럽트가 생기고 펌웨어는 실시간에 링크 리스트를 모니터하고 다시 채운다. 따라서, 리스트의 최종 유효엔트리는 결코 도달되지 아니하고 CH 0는 계속적으로 실시(유효)된다.
각 DMAC채널에는 2개의 인터럽트 벡터 레지스터(NIV, EIV)(제18도)가 제공되어 있고 그중 하나는 '정상작동 끝'용이고 다른 하나는 탐색된 오류에 의하여 강제된 끝을 위한 것이다. 이 개량은 마이크로 코드 기억장치(174)내의 8개의 분리 ETIO인터럽트 루틴을 가진 8개의 벡터를 이용한다. 추가로 채널(0) 정상인터럽트는 2개의 예상의미, 즉 PCL에 의하여 '수신된 우편함' 및 소수공통의 '링크 리스트의 종단으로 인하여 중지된 채널'을 가진다. 인터럽트 조정기는 DMAC 상태 비트를 검사함으로써 이것들을 구별한다.
S/88 펌웨어는 EXEC 370 응용프로그램을 위한 4개의 서비스 엔트리, 즉 PCL초기화 및 전술한 3가지 기본데이타 전송, 즉 데이타 판독, 데이타 기록, 메시지 Q기록등을 제공한다.
ETIO-INITIALIZE 엔트리는 통상적으로 파우워-엎 후 즉시 호출되지만 오류회복기도를 위하여 재초기화하는데에도 이용될 수 있다. 이 엔트리는 BCU 하드웨어와 DMAC(209)를 리세트시킨 다음에 구성 및 제어값을 가진 4개의 채널내에 있는 DMAC레지스터를 프로그램한다. 이 엔트리는 필요한 링크 리스트를 작성하고 채널(0)을 시작함으로써 DMAC(209)로 하여금 최초의 링크 리스트 파라미터 세트를 자동 적재시킨 다음에 회선(263a)상에 있는 BCU하드웨어로부터의 요구 전이를 대기한다.
다른 3개의 서비스 엔트리가 호출되어 DMAC 채널 1(데이타 판독), 2(데이타 기록) 및 3(메시지 Q기록)이 시작된다. 호출 프로그램(EXEC 370)은 데이타 주소, 계수등이 미리 세트되어 있는 WORK QUEUE블록에 포인터를 제공한다. 이러한 루틴은 DMAC(209) 및 BCU 하드웨어를 즉시 시작하거나 요구받은 DMAC 채널이 통화중인 경우에는 작동을 대기시킨다. (제41e도에 도시한 분리 '작업계류'대기행렬은 이러한 3개의 채널마다 유지된다.) 일단 요구된 서비스가 시작되거나 대기되면 제어가 호출프로그램으로 복귀되고 인터럽트 조정기는 종료에 이르기까지 작동을 계속한다.
S/88 주문 펌웨어중 작으면서도 매우 중요한 제3구역은 개의 DMAC인터럽트를 주문 조정기에 인터셉트 및 벡터하되 S/88 OS에 대하여 투명한 S/88 OS(운영시스템)의 수정이다. 이것에는 레벨(6)용 OS(이것은 통상적으로 전원고장용으로 자동 벡터된다.)내의 표준구성 MC 68020 벡터 테이블의 수정과 주분 인터럽트 조정기를 OS내로 배치하는 것이 포함된다. 이것이 적당한 구현이지만 아래에서 설명하는 바와같이 인터럽트용 초기화 루틴에 관한 부분에서는 논리가 BCU(156)내에 제공되어 벡터를 지역버스(223)상에 배치함으로써 벡터 수정의 필요를 제거한다.
적당한 실시예용의 S/88 펌웨어는 모두 MC 68020 어셈블러어로 기록되기 때문에, 마이크로 코드라고 말할 수 없다. 그것은 그 기능의 성격상 펌웨어로 본다.
S/370 처리기(85)용으로 필요한 주문 펌웨어는 다음의 4종류가 있다.
1. S/88 의사채널로 가는 마이크로 코드화된 I/O 명령어
2. I/O 인터럽트를 포함하여 S/88로부터 오는 비동기 메시지의 조정
3. 모든(모방된) S/370 I/O 장치의 구성 데이타 상태의 유지
4. 사용자 수동연산의 서브세트 구현
이러한 특별 펌웨어는 모든 /370 마이크로 코드로 기록되고 가능한 경우에는 어디에서나 기존기능 서브루틴을 사용한다.
S/370내에는 10개의 I/O 타이프 명령어가 있으며, 이에 대하여 제44a도 내지 제44i도의 설명과 관련하여 더 상세히 토의한다.
CLRCH-지음 채널(채널 전용op)
CLRIO-지음 I/O
HDV-정지 장치
HIO-정지 I/O
RIO-개요 I/O
SIO-시작 I/O
SIF-시작 I/O 고속
STIDC-저장 채널 (채널 전용 op)
TCH-검사 채널(채널 전용 op)
TIO-검사 I/O
이러한 명령어들은 각각 S/370 구조와의 일치성을 유지하면서 우편함 기구를 거쳐 주요 정보를 모두 S/88내의 EXEC 370으로 통과시킬 수 있도록 마이크로 코드로 구현되어 있다.
어댑터(154)내의 몇개의 서로 다른 하드웨어 조건은 S/370 처리기(85)내의 몇가지 마이크로 코드 '강제에외'의 예상 사유중 하나인 '어댑터 주의 환기'요구를 활성화시키게 된다. 마이크로 코드에 의한 이와같은 예외의 세비스는 S/370 명령어 사이에서 (PE(85)가 대기상태에 있는 경우에는 즉시)일어난다. 가장 빈번하고 공통된 '어댑터 주의 환기' 사유는 PE(85)가 I/O 의사 채널 S/88로부터 S/370 주메모리 IOA 부분의 고정메시지 Q구역(189)으로 보내는 메시지를 수신하는 것이다.
기존 S/370 마이크로 코드 예외 조정기는 '어댑터주의 환기'경우를 위하여 수정된다. 코드는 어댑터(154)상태를 검사하여 청구의 사유를 결정하고 'Q-not-empty'(메시지 수신을 의미한다.). 조정만을 주문하며 다른 사유는 조정을 위하여 수정되지 아니한 기록코드로 복귀한다.
수신 메시지의 정의된 카테고리는 다음과 같다.
0000 NOP : 연산 없음.
0001 RESET : 기존 S/370 프로그램 리세트 루틴을 불러내라.
0002 CLEAR RESET : 기존 S/370 지움 리세트 루틴을 불러내라.
0003 HALT : S/370 프로그램 수행을 전지시키고 ISTEP 방식으로 전환시켜라.
0004 STEP : 명령어 단계, 하나의 명령어를 수행한 다음에 정지하라.
0005 RUN : ISTEP방식을 리세트시키고 프로그램의 수행을 재개하라.
0006 LPSW : 메시지내에 제공된 PSW를 이용하여 S/370 'Load PSW'기능을 수행하라.
0007 SMSG : 상태 메시지-하나 이상의 구성 I/O 장치를 위하여 지역(IOA)장치상태 테이블내의 상태비트를 갱신하라.
0008 IMSG : 인터럽트 메시지-채널 마스트 상태에 따라 S/370 I/O 인터럽트를 대기시키거나, 즉시 제공하라.
위의 메시지 타이프(0001-0006)는 모방된 S/370 시스템 콘솔에 있는 사용자 입력에서 생기는 상태 제어용 S/370 수동연산이다. 이 메시지 타이프들은 오류 회복 또는 동기화를 위하여 필요하게 될때 EXEC 370에 의하여 직접으로 강제될 수 있다. 메시지 타이프(0007)는 전원손실, ON/OFF-LINE 변경, 장치탐지오류 등과 같은 I/O 장치의 비동기적 상태변화를 S/370에 통보하는데 이용된다. 그것은 S/88로부터 S/370으로의 일반목적 통신용으로도 확장될 수 있다. 메시지 타이프(0008)는 I/O 연산상태 종료를 S/370-정상 또는 오류 종단 조건-에 보고하는 매개체이다. 그것은 언제나 S/370내의 경우에 따라 일어날 수 있는 프로그램 인터럽트 및 장치상태 테이블 수정으로 끝나게 된다.
ETIO 및 EXEC 370 기능, 인터페이스, 프로토콜 및 명령어 흐름의 세부사항 중 일부를 설명하면 다음과 같다.
시스템 마이크로 코드 설계
1. 개요
제38도는 이 개량의 적당한 실시예용 마이크로 코드 설계를 도시한 것이다. S/370 처리장치(85와 같은 각 처리소자)내에서 실행되는 코드는 제어장치(171)내에 보관되고 S/370 명령어 PE(85)에 의하여 수행되는 때에는 이를 해석한다. 시작 I/O, 인터럽트 조정, 조작원 기능, 기계 검사 및 초기 마이크로 프로그램 적재/프로그램 적재(IML/IPL)용의 마이크로 코드화 명령어는 특히 도면에 도시된 바와같이 S/88 마이크로 코드와 인터페이스되도록 설계되어 있다. 인터페이스에는 지역기억장치(210), S/370 캐쉬(340) 및 2개의 처리기(85, 62)의 마이크로 코드에 대한 인터럽트 능력을 가진 S/370 실저장공간(162)을 포함한 인터페이스논리(81)의 공통 하드웨어 설비가 포함된다. S/88 코드에서는 S/370 마이크로 코드 드라이버에 CCW 변환, 인터럽트 조정기, 오류 조정기, IML/IPL 및 S/88응용 인터페이스(EXEC/370) 및 S/88 OS와 상호작용하는 동기화 코드가 포함되어 있다.
고장허용한계 처리기(62)는 시스템용의 I/O, 진단, 고장 고립, IPL/IML, 동기화를 수행한다. 이 시스템은 S/370 프로그램이 사용자의 견지에서 수행하는 유일한 프로그램이기 때문에, 공동처리기 시스템으로는 보지아니한다. 시스템 관리자는 S/88 고장허용한계 운영시스템을 통하여 시스템 속성을 제어할 수 있다. S/88 OS와 응용 EXEC 370의 기본 기능은 다중 370 채널 외관을 가진 I/O 변환이다. 모든 시스템 오류 및 회복 기능과 동적 자원할당 기능은 S/88 OS에 의하여 조정된다. S/370 OS에 의하여 이전에 조정된 기계 검사 및 조작원 기능은 이제 S/88로 통과되기 때문에, 이 기능들은 고장허용한계식으로 다룰 수 있다.
제39도는 S/370 I/O명령, 이 실시예에서는 시작 I/O 명령의 수행을 도시한 것이다. S/370 명령어, S/370 마이크로 코드, 결합 하드웨어(PE 85, PE 62) 결합 마이크로 코드 ETIO(TE 62상에서 수행되는) 및 S/88 프로그램 EXEC 370 등이 취하는 활동을 간략히 도시하였고 최종단계는 S/88 처리기(PE 62)상에서 S/370 SIO를 수행하는 것이다.
제40도는 SIO 수행중 이용되는 EXEC 370과 마이크로 코드 드라이버와 관련하여 제어 흐름, 데이타 흐름, 신호 및 하드웨어/코드 분할과 함께 개량 시스템의 소자 및 기능의 일부를 간략히 설명하는 개관이다.
2. ETIO/EXEC 370 프로그램 인터페이스-제41a도 내지 제41h도, 제42도
이 항에서 사용하는 용어는 다음과 같다.
EXEC 370-S/370 외부장치, 서비스, 구성, 조작원 콘솔 등의 에뮬레이션 및 지원에 관한 FE 62에서 실행되고 마이크로 코드 기억장치(174)내에 저장되어 있는 모든 S/88소프트웨어. 드물게 이용되는 EXEC 370코드는 캐쉬(173)내에 저장할 수 있다.
S/370 MICROCODE-S/370 처리기 작동을 지원하는 S/370 처리기(85)내에서 실시되고 기어장치(171)내에 저장되는 마이크로 코드
ETIO-EXEC 370과 BCU(156) 하드웨어 사이의 마이크로 코드 인터페이스로서 기억장치 (174)내에 보류되어 있는 마이크로 코드 인터페이스
S/370 PE(85) 마이크로 코드와 EXEC 370은 제41a도의 "프로토콜"을 경유하여 서로 교신한다. PE(85)마이크로 코드는 I/O와 같은 기능의 수행을 요구하는 EXEC 370에 메시지를 송신하고 EXEC 370은 I/O기능의 완료를 표시하는 메시지, I/O장치 및 채널 상태 변경에 관한 메시지 및 PE(85) 마이크로 코드에 특정한 S/370 CPU 기능을 수행하도록 요구하는 메시지를 송신한다.
이러한 메시지 (다음에 상술하는)는 캐쉬 제어기(153), 어댑터(154), BUC(156) 및 DMAC(209)등을 포함하는 하드웨어를 경우하여 PE(85) 마이크로 코드와 EXEC 370사이에 전송된다. 이 메시지 전송 서비스는 ETIO에 의하여 EXEC 370에 이용할 수 있게 된다. ETIO와 EXEC 370 사이의 인터페이스와 PE(85)마이크로 코드와 EXEC 370 사이의 프로토콜을 설명하면 다음과 같다.
EXEC 370, S/88에 의하여 수행되는 S/370 외부자원 소프트웨어, PE(62)상에서 실행되는 BCU 마이크로 코드 드라이버(ETIO) 사이의 인터페이스(제41b도)는 기억장치(210)내에 상주하는 한 세트의 대기행렬과 버퍼, 하나의 시간(id), EXBUSY 변수 및 서브루틴 콜 순서 등으로 구성된다. 서브루틴 CALL 인터페이스는 S/88과 S/370 사이의 데이타 전송작동을 개시하고 S/88 리부트 시간에 DMAC(209)와 BCU(156)를 초기화 한다. 대기행렬 인터페이스는 작업항목이 처리될때까지 작업항목의 트랙을 유지하는데 이용되며 사건 ID 인터페이스(S/88에 대한 인터럽트)는 작업이 대기행렬에 추가되었을때 EXEC 370에 통지한다.
기억장치(210)에는 16개의 4KB 블록(500)이 있다. (제41c도) 14개(500-0 내지 500-13)는 4KB 블록 버퍼로서 이용된다. 나머지 2개는 32개 256 바이트 블록(501-0 내지 501-31)로 나누어진다. 4개의 블록(501-0 내지 501-3)은 하드웨어 통신용으로 이용되고 하나(501-4)는 대기행렬(Qs)과 EXEC 370 및 ETIO에 공통인 기타 변수용으로 이용된다. 나머지 27개는 작업 큐 버퍼(WQB)(501-5 내지 501-31)로서 이용된다. 블록(501-0, 501-1)에 상당하는 주소 공간에서는 BCU(156) 명령(PE 61에 의하여 수행되는)은 256 바이트가 지정되고 DMAC레지스터 주소는 BCU(156) 작동에 관하여 설명한 바와같이 PE(62)에 의하여 접근되도록 256 바이트가 지정된다. 27개의 작업 큐 버퍼는 각각 하나의 특정한 디크스 또는 서비스 요구에 관한 데이타를 보류한다. 26개의 WQB는 PE(85) 마이크로 코드 개시 요구를 서비스하는데 이용된다. 나머지 WQB(EXWQB)(501-3)는 S/88에 의하여 발생되고 PE(85) 마이크로 코드에 송신되는 요구를 서비스하기 위하여 가정되며 결코 자유 Q상에 나타나지 아니한다.
각 WQB(WP41d)에는 16바이트 우편 블록(505), 16바이트 파라미터 블록(506) 및 224 바이트장치 특정 작업 구역(507)이 들어있다. 우편 블록(505)에는 EXEC 370과 PE(85) 마이크로 코드 사이를 통과하는 데이타가 들어있다. 그 내용은 ETIO 인터페이스를 횡단하여 투명하다. 파라미터 블록(506)에는 통상적으로 지역기억장치(210)와 주기억장치(162)사이의 데이타 전송에 관하여 ETIO와 EXEC 370 사이를 통과하는 데이타가 들어있다. 작업구역(507)은 EXEC 370에 의하여 소유된다. 이 작업구역에는 요구된 연산의 진행, 현재의 S/370 장치상태, 예상되는 사용자 데이타, S/88 장치의 타이프, 다른 EXEC 370 제어 블록에 대한 포인터, 오류발생 정보 등에 관한 정보가 들어있다.
우편 블록(505)은 PE(85) 마이크로 코드와 EXEC 370 사이를 통과하는 S/370 I/O 정보가 들어있는 다음의 4개 필드를 포함한다.
OP-이 필드에는 EXEC 370 또는 PE(85) 마이크로 코드로부터의 요구가 들어있다.
CUA-16비트 채널장치주소
CAW-관련 I/O 명령어가 발하여졌을때 S/370 기억장치(162)내의 6위치(48)의 32비트 S/370 채널 주소 단어
CCW-위의 CAW에 의하여 주소 지정된 S/370 채널 명령단어. EXEC 370이 인터럽트 표시를 복귀시키면 이 필드에는 DSW S/370 채널 상태 단어가 들어있다.
파라미터 블록(506)에는 EXEC 370에 의하여 기억장치(210)와 주기억장치(162) 사이에 데이타 전송이 요구되었을때 이용되는 6개의 파라미터가 들어있다.
1. req-ETIO 요구 필드 :
0 : 연산없음
1 : 기억장치(162)내의 PE(85)메시지 대기행렬(189)내의 우편 블록 내용을 기록한 다음에 BCU to PU요구를 회선(256a)상에 발하라.
2 : S/370 메모리로부터의 데이타를 판독하라.
3 : S/370 메모리로의 데이타를 기록하라.
2. ret-"req"필드에 의하여 행하여진 요구의 결과, 이 필드는 EXEC 370에 의하여 처음에는 0이 되도록 보장된다. 비 제로로 회귀되면 ETIO는 어떤 타이프의 오류를 표시하는 것이다.
3. COUNT-전송될 바이트의 수
4. S/370-S/370 구역내에서 데이타 구역이 시작되는 ADDR위치. 이것은 반드시 CCW주소 필드 값은 아니다.
5. Key-이 16비트 필드에는 다음의 비트 패턴이 포함된다.
PPKKKK10 00000000
여기에서 PP(우선순위)=00이고 KKKK=적절한 S/370 기억장소 보호키이다.
Buff-기억장치(210)내에서 데이타 구역이 시작되는 Addr위치. 그것은 4K버퍼 또는 WQB내에 있을 수 있다. EXEC 370은 다음의 관계를 보장한다. (S/370 ADDR모듈로 4)=(Buff Addr모듈로 4)
EXEC 370은 WQB를 유지하기 위하여 대기행렬을 이용한다. 대기행렬 통신구역(501-4)은 256 바이트 길이이고 기억장치(210)내의 오프셋(400)(hex)에 상주한다. 제41e도는 WQB로의 포인터 엔트리를 보류하기 위하여 ETIO와 EXEC 370 사이의 정의된 대기행렬을 도시한 것이다. 즉,
free Q(510) 동시에 이용되지 아니하는 WQB에 대한 포인터를 보류한다.
work Q(511) EXEC 370에 의한 서비스를 대기하는 WQB에 대한 포인터를 보류한다.
제41e도는 대기행렬을 통하는 WQB의 경로를 도시한 것이다. 모든 대기행렬은 S/88 리부트 중 EXEC 370에 의하여 초기화 된다. 빈 WQB는 free Q상에 유지된다. ETIO는 링크 리스트(516)를 채울 필요가 있을 때에는 이러한 WQB를 자유 Q로부터 이동시킨다. DMAC(209)는 링크 리스트(516)를 경유하여 S/370 우편함 엔트리를 기억장치(162)의 우편함 구역(188)으로부터 빈 WQB의 우편 블록 구역내에 배치한다. 채워진 링크 리스트상의 WQB는 ETIO에 의하여 작업 Q(511)로 이동된다. ETIO가 하나(또는 2이상)의 WQB를 작업 Q(511)상에 놓고 EXEC 370에 통화중이 아닌 때에는 ETIO는 EX 370 사건(ID)을 통지한다. EXEC 370은 작업가 요구를 서비스하기 전에 WQB를 작업 Q로부터 이동시킨다.
요구 처리중 데이타는 캐쉬 제어기(153)와 버퍼(WQB 또는 블록 버퍼) 사이로 전송되거나 PE(85) 마이크로 코드로 송신되어야 할 것이다. ETIO는 이러한 서비스를 EXEC 370에 제공한다. EXEC 370은 ETIO를 호출하고 ETIO는 적당한 BCU(156)연산을 개시하거나 하드웨어 자원이 통화중이면 WQB를 적당한 S/370 상에 놓는다. 3가지의 서비스(메시지를 S/370으로 전송, 데이타를 S/370으로 전송 및 데이타를 S/370으로부터 전송)는 각각 그 자체의 대기행렬(512, 513, 514)를 가진다. WQB는 EXEC 370 드레드(threas)상에 있는 동안 ETIO코드에 의하여 S/370 큐의 하나에 가산된다. I/O 서비스가 완료된 때에는 ETIO 인터럽트 루틴은 WQB를 S/88 Q(515)상에 놓고 EXEC 370이 통화중이 아닌 경우에는 EX 370 사건(ID)을 통지한다.
제42도는 WQB가 EXEC 370, ETIO, 인터페이스 하드웨어(89)와 S/370 마이크로 코드 사이의 인터페이스와 함께 대기행렬을 통하여 이동하는 것을 도시한 것이다. 원작업 요구가 완료되었을때, 즉 데이타 전송이 완료되었을때 IO인터럽트(있는 경우에는)는 PE(85)로 송신되고 EXEC 370은 WQB를 자류로 복귀시킨다. EXEC 370는 먼저 S/88 Q(515)를 그 다음에 작업(Q511)을 검사함으로써 그 다음 타스크에 착수한다. 2개가 모두 비어있을 경우에는 EXEC 370은 EXBUSY변수를 제로에 세트시키고 EX 370 사건의 통지를 대기한다. 통지가 있는 때에는 EXEC 370은 처리를 시작하기 전에 EXBUSY를 1에 세트시킨다.
모든 대기행렬, EX 370 사건(ID) 및 EXBUSY변수는 제41f도에 도시한 바와같이 기억장치(210)의 대기행렬 공동구역(501-4)내에 상주한다. 각 대기행렬은 제41g도에 도시한 바와같이 성질상 원형이며 2개의 인덱스형 포인터, 즉 채움 인덱스(517)와 빈 인덱스(518)가 있다. 채움 인덱스(517)은 채워야 할 다음 대기행렬 엔트리를 가르키고 빈 인덱스(518)는 비워야 할 다음 엔트리를 가르킨다. 빈 인덱스가 채움 인덱스와 동일한 경우에는 대기행렬은 비어있다. 6개의 대기행렬은 각각 32개의 엔트리를 가지며 27개의 WQB만이 있기 때문에, 결코 오버플로우되지 아니한다.
각 대기행렬에는 다음도 포함되어 있다.
qid이 대기 행렬을 식별한다.
Q SIZE이 대기행력(n)내의 엔트리 수
Q(i) 대기행렬내의 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 omot
etio (wbn)
EXEC 370은 초기화 중에 S/88 리부트 당 1회씩 etio init를 호출한다. 대기행렬은 이미 초기화되어 있고 사건(ID) 필드는 유효하게 된다. PE(85) 마이크로 코드는 아직 작동하지 아니하지만 IML(초기 마이크로 프로그램 적재)과정중에 있게 된다.
EXEC 370은 데이타 또는 메시지를 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/370 1, S/370 2, 또는 S/370 3 상에 대기시킨다. ETIO인터럽트 루틴은 전의 연산이 완료된 때에는 적당한 S/370로부터 다음 WQB를 대기 해제한다.
req 필드에 1이 들어있는 경우에는 PE(85) 마이크로 코드는 우편 블록 엔트리가 기억장치(162)의 S/370메시지 대기행렬 구역(189)내에 있을 때까지 통지(예 : 인터럽트에 의하여)를 받아서는 아니된다.
S/370 메시지 큐(189)가 채워진 경우에는 Parm블록의 ret 필드내의 오류는 EXEC 370에 대한 문제를 식별한다. 필요한 경우에는 EXEC 370은 예비 큐 지원을 제공할 수 있다.
3. EXEC 370, S/370 마이크로 코드 프로토콜
EXEC 370과 S/370 마이크로 코드 사이의 통신에는 S/370 기억장치(162)내의 각 I/O 장치별로 하나의 엔트리를 가진 장치상태 테이블(DST)이 필요하다. EXEC 370과 S/370 마이크로 코드 전후로 송신되는 16바이트 메시지(제41도D의 우편 블록 505 참조)를 경유하여 서로 교신한다. 메시지를 각 엔드싱의 수신기용으로 ETIO순서로 보류하는 대기행렬이 있다. 통지기구(PU to BCU, BCU to PU 회선)도 있다. 우편 블록(505)내에는 16비트 S/370 오-피 코드 필드 "OP"에는 EXEC 370 또는 S/370 마이크로 코드로부터의 요구 또는 응답이 들어있다. 16비트 채널장치주소(CUA)는 S/370 I/O 명령어의 오퍼란드 주소이다. CAW는 I/O명령어가 발하여지고 기억장소 키가 포함되어 있는 때에는 S/370 기억장치내 6위치(48)의 32비트 내용이다. 8바이트 CCW는 위의 CAW에 의하여 주소 지정된다. EXEC 370이 인터럽트 표시를 복귀시켰을 때 이 필드에는 CSW가 들어있게 된다. PE(85)는 CSW가 I/O 인터럽트를 생기게 하였을때 S/370 6 위치(40)내에 CSW를 저장한다. CUA 필드는 변경되지 아니한다.
OPERATION 메시지 EXEC 370에 의하여 부분적으로 또는 완전히 조정되어야 할 S/370 명령어와 만나게 될 때마다 S/370 마이크로 코드에 의하여 EXEC 370에 송신된다. OPERATION 메시지에는 제41d도의 우편 블록(505)에 관하여 전술한 정보가 들어있다.
S/370 마이크로 코드에 송신되는 EXEC 370 메시지에는 다음 사항이 포함된다.
1. RESET 메시지(OP=1)는 S/370 마이크로 코드가 S/370 리세트를 처리하도록 요구한다.
2. CLEAR RESET메시지(OP=2)는 S/370 리세트 및 Clear 기억장치를 요구한다.
3. 정지 메시지는 S/370 마이크로 코드는 S/370 명령어를 채취하는 것을 남기고 추후 명령어를 대기하도록 요구한다.
4. STEP 메시지(OP=4) S/370 마이크로 코드는 하나의 S/370 명령어를 채취 및 수행한 다음에 방식에 들어가라고 요구한다.
5. 메시지(=5)는 /370 마이크로 코드는 /370 명령어의 정상적인 채취 및 수행 방식에 들어가라고 요구한다.
6. LPSW메시지(OP=6)는 S/370 마이크로 코드는 LPSW메시지의 ADDRESS 필드내에 명시된 주소를 사용하여 S/370 LPSW(적재 프로그램 상태 워드)를 수행하라고 요구한다. 그것은 HALT 조건으로부터 S/370 마이크로 코드를 취하는데 이용될 수 있다.
7. SMSG 메시지(OP=7)는 하나 이상의 구성 S/370 I/O 장치용의 상태 변경을 표시한다.
8. IONTR 메시지(OP=8)는 I/O 연산의 완료를 표시한다.
채널이 OFF를 마스크되지 아니한 경우에는 S/370 마이크로 코드는 I/O 인터럽트를 개시할 것이다. 채널이 OFF로 마스크된 경우에는 S/370 마이크로 코드는 CSW를 장치상태 테이블내에 남겨두고 장치상태를 이(저장된 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 Condition-CR(S/370 조건 레지스터)를 TIO, SIO 등 다음에 즉시 세팅할 수 있다.
Device next-I/O 인터럽트를 취할때 이용할 수 있는 다음 조건
Device CSW-마스크된 370 I/O 인터럽트용으로 유지된다.
DST(CUA)내의 다음 4개의 서로 다른 장치조건은 370 장치용으로 가능하다.
00 장치 준비 완료
01 장치 준비되지 않음, CSW저장됨
10 장치 통화중
11 장치 작동중이 아님
S/370 장치상에서의 I/O 연산이 완료될 때, CSW(채널 상태 워드)는 채널에 의하여 CPU로 송신된다. 채널이 마스크 OFF되면 CPU는 CSW를 받아들이지 아니한다.
이 응용에 있어서 채널이 마스크되면 S/370 마이크로 코드는 CSW를 제외하고 DST(CUA)조건은 01로세트시킨다. 후속 TIO 또는 SIO는 제외된 CSW를 저장시키고 조건 코드(01)(저장된 CSW)를 CR내에 배치한다. S/370 마이크로 코드가 초기화되면 모든 장치들은 작동하지 아니한다고 가정된다. S/88은 지원받을 각 장치용의 ONLINE 메시지를 송신하다. 장치는 그 CUA(제어장치주소)에 의하여 식별된다.
4. S/370 마이크로 코드와 EXEC 370 사이의 명령어 흐름
PE(85)는 S/370 프로그램 명령어 스트링을 수행함에 따라 때때로 이 응용예에 있어서 S/88 처리기(62)와 관련 하드웨어, 펌웨어 및 소프트웨어에 의하여 수행되는 I/O 명령어 만나게 된다.
제44a도 내지 제44l도 ( 및 전술한 제43도)는 이러한 S/370 I/O 명령어의 수행을 위하여 이용되는 마이크로 코드 순서 흐름을 도시한 것이다. BCU(156)(및 어댑터 154)는 S/88 하드웨어에 의한 최종 S/370 I/O 명령어 수행을 실시하기 위한 기본 하드웨어 커플링 기구이다. BCU(156)내에서 DMAC(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 응용 프로그램 370(그 관련 S/88 ETIO 마이크로 코드와 함께)은 최종 I/O 수행을 실시한다. 어댑터(154)와 BCU(156)는 S/370과 S/88 코드 사이의 하드웨어 연결을 형성한다. 시작 I/O 마이크로 코드 루틴에는 각 장치의 상태, 즉 장치가 현재 이용할 수 있는가, 이미 SIO를 발하였는가, 통화 중인가, 인터럽트를 회신 받았는가 등을 계속적으로 추적하는 테이블(DST)이 있다. 이러한 정보는 조건코드(CC)내에 들어있다.
이 항은 여러가지 S/370 I/O 연산을 위한 명령어 흐름을 설명하는 것이다. 이 항에서 사용하는 일부 특수한 프로세스와 용어는 항 말미에 정의되어 있다. 연산은 다음과 같다.
1. 클리어 채널(제44a도)-이 명령어는 어드레스된 채널상의 모든 장치에 전달된 시스템 리세트와 함께, 어드레스된 채널내에서 I/O 시스템 리세트가 수행되게 한다. S/370 마이크로 코드는 어느 장치가 실제로 채널상에 있는지 알지 못하기 때문에, 모든 DST 엔트리용의 CC=3을 이 채널상에 세트시킨다. 그 다음에 EXEC 370이 구성을 재정의 하기 위하여 SMSG를 이 채널에 송신한다.
클리어될 채널은 명령어 주소의 비트(16 내지 23)에 의하여 주소가 지정된다. S/370 마이크로 코드가 디스패치로부터 제어를 수신한 때에는 채널주소를 검사하기 시작한다. 채널주소는 유효하거나 무효이다. 채널 주소가 무효인 때에는 조건 레지스터(CR)는 3에 세트되고 S/370은 다음 순서 명령어에 복귀된다. S/370 마이크로 코드에 의하여 지원을 받는 채널은 유효한 채널주소를 가진 것으로 본다. 유효한 채널주소에 있어서 S/370 마이크로 코드가 클리어 채널 메시지를 EXEC 370에 송신한다. 그 다음에는 이 채널용의 모든 장치상태 테이블(DST)을 통과한다. 모든 조건코드 필드는 이용불가를 의미하는 3에 세트되고 발견된 계류 인터럽트 테이블(PIT) 엔트리는 자유 피트 리스트에 일리스 된다. 그 다음에 S/370 마이크로 코드는 조건 레지스터를 0에 세트시키고 다음 순서 명령어로 간다. 한편 EXEC 370 클리어 채널 메시지를 수신하였을 때에는 주소지정 채널상의 모든 장치들을 위하여 I/O 시스템 리세트를 수행한다. 그 다음에 어느 장치가 회선상에 있는가를 확인하고 상태 메시지를 S/370 마이크로 코드를 송신하여 이 채널상의 구성을 재정의 한다. S/370 마이크로 코드가 상태 메시지를 수신한 때에는 상태 메시지내에서 주소지정된 각 장치를 위하여 장치상태 테이블내의 조건코드를 수정한다.
2. 클리어 I/O(제44b도)-이 명령어를 주소지정된 CUA용의 IMSG가 EXEC 370에 의하여 복귀될 때까지 PE(85)내에서 처리되는 S/370 명령어의 수행을 정지시킨다.
S/370 마이크로 코드가 디스패치로부터 제어를 수신한 때에는 명령어의 상위종단 주소로부터 제어장치주소 CUA 를 얻는다. S/370 마이크로 코드는 제어장치주소를 이용하여 이 장치용의 정확한 장치상태 테이블(DST)엔트리를 발견한다. 그것은 조건코드(CC)의 값을 검사한다. 여기에는 3가지 선택, 즉 (1) CC는 0 또는 3과 동등하다. (2) CC는 2 또는 1과 같고, 다음 조건(NC)은 2와 같다. (3) CC는 2 또는 1과 동등하다.
제1선택에 있어서는 CC는 0 또는 3과 같고 S/370 마이크로 코드는 단순히 조건 레지스터를 CC의 값에 세트시키고 그 다음의 순서 명령어로 간다.
CC가 1과 동일한 경우에는 계류 인터럽트 테이블(PIT)내에 계류 인터럽트가 있다. 이 경우에는 S/370 마이크로 코드는 계류 인터럽트 테이블 엔트리로 가서 NC의 값을 검사한다.
CC과 2도와 동일하거나 CC가 1과 동일하고 NC가 2와 동일한 경우에 있어서는 S/370은 클리어 I/O 메시지를 EXEC 370에 송신한다. S/370은 고정응답을 대기하고 장치와 연관된 계류 인터럽트 엔트리를 지운다. 그 다음에는 장치와 연관된 계류 인터럽트 엔트리를 지운다. 그 다음에는 EXEC 370에 의하여 복귀될 인터럽트 메시지를 대기한다. 한편, EXEC 370이 클리어 I/O 메시지를 수신한 때에는 주소지정된 장치의 선택적 리세트는 수행하고 장치용의 제어상태워드를 작성하며 인터럽트 메시지를 S/370 마이크로 코드로 복귀시킨다. S/370은 인터럽트 메시지를 수신한 때에는 PIT엔트리를 만들어내고 메시지로부터 NC 및 CSW를 채운다. 그 다음에 피트엔트리가 DST 엔트리에 연결된다.
이 점에는 CC=2 또는 CC=1이 제3선택에 이르게 된다. 2개의 경로중 하나에 의하여 이 점도에 도달한다. 제1경로는 장치가 통화중이거나 장치가 계류 인터럽트를 송신하였으나 여전히 통화중인 경로이다. 이것은 선택 리세트가 발하여지는 경우이다. 제2경로는 장치가 계루 인터럽트를 가지고 있으나 더이상 통화중이 아닌 경우이다. 이 2가지 경로에 있어서 CC는 2 또는 1과 동일하게 된다. 이것이 바로 제3경로이다. S/370 마이크로 코드는 인터럽트를 팝시키고 CSW를 S/370 기억장치내에 집어넣고 조건 레지스터를 1세트시키고 그다음 순서 명령어로 복귀한다.
3. HaH장치(제44c도)-S/370 마이크로 코드가 HaH장치 명령어용 디스패치로부터 제어를 수신하였을때에는 주소지정된 장치상태 테이블 엔트리용 조건코드를 검사한다. 여기에도 3가지 선택, 즉 조건코드=0 또는 2, 조건코드=1 또는 조건코드=3이 있다. 조건코드=0 또는 2인 제1선택에 있어서는 S/370 마이크로 코드는 정지장치 메시지를 EXEC 370에 송신한다. S/370 마이크로 코드 S/370 CSW 내의 16상태 비트를 제로로 돌리고 조건 레지스터를 1에 세트시키고 그 다음 순서 명령어로 복귀된다. 한편 EXEC 370이 정지장치 메시지를 수신한 때에는 주소지정된 장치에서 적당한 기능을 수행하고 정상 인터럽트 메시지를 복귀시킨다. 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 시스템상에서 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 마이크로 코드는 요약 I/O 메시지를 EXEC 370에 송신하고 조건코드를 2에 세트시키고 조건 레지스터를 0에 세트시키고 그다음 순서 명령어로 간다. 한편 EXEC 370이 요약 I/O 메시지를 수신한 때에는 제어장치주소를 조사하고 이전에 정지된 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 메시지를 EXEC 370에 송신하고 통화중임을 의미하는 CC=2에 세트시키고 조건 레지스터를 받아들였음을 의미하는 0에 세트시키며 그다음 순서차 명령어로 복귀한다. 한편, EXEC 370은 시작 I/O 메시지를 수신한 때에는 제어장치주소를 이용하여 특정 장치를 찾고 이 장치에서 정상 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인 제3옵션에 있어서는 S/370 마이크로 코드는 단순히 조건 레지스터를 =3에 세트시키고(장치가 작동중이 아님을 의미), 그다음 순차 명령어로 복귀한다.
7. Start I/O Fast Release (제44f도)-S/370 마이크로 코드는 시작 I/O 고속 명령어용 디스패치로부터 제어를 수신하였을때 주소지정된 DST 엔트리용 조건코드를 검사한다. 여기에는 CC=0, 1 또는 2 및 CC=3인 2가지 옵션이 있다. CC=0, 1 또는 2인 제1옵션에 있어서 S/370 마이크로 코드는 시작 I/O 고속 메시지를 EXEC 370으로 송신하고 CC를 =2에, 조건레지스터를 0에 세트시키고 그다음 순차 명령어로 복귀한다. 한편 EXEC 370은 시작 I/O 고속 메시지를 수신한 때에는 가능한 경우에는 I/O 연산을 시작하고 그렇지 아니하면 S/370 마이크로 코드에 의하여 수신되었을때 정상 인터럽트로서 행동하는 지연조건코드가 들어있는 CSW와 함께 인터럽트 메시지를 복구시킨다. 조건코드 =3인 제2옵션에 있어서 S/370 코드는 다만 조건 레지스터를 3에 세트시키고 그다음 순차 명령어로 복귀한다.
8. Test I/O(제44g도)-S/370 마이크로 코드는 검사 I/O 명령어용 디스패치로부터 제어를 수신한 때에는 조건코드를 검사한다. 여기에는 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) 명령어용 디스패치로부터 제어를 수신하면 채널주소를 검사한다. 여기에는 채널주소 유효 및 채널주소 무효라는 2개의 옵션이 있다. 채널 무효 옵션에 있어서는 마이크로 코드는 조건 레지스터를 3과 동일하게 세트시키고 그다음의 순차 명령어로 간다. 채널주소 유효 옵션에 있어서 마이크로 코드는 A/370 기억장소(A8 16진)을 16진(20000000)에 세트시킨다. 그다음에 조건 레지스터를 0에 세트시키고 그다음의 순차 명령어 복귀한다.
10. Test Channel(제44l도)-S/370은 시험채널 명령어용 디스패치로부터제어를 수신하였을때 채널주소를 검사한다. 이 흐름에서는 2가지 대옵션과 3가지 소옵션이 있다. 채널주소가 무효인 제1대옵션에서는 마이크로 코드가 조건 레지스터를 3에 세트시키고 그다음의 순차 명령어로 간다. 채널즈소가 유효인 제2옵션에서는 마이크로 코드가 이 채널용의 모든 DST 엔트리를 검사한다. 제1소옵션은 마이크로 코드가 이 장치는 팬딩 인터럽트를 가지고 있음을 의미하는 CC=1을 가진 특정 장치용 DST엔트리를 발견한 경우에 일어난다. 이러한 경우에 있어서 마이크로 코드는 조건 레지스터를 =1으로 세트시키고 그다음의 순차 명령어로 간다. 마이크로 코드가 이 채널용 DST엔트리 목록에 끝까지 갔을때 CC=1의 엔트리를 찾지 못한 경우에는 CC=2를 가진 적어도 하나의 엔트리가 있는가의 여부를 검사한다. 하나라도 있는 경우에는 이것이 제2옵션이고 이 경우에는 마이크로 코드가 조건 레지스터를 =2에 세트시키고 그다음의 순차 명령어로 간다. 그렇지 아니한 경우에는 제3소옵션이 일어나고 마이크로 코드는 조건 레지스터를 =0으로 세트시키고 그다음 순차 명령어로 간다.
11. Primary and Secondary Interrupts(제44j도)-기본 및 보조 인터럽트라는 용어는 S/370 용어이다. 기본인터럽트에는 I/O 연산에서 생기는 CSW내의 적어도 Channel End(CE)상태비트가 들어있다. 보조 인터럽트는 I/O 연산을 위한 Device End(DE)가 들어있는 2차 인터럽트이거나 서비스를 요구하는 장치에 의하여 개시되는 비동기적 인터럽트이다.
이 설명에서는 기본 인터럽트와 보조 인터럽트 사이의 차가 없기 때문에 기본 인터럽트만을 설명한다. 제44j도와 제44k도에 도시한 I/O 마스크 인터럽트와 I/O 가능 인터럽트 사이의 차는 I/O가 마스크되어 있느냐의 여부이다. 즉, S/370 처리기가 채널에서 오는 인터럽트를 받아들이냐의 여부이다. 인터럽트가 S/370처리기에 의하여 받아들여지면 채널은 이 인터럽트를 스택한다. S/370 처리기가 가능하게 되는 시간까지를 팬딩 인터럽트라고 한다. EXEC 370이 특정장치 조작을 에뮬레이팅하고 있는 동안 인터럽트 조건이 생긴때에는 EXEC 370은 CSW를 작성하여 메시지내에 저장시키고 이 메시지를 S/370 마이크로 코드에 송신한다. 마이크로 코드는 이러한 인터럽트 메시지를 수신하면 I/O가 마스크되었는지 아니면 가능한지의 여부를 알아내기 위하여 S/370 마스크를 검사한다. I/O가 마스크되었으면 (제44j도) 마이크로 코드는 이 인터럽트를 스택한다. 스태킹 인터럽트 프로세스에 대하여는 다음에 설명한다. S/370 마이크로 코드가 마스크를 검사하고 I/O가 가능한 경우에는 (제44k도)인터럽팅 장치용 DST 엔트리내의 조건코드 필드는 인터럽트 메시지내의 다음 조건(NC)과 동일하게 세트되고 메시지로부터의 CSW는 S/370 기억장치내에 넣어지고 마이크로 코드는 I/O 인터럽트가 수행되게 한다.
12. S/370 I/O Maskinf Events (제44l도)- EXEC 370이 인터럽트 메시지를 S/370 마이크로 코드는 송신할 때 I/O가 마스크되어 있으면 인터럽트는 팬딩 인터럽트 테이블(PIT) 엔트리내에 스택된다. 그다음 시점에서어떤 S/370 사건이 일어나고 이는 I/O 인터럽트를 가능하게 한다. 이것은 적재 PSW 명령어, 세트 시스템 마스크 명령어 또는 마스크가 I/O를 가능하게 하는 인터럽트로 인하여 생길 수 있다. PSW 시스템 마스크가 전에 마스크된 I/O를 가능하게 할 수 있는 방식으로 변경되는 때에는 어느 시점에서도 S/370 마이크로 코드는 어느 인터럽트가 이러한 채널을 위하여 펜딩되어 있는가를 검사하여야 한다. 하나도 찾지 못하는 경우에는 마이크로 코드는 단순히 그다음의 순차 명령어에만 존재한다. 그러나 하나라도 찾으면 마이크로 코드는 인터럽트를 테이블에서 팝시키고 CSW를 S/370 기억장치속에 집어넣고 I/O 인터럽트를 수행한다.
위에서 말한 프로세스를 들어있는 용어들은 다음과 같다.
1. 스택 인터럽트-스택 인터럽트라는 말은 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. 팝 인터럽트-인터럽트를 팝시키는 것은 DST/PIT 리스트의 상단에 있는 PIT엔트리를 변경시키지 아니하고 DST 조건코드를 PIT 엔트리의 NC 필드내에서 찾아낸 값에 세트시키고 S/370 CSW가 들어있는 PIT엔트리의 상태필드를 남겨두고 PIT 엔트리를 자유리스트로 복귀시키는 것을 포함한다.
3. EXEC 370으로의 메시지 송신-제43도는 이 설명을 예시한 것이다 .옵션 CC=0인 점에서, S/370 마이크로 코드는 메시지를 EXEC 370에 송신할 필요가 있다고 결정한다. 메시지는 특히 시작 I/O 메시지이다. 이러한 메시지 또는 기타 S/370 마이크로 코드가 송신하는 메시지는 절차가 동일하다. S/370 마이크로 코드는 기억장치(162)내의 우편함 엔트리내에 있는 데이타 필드를 메시지의 내용으로 채운다. 그다음에는 PU to BCU 요구를 발신하고 이 요구는 BCU 논리(253)가 수신한다. S/370 마이크로 코드는 긍정응답이 회신되기를 대기한다. 한편 BCU 기억장치(210)에 전송한다. DMA가 완료되면 DMA는 긍정응답 신호를 S/370 마이크로 코드에 회신하고 이 S/370 마이크로 코드는 그다음 순차 프로그램 명령어를 속행시킨다. 소프트웨어 루틴은 제어를 수신하고 연산의 유효성을 검사한 다음에, 이를 EXEC 370에 통지하고 EXEC 370은 작업대기행렬로부터 메시지를 분리시킨다.
4. S/370 마이크로 코드로의 메시지 송신-EXEC 370이 S/370 마이크로 코드에 보내는 몇가지 서로 다른 메시지가 있다. S/370 I/O masking Events(제44l도)가 이러한 인터럽트 메시지의 일예이다. EXEC 370은 BCU논리에 간섭하는 ETIO마이크로 코드를 호출한다. ETIO는 메시지를 BCU 기억장치(210)로부터 S/370 기억장치로 전송하는 DMA 작동을 개시한다. DMA가 완료되면 BCU to PU 메시지가 S/370 마이크로 코드로 송신되고 인터럽트는 시스템(88)로 송신되며 이 시스템은 ETIO 인터페이스 루틴으로 하여금 EXEC 370에 통지를 보내게 한다.
버스 제어장치(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)은 때때로 기본기억장치 모듈(BSM)(162)라고 한다. 여기에는 BCU(156)와 버스어댑터(154)를 결합시키는 2세트의 어댑터버스 인터페이스 회선(249, 250(채널 0) 및 251, 252(채널 1))이 있다.
BCU(156)에는 64KB 지역기억장치(210), 직접메모리 접근제어기(DMAC)(209), 32비트 지역주소 버스(247) 32비트지역데이타 버스(223) 및 인터페이스 논리(205)가 포함되어 있다.
이상에서 상세히 설명한 바와같이 DMAC(209)에는 다음의 4개의 데이타 전송 채널이 포함되어 있다.
채널 0-우편함 명령은 PE(85)에서 BCU(156)로 전송된다. 메시지는 S/370 저장장소구역(162)로부터 지여기어장치(210)로 판독된다.
채널 1-S/370 PE(85) 기록 데이타, 데이타는 S/370 저장장소구역(162)로부터 지여기억장치(210)로의 전송을 위하여 판독된다.
채널 2-S/370 PE(85) 판독 데이타, 데이타는 지역기억장치(210)에서 S/370 저장장소구역(162)로 전송된다.
채널 3-BCU(156)로부터 S/370 PE(85)로의 고우선순위 메시지 전송, 메시지는 지역기억장치(210)로부터 S/370 저장장소구역(162)으로 전송된다.
DMAC(209)는 버스어댑터(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)가 지역버스에 접근하기 위하여 그 안에서 서로 경쟁하는 지역버스 조정장치(216), 즉 데이타 버스(223)와 주소 버스(247)이 포함되어 있다. PE(62) '버스 요구' 회선(190)은 주소 해독 및 조정장치(216)에 의하여 다음의 주소(제41c도 참조)가 검색되는 때마다 활동한다. 즉, 지역저장주소 ; 프로그램된 BCU 리세트, BSM 기록 셀렉트 엎, BCM 판독 셀렉트 엎 및 판독 BCU 상태를 포함하는 BCU 지시 명령 ; 지역버스 인터럽트 긍정응답 사이클 ; 및 DMAC지시 판독 또는 기록 레지스터 명령.
DMAC 버스요구 회선(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바이트 경계상의)도 제공한다. 고위메시지 요구와 우편함 요구는 BCU(156)내에서 동시에 다룰 수 있다. 'BSM 판독' 및 'BSM 기록' 조작도 BCU(156)내에서 동시에 다룰 수 있다.
BCU(156)는 다음 4가지의 I/O 작업을 수행한다.
우편함 판독 작업 : 이 작업은 'PU to BCU REQ' 회선(256a)을 경유하여 S/370 I/O 명령어 마이크로 코드에 의하여 개시된다. 우편함(188)은 S/370 BXM(162)내에 위치한다. 이 우편함은 I/O 서브시스템(시작I/O등)에 의하여 수행될 I/O 명령을 저장하는데 이용된다. 우편함에는 I/O 서브시스템이 PE(85)로부터 수신하는 상태 또는 기타 정보도 들어있을 수 있다. 'Mailbox Select Up' 명령은 'PU to BCU 선택 회선(210)'이 어댑터버스 채널(0)상에서 활성화되는 때에 BCU(156)에 의하여 개시된다. S/370 I/O 기록 작업(어댑터버스 채널 0)은 'PU to BCU 요구'가 S/370 PE(85)에 의하여 활성화되는 경우에는 64바이트 경계상에서 선취된다.
S/370 I/O 판독 및 기록 작업 : 이는 S/370 기억장치(162)와 어댑터버스 채널(0, 1)상의 I/O 장치 사이의 데이타 전송(4KB 블록 막스)용으로 제공된다. 모든 데이타 전송은 'BSM SELECT UP' 어댑터버스 명령을 경유하여 I/O 서브시스템(S/88 PE 62)에 의하여 개시된다.
고위메시지 전송 : 인터럽트, 상태, 오류등 I/O 서브시스템으로부터 S/370으로 통과되는 고순위 성질을 가진 메시지. 모든 전송은 'Q SELECT UP' 명령을 경유하여 BCU(156)으로부터 개시된다. S/370 I/O 판독 작업(어댑터버스 채널 1)은 고위메시지 요구가 생긴 경우에는 64바이트 경계상에서 선취된다.
2. S/370 START I/O SEQUENCE FLOW의 개설 및 상세한 설명
'시작 I/O 명령어 SIO', '채널 주소 단어' CAW, 제1 '채널 제어 단어' CCW는 S/370 기억장치(162)내의 예정된 '우편함' 위치에 저장된다. 이 정보는 BCU 인터페이스 논리(205)와 버스어댑터(154)를 경유하여 지역기억장치(210)로 통과한다.
제18도 도시한 DMAC채널(0) 레지스터는 우편함 판독 작업용으로 이용된다. 이러한 레지스터들은 S/88 PE 62에 의하여 프로그램되고 '링크된 배열연쇄 방식'으로 작동한다. PE 62는 일련의 '링크된 리스트'(테이블)을 지역기억장치(210)(제41h도)내에 세트시킴으로써 이 방식을 초기화한다. 그다음에는 1차 '톱링크 리스트 주소'를 DMAC0 기준 주소 레지스터(32비트)(BAR)내에 세트시킨다. 이 주소는 링크된 리스트 데이타의 기억장치(210)내의 최초의 위치를 가르킨다.
DMAC'PCL'(주변제어회선)(257a)은 PE 62에 의하여 프로그램되어 DMAC(209)로 하여금 PCL회선(257A)이 활성화 될 때마다 그 IRQ 인터럽트 출력회선(258)을 활성화시키게 한다. 'PCL' 회선(257a)은 주기억장치(162)로부터 어댑터 버퍼(259)를 경유하여 지역기억장치(210)까지의 우편함 데이타 전송이 완료된 다음에 활성화된다. 인터럽트는 S/88 처리기 (PE 62)에게 우편함 적재가 방급 완료되었음을 알려준다.
링크 리스트 데이타(제41h도)는 데이타 블록의 시작저장주소, 저장장소 전송계수, 다음 테이블 엔트리로의 링크 주소등으로 구성된다. 테이블내의 최종링크주소는 제로가 된다.
S/88 처리기(162)는 톱 링크 리스트 주소를 DMAC 채널 0 기준주소 레지스터내에 세트시킨다. S/88 처리기(PE 62)는 "1"을 그 채널 0 채널제어 레지스터(CCR)의 비트 7('START' 비트)내에 기록함으로써DMAC(209)를 활성화시킨다. 그다음 DMAC(209)는 1차 링크 리스트를 다음과 같이 그 채널 0 레지스터내로 옮겨준다.
기억장치(210)의 데이타 블록(WQB)의 시작주소를 메모리 주소 레지스터(MAR)(32비트)내로 옮겨준다. 전송 계수(우편함 데이타의 바이트)를 메모리 전송 게수 레지스터(MTC)내로 옮겨준다. 링크 주소를 다음 데이타 블록 주소 레지스터(BAR)내로 옮겨준다.
더 상세히 설명하면 S/370 PE85는 명령어 수행중 'START I/O'명령어를 해독하고 'START I/O'명령, 채널주소단어, 1차 채널제어단어를 S/370 메모리(162)내에 들어있는 연속 '우편함' 위치내에 배치한다. 우편함의 시작주소(기준+대기행렬 길이)는 초기화 당시 버스어댑터(154)의 기준 레지스터내에 저장된다.
S/370 PE 85는 활동하는 비트(11)를 가진 처리기 버스를 경유하여 'LD OSCW' 제어 오피(OP)를 발한다. 이것은 버스어댑터(154)의 제어 단어내에 'PU to BCU REQUEST' 비트를 세트시킨다. OSCW 비트(11)에 의하여 어댑터버스(채널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)상에 발생시키고 이를 채널 0 명령 레지스터(214)내에 저장한다. 우편함 주소 비트는 버스(290)를 경유하여 제45b도에 도시한 형식(여기에서 비트(7)는 기억장치(162)내의 IOA 구역을 식별하고 비트(24-26)는 BCU 채널 넘버를 비트(27-31)는 우편함 오프셋을 식별한다.)으로 레지스터(219)내에 저장된다.
BCU(156)는 레지스터(214, 219)를 채움으로써 COMMAND/STATUS 버스(209)와 ADDR/DATA 버스(250)를 활성화시킨 후, 'TAG UP' 명령을 회선(262)상에 상승시키고 버스어댑터로부터의 데이타를 대기한다. BCU는 'TAG DOWN' 회선(262b)을 표본 추출함으로써 이를 행한다. 'TAG DOWN'은 데이타가 준비되어 있지 아니한 한, 활동한다. 'TAG DOWN'이 버스어댑터(154)(데이타 준비완료)에 의하여 비활성화되자마자 최초의 4바이트 우편함 데이타는 2개의 채널 0 서브사이클을 경유하여 채널 0 판독 버퍼(226)내에 래취된다.
그다음에 BCU 논리(253)는 'REQUEST' 회선(263a)을 DMAC(209)의 채널 0상에 사아승시킨다. 이어서 DMAC(209)는 'BUS REQUEST'(BR)를 지역버스 조정회로(216)로의 회선(269)에 상승시킨다. 지역버스가 S/88 처리기(62)에 의하여 이용되지 아니하는 경우에는 버스 접근이 DMAC(209)로의 버스허가라인(BG) 회선(268)을 경유하여 허가된다. 그 다음에 DMAC(209)는 WQB 지역우편함(기억장치 210내의)의 시작주소를 MAR로부터 주소버스(247)에 전송하고 'ACKO'(DMAC 채널 0 긍정응답) 회선(264a)을 상승시킨다. 'ACKO' 신호는 버퍼(226)로부터 데이타 버스(223)를 경유하여 기억장치(210)내의 WQB의 지역우편함부분으로의 데이타 전송을 개시한다. 'DTACK' 회선(265)은 작동이 완료되었음을 DMAC(209)에 알리기 위하여 활성화된다.
BCU 클럭 신호(제25도)는 우편함 데이타를 버퍼(259)로부터 레지스터(226)로 계속하여 전송한다. BCU(156)는 각 지역기억장치 210/DMAC 209 순서(32비트)벼로 2개의 어댑터버스('TAG UP'/'TAG DOWN')순서(각 16비트)를 수행한다.
DMAC 사이클이 완료된 때(DTACK 활동, DMAC(209)는 '데이타 전송 완료'(DTC) 회선(267)을 BCU논리(253)까지 상승시키고 이 BCU 논리는 또다른 'REQUEST'를 회선(263a)상의 DMAC(209)로 발하여 4개의 2차 바이트를 레지스터(226)로부터 WQB 우편함에 옮겨준다. DMAC 사이클은 우펀함 데이타(16바이트) 전부가 정송될때까지 반복된다. 'PCL' 회선(157)은 BCU 논리(253)에 의하여 DMAC(209)로 활성화된다. 이에 의하여 'IRQ' 회선(258)은 DMAC(209)로부터 S/88 처리기 우선순위 암호기/인터럽트 논리(212)로 활성화된다. PE(62)는 우편함 요구를 다룬다.
DMAC(209)는 링크 리스트로부터의 그 채널 0 레지스터 적재를 완료한 때에는 그다음의 우편함 적재를 시작하기 위하여 채널 0 'REQ' 회선(263a)상에서 BCU 논리(253)로부터 발신되는 신호를 대기한다. DMAC 채널(0)은 일단 시작되면 무한히 활동하고 /88 처리기(62)는 원형 링크 리스트를 제어하고 BCU(156)는 'REQ' 회선(263)을 불활동적으로 유지함으로써 데이타 전송을 정지시킨다. 채널(0)이 '리트스 끝'조건으로 인하여 중지된 경우에는 /88 처리기 종료 인터럽트를 수신하고 적당한 때에 채널(0)을 다시 시작한다.
3. S/370 I/O 데이타 전송 순서 흐름 개설
모든 I/O 판독 및 기록 전송은 S/88 처리기(62)로부터 어댑터버스 구조 'BXM READ SELECT UP' 및 'BSM WRITE SELECT UP' 명령을 경유하여 시작된다. S/370 CCW 명령과 시작주소(S/370 메모리 162내의)는 'START I/O'용의 CCW로부터 파생된다. 데이타는 S/88 처리기(62)에 의하여 각 I/O 장치와 지역기억장치(210)내의 지역버퍼 사이로 이동된다.
지역기억장치(210)에는 S/88 처리기(62)에 의하여 관리되는 I/O 기록조작용 기억장소블록의 대기행렬이 포함된다. 이 대기행렬에 적어도 하나 이상의 엔트리가 포함되어 있는 때에는 그것은 I/O 기록 작동을 시작할 준비가 되어있다. 이 블록중 선택된 블록용 시작주소는 기록작업이 개시되기 전에 S/88 처리기(62)에 의하여 DMAC(209)내에 있는 DMA 채널(1) 레지스터내에 저장된다. DMA 채널(1) 레지스터는 지역기억장치(210)를 경유하여 S/370 I/O 기록작업(S/370 기억장치 162-I/O)용으로 지정된다. 어댑터 데이타 버퍼(259)(64 바이트)는 우편함 판독 및 S/370 I/O 기록작업(S/370 메모리 162로부터 지역기억장치 210로의 데이타 전송)용으로 지정된다.
이 버퍼는 채널 0 어댑터버스(249, 250)와 연관되어 있다.
버퍼(260) (64 바이트)는 메시지 기록(S/370으로의) 및 S/370 I/O 판독작업(지역기억장치 210로부터 S/370 메모리 162로의 데이타 전송)용으로 지정된다. 이러한 버퍼는 채널 1 어댑터버스(251, 252)와 연관되어 있다.
S/88 처리기(62)는 DMAC 채널(1, 2) 메모리 주소 레지스터의 고위 단어를 제로(0)에 초기화한다. 이것은 이러한 레지스터들이 연산 순차중 적재되는 때에는 지역기억장치(210)는 16비트 이상의 주소를 필요로 하지 아니하기 때문에 여분의 버스 사이클을 제외한다.
(a) I/O 기록작업 : (S/370 기억장치 162-지역기억장치210)
S/88처리기(62)는 제45c도에 도시한 바와같이 정보를 DMAC 주소 및 데이타 버스(248) (버스 161a, 드라이버 217, 버스 247 및 래치 233을 경우)상에 배치함으로써 지역버퍼 시작주소를 채널(1) 메모리 주소 레지스터(MAR)(내에 세트시키며 여기에서 비트 31-08=007E00='DMAC 레지스터 선택' 명령이고 비트 07-00=DMAC 채널(1) 메모리 주소 레지스터(low) 선택이다.
S/88은 버스상의 가장 중요한 비트와 가장 중요하지 아니한 비트를 S/370 프로토콜의 반대인 "31"과 "0"으로서 시기별한다.
제45d도에 도시한 내용 (MAR용으로 의도된)은 데이타 버스(223)상에 배치되고 여기에서 비트 31-61=I/O 기록데이타용 기억장치(210)내의 지역버퍼의 시작주소이다. 고위데이타 버스 비트(21-16)는 채널 (1)메모리 주소 레지스터의 하위(15-00) 부분내에 적재된다.
MAR의 고위비트(31-16)는 추기화 중 0으로 세트되었다.
MAR(209)는 16비트 포트 'DSACK'신호회선(266b)을 가지고 버스논리(253)를 경유하여 S/88 처리기(CPU)에 응답한다. S/88처리기 (62)는 BCU데이타(바이트 계수, 기억장치 키, 어댑터버스 우선순위, 주문자/IOA 공간 데이타)와 DMAC 채널(1)메모리 전송 계수 데이타를 지역주소버스(247)상에 배치한다. 제45e도는 주소 버스상의 명령을 도시한 것으로서 여기에서 비트들은 31-08=007E00='DMAC 레지스터 선택' 명령이고 07-00=BCU 선택 및 DMAC 채널(1) MTC 선택이다.
바이트 계수, 기억장치 키(CCW로부터 파생된), 어댑터버스 우선순위 및 주문자/IOA 공간 비트는 S/88처리기(62)에 의하여 제45f도에 도시한 형식으로 데이타 버스(223)상에 배치되며 여기에서 비트지정은 다음과 같다.
31-27=지정된 비트
26=고위바이트 계수 비트. 이 비트는 최대바이트 계수(4K 바이트)가 전송중인 때에만 =1이 된다.
26-16=DMAC 채널(1) MTC 레지스터내에 적재된 바이트 계수
26-14=BCU 레지스터(209)내에 적재된 바이트 계수(최대한 4096) 및 계수중 적어도 일부는 아래에서 바이트 계수 작업에서 설명하는 바와같이 레지스터(221)내에 적재된다. 버스어댑터(154)는 4096 바이트(바이트계수-1)를 전송하기 위하여 1111 1111 1111의 계수가 필요하다. 그러므로 BCU(156)는 바이트 오프셋 비트(15-14) (64 바이트 블록내의)와 함계 2배 단어 경계비트를 버스어댑터(154)에 제시하기 전에 한번 이러한 2배 단어 경계비트(26-16)를 감소시킨다.
15-14= 저위 바이트 계수 비트(BCU) (156). 이들 비트들은 2배 단어 경계로부터의 바이트 오프셋 - 1(버스어댑터 요건을 위한)을 나타낸다. 이 비트들은 2배 단어만을 전송하기 때문에, DMAC(209) 또는 BCU(156)에 의하여는 이용되지 아니한다. 이 비트들은 S/370 BSM(162)에 제시하기 위하여 버스어댑터(154)로 통과된다.
13-12=어댑터버스 채널 우선순위
11-08=기억장치 키
07=주문자/IOA 공간 비트
06=S/88 처리기는 하나의 추가 지역기억장치 접근이 필요하다는 것을 표시하기 위하여 이 비트(1)를 활성화시킨다. 이것은 시작 S/370 저장주소가 2배 단어(32 비트) 경계상에 있지 아니한 때에 일어난다. 모든 BCU 접근은 2배 단어 경계에서 시작되어야 하기 때문에 1차 접근에는 지정된 시작주소에 있는 바이트와 2배 단어 주소에 들어있는 선행 바이트가 들어있다. 선행 바이트는 버린다.
05-00=지정된 비트
DMAC(209)는 데이타 버스의 고위단어(즉, 바이트 계수)를 채널(1) MTC레지스터내에 적재한다. BCU(156)는 데이타 버스 내용을 다음과 같이 포착한다.
비트 24-14- BSM Read Select Up Byte Counter(220)으로 비트 13-06-어댑터버스 채널(0) A/D 레지스터(209)로, 그러나, 재배열된다.
하나의 S/88처리기 사이클내에 2배 단어 전송이 일어나게 하기 위하여는 주소가 2배 단어 경계상에 있어야 한다. DMAC채널 (1) MTC의 주소는 2배 단어 경계상에 없기 때문에(비트 07-00=01001010), BCU(156)와 DMAC(209)를 하나의 S/88처리기 명령과 함께 적재하기 위하여 다음과 같은 행동이 일어난다. BCU(156)는 주소 비트(1)를 역전시켜서 이를 다른 레지스터 선택 비트들과 함께 DMAC(209)에 제공된다. 이에 의하여 채널(1)용 MTC레지스터를 적절히 선택할 수 있다.
(주소 비트 07-00=01001010) 이러한 배열은 채널(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판독 선택 바이트 카운터(220)는 채널(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판독 주소 레지스터 (231)내에 저장되어 있다. 이 주소는 그후 S/370 기억장치(162)에 제시하기 위하여 버스어댑터(154)에 송신된다. 그다음에 BCU(156)는 S/88처리기(62)로의 'DSACK'회선(266a, d)을 활성화시킨다. 이점에서 S/88 처리기는 릴리스되고 더 이상 작업에 관여하지 아니한다.
BCU(156)는 'BSM SELEC UP'(판독) 명령을 버스(290)을 경유하여 레지스터 (214)와 제45i도에 도시한 명령/상태 버스(249)상에 배치하며, 여기에서
비트 0-1=11, 'BSM Select Up'명령(판독), 및 비트 2-7=필드 길이 -1(최대한 64 바이트)
필드 길이는 이전에 레지스터 (220 또는 221)로부터 레지스터(214)내로 전송되었다. 레지스터(219)는 주소 정보를 제45j도에 도시한 형식으로 버스(250)상에 배치하며, 여기에서
비트 0-3=기억장치 키
비트 4=1
비트 5-6=우선순위(버스어댑터(154)-처리기 버스(170))
비트 7=1 주문 구역 접근
0=마이크로 코드 구역 접근
비트 8-31=기억장치(162)내의 데이타 필드내에 있는 제1바이트 주소
BCU 논리(253)는 필드 길이 데이타를 어댑터 명령 레지스터(124)(제13도)내로 키 주소 데이타를 레지스터(122)내로하는 명령을 래치하기 위하여 버스어댑터(154)로의 TAG UP회선(262a)을 상승시킨다.
버스어댐터(154)는 데이타가 유효하지 아니한 경우에는 TAG DOWN을 BCU논리(253)로 상승시킨다. BCU 논리(253)는 TAG DOWN이 드롭될 때까지 대기한다. 버스어댑터(154)는 어댑터버스 BSM SELECT UUP명령을 제45k도 및 제45l도에 도시한 처리기 버스 I/O메모리 명령으로 전환시키며, 여기에서 처리기 주소/데이타 버스(170)상의 비트들은 다음을 나타낸다.
0=0I/O 메모리 명령
1=1=채취 작업
2-7=필드 길이
8-31=실바이트 주소
상기 도면에서 처리기 키/상태 버스 비트는 다음을 나타낸다.
0-3=기억장치 키
4=0=동적 번역 없음
주소 지정된 데이타는 S/370 메모리(162)로부터 복귀하였을때 버스어댑터 데이타 버퍼(259) (채널 0)내에 래치된다. 그 다음에 버스어댑터(154)가 어댑터버스 채널(0)상의 TAG DOWN 회선(262b)을 정지시킨다.
이 조건은 BCU(156)에 경고하여 2개 바이트(16 비트)의 데이타를 래치시키고 클록 좌 및 클럭 우 신호를 경유하여 채널(0) 판독 버퍼(226)(4 바이트)내의 또다른 2개의 바이트가 즉시 뒤따르게 한다. 그다음에 BCU(156)는 그 'REQ 1'회선(263b)(DMAC 채널 1 요구)를 DMAC(209)로 활성화시킨다. DMAC(209)는 지역버스 사이클을 수행하기 위하여 회선(269)상의 'BUS REQ'를 BCU 지역버스 조정논리(216)에 발한다.
회선(268)상의 버스허가 신호 BCU 조정논리(216)로부터 복귀되었을때, CMAC(209)는 채널(0) 판독 버퍼(259)-지역기억장치(210) 작업을 시작한다.
DMAC는 회선(264b)상의 ACK 1(DMAC 채널 1 긍정응답)을 BCU논리(253)에 복귀시키고 DMAC채널 1 레지스터(MAR)내의 지역저장 주소를 버스(248), 래치(233), 주소 버스(247) 및 멀티플렉서(232)를 경유하여 기억장치(210) 주소지정회로(도시없음)에 게이트시킴으로써 이 작업을 행한다. BCU논리(253)는 회선(264b)상의 ACK1 신호와 회선(210a)상의 RAM 선택 신호를 이용하여 버퍼(226)로부터의 1차 데이타(4 바이트)를 MAR 레지스터에 의하여 명시되는 주소에서 기억장치(210)내에 저장하기 위하여 데이타버스(223)에 게이트시킨다. DTACK가 BCU논리(253)에 의하여 (265)상에 복귀되면 DAMC(209)가 DTC(데이타 전송 완료)를 회선(267)상에 상승시킨다.
BCU(156)는 레지스터(220)내에 유지되는 바이트 계수(MTC)를 감소시키고 채널 1 MAR를 증가시키며 버스어댐터(154)로부터 수신한 데이타를 각 2배 단어(4바이트)용의 주소 레지스터를 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)는 IRQ를 S/88 처리기(62)에 대하여 적당히 처리를 위하여 S/370 기억장치(162)로부터의 데이타 판독이 들어있는 지역기억저장 버퍼를 판독하도록 경보한다.
(b) I/O 판독 작업 : (지역기억장치 210-S/370 기억장치 162)
I/O 판독 작업(EXEC 370 제어하에)은 기억장치(210) 내의 I/O 판독 대기행렬내에 적어도 하나 이상의 엔트리가 존재하는 때에는 시작된다.
S/88 처리기(62)는 DMAC(209)에 의하여 이용되지 아니하는 경우에 지역버스의 제어를 얻는다. S/88처리기(62)는 제45m도에 도시한 정보를 247 버스상에 배치함으로써 지역버퍼 I/O 판독 시작주소를 DMAC채널 2 메모리 주소 레지스터(MAR)내에 세트시키고, (여기에서 비트 31-08=007E00=DMAC 레지스터 선택 명령, 비트 07-00=DMAC 채널 2 메모리 주소 레지스터(Low) 선택이다.) 시작 주소(기억장치 210내에 있는 버퍼의)를 제45n도에 도시한 데이타 버스(223)상에 비치함으로써 그와같이 세트시키며, 여기에서
비트 31-16=지역버퍼 I/O 판독 데이타의 시작주소, 비트 15-00=지정되어 있다.
고위 데이타 버스 비트(31-16)는 채널 2 메모리 주소 레지스터의 하위(15-00)비트내에 적재된다.
MAR의 고위비트(31-16)는 초기화 중 제로에 세트된다.
DMAC(209)는 회선(265)상의 DTACK 신호를 가지고 응답하며, 이 신호는 S/88처리기(62)로의 회선(266a, b)상의 DSACK 신호로 전환된다. 그다음에, S/88처리기(62)는 데이타(4KB까지)를 선택된 지역기억장치 I/O 판독 버퍼의 시작주소를 이용하여 I/O 제어기(20 또는 24)로부터 S/88 프로그램 제어를 경유하여 지역기억장치(210)에 이동시킨다.
데이타 전송이 완료되었을때 S/88처리기(62)는 DMAC채널 2메모리 전송 계수 선택을 제45o도에 도시한 형식으로 주소버스(247)상에 배치하며, 여기에서
비트 31-08=007E00=DMAC 래지스터 선택 명령, 비트 07-00=BCU 및 DMAC 채널 2 MTC 선택
바이트 계수, 기억장치 키(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(209) 또는 BCU(156)에 의하여 이용되지 아니한다. 비트들은 S/370 BSM(162)에 제공될 수 있도록 버스어댑터(154)로 통과된다.
13-12=어댑터버스 채널 우선순위
11-08=기억장치 키
07=주분자/IOA 공간 비트
06-00=지정한 비트
DMAC(209)는 데이타 버스(223)의 바이트 계수를 채널 2 MTC 레지스터내에 적재한다. BCU(156)는 위의 명령이 주소버스(247)상에 나타났을때 데이타 버스 내용을 포착한다. 비트(26-16)는 기록 선택 바이트 카운터(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 기록 선택 명령을 지역주소버스(247)상에서 제45q도에 도시한 형식으로 발생시키며, 여기서
비트 31-00=007E0104=BSM 기록 선택 명령
S/88처리기는 BSM시작주소를 데이타 버스(223)상에 제45r도에 도시한 형식으로 배치하며, 여기서
비트 31-24=지정된 비트
23-00=BSM 시작주소
데이타 버스(223)상의 BSM시작주소는 채널 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)의 명령 및 필드 길이를 버스(252)상에 제45s도에 도시한 형식으로 배치하며, 여기에서
비트 0-1=BSM 선택 명령(기록)
2-7=필드 길이 -1(최대한 64 바이트)
레지스터(227)의 내용은 주소/데이타 버스(251) (2개의 서브사이클내의)상에 제45t도에 도시한 형식으로 배치하며, 여기에서
비트 0-3=기억장치 키
4=1
5-6=우선순위(버스어댑터 -처리기 버스)
7=1=주문자 구역 접근
0=마이크로 코드 구역 접근
8-31=데이타 필드내의 1차 바이트의 S/370 주소 명령, 필드 길이는 어댑터(154)의 레지스터(125)내에 저장된다. 키/주소 데이타는 SYNC 레지스터(113)을 경유하여 어댑터(154)의 레지스터(123)내에 저장된다. BCU논리(253)는 DMAC 채널(2)로의 회선(263c)상의 REQ 2 신호를 활성화시킨다.
DMAC(209)는 I/O버퍼 시작주소를 MAR로부터 버스(248), 래치(233), 버스(247), 멀티플렉서(232)를 경유하여 기억장치(210)에 송신하여 데이타의 2배 단어를 기억장치(210)로부터 A/D 레지스터(227)로 전송한다.
ACK 2(DMA 채널 2 긍정응답)는 회선(264c)상으로 상승된다.
이에 의하여 어댑터(154)로의 회선(262a)상에는 Tag Up이 생기게 된다.
그다음에 어댑터(154)는 데이타의 2배 단어를 레지스터(227)로부터 레지스터(113)를 경유하여 2개의 서브사이클내에 버스어댑터 버퍼(260)로 전송한다.
태그 엎 명령이 뒤따르는 REQ/ACK 신호의 기록순서는 데이타의 각 2배 단어를 전송하도록 반독된다. BCU(156)는 레지스터(222, 224)내의 바이트 계수, 레지스터(228)내의 주소 및 버스 어댑터(154)에 제시되는 각 2배 단어(32 비트)용 DMAC 채널 2의 MTC를 64 바이트까지 감소시킨다.
전송 바이트 계수가 64보다 더 큰 경우에는 (기록 작업에 관련하여 전술한 바와같이) BCU (156)는 그다음 64 바이트를 위한 새로운 시작주소를 제시한다. 버스어댑터는 각 시작주소별로 64 바이트 데이타를 버퍼시킨다. 이 순차는 레지스터(222)내의 바이트 계수(최대한 4KB)가 제로로 될 때까지 반복된다.
버스어댑터 버퍼(260)가 채워지면 BCU(156)는 버스어댑터가 태그 다운 회선(262c)를 경유하여 버퍼에게 가용지시를 제공할 때까지 기록 순차를 정지시킨다.
버스어댑터(154)는 어데버버스 BSM Select Up명령을 처리기 버스(170)와 키/상태 버스상의 S/370 처리기 버스 I/O 메모리 명령으로 제45u도 및 제45v도에 도시한 형식에 따라 전환시키며, 여기에서
처리기 버스 비트
0=0=I/O 메모리 명령
1=0=기억장치 조작
2-7=필드 길이
8-31=실바이트 주소
키/상태 버스 비트
0-3=기억장치 키
4=0=동적 번역 없음
모든 데이타가 전송된 때, (바이트 계수 =0), DMAC(209)는 S/88처리기 우선순위 암호기(212)로의 인터럽트 회선(258a)을 활성화시킨다.
(c) S/370 고우선순위 멧지 전송 순차 흐름 모든 고우선순위 메시지 전송은 I/O 서브시스템(S/88처리기 62)에서 생긴다. DMAC 채널(3)은 데이타 전송(16 바이트)을 수행하기 위하여 S/88 처리기(62)에 의하여 설정된다. BCU(156)는 데이타 통신 (Q Select Up 명령)을 위한 어댑터버스 채널(1)을 이용한다.
BCU(156)는 /88처리기(PE 62)가 MTC를 채널(3)내에 레지스터하기 위하여 DMAC 메모리 전송 계수 적재를 수행하는 때에 고우선순위 메시지 요구를 검색한다.
그 결과로서 BCU(156)는 채널(1)의 어댑터 버스(252)상에 S/370 PE 85에 대한 Q Select Up 명령을 발생시킨다.
S/370 I/O 판독데이타 전송(어댑터 버스 채널 1) 이 요구가 검출되었을때 진행중이면 BCU(156)는 현행 64 바이트 블록 전송이 요구를 인수하기 전에 완료될 때까지 대기한다.
어댑터 버스 채널(1)상에 I/O 활동이 없는 경우에는 요구는 즉시 처리된다.
이러한 고우선순위 메시지 전송을 더 상세히 설명하면 다음과 같다. PE(62)는 DMAC(209)가 지역버스를 이용하고 있지 아니한 경우에는 이 지역버스(223, 247)의 제어를 얻는다. PE(62)는 그 다음에 메시지 데이타를 프로그램 제어를 경유하여 지역기억장치(210)내에 저장한다. PE(62)는 정보를 제45w도에 도시한 형식으로 지역주소버스(247)상에 배치함으로써 지역버퍼 메시지 시작주소를 DMAC 채널(3) 메모리 주소 레지스터(MAR)내에 세트시키며, 여기에서
비트 31-08=007E00=DMAC 레지스터 선택 명령
07=00=DMAC채널(3) 메모리 주소 레지스터(LOW) 선택
메모리 주소 레지스터용의 지역버퍼 메시지 데이타의 시작주소는 제45x도에 도시한 형식으로 데이타 버스(223)상에 배치되며, 여기에서
비트 31-16=기억장치(210)내의 지역버퍼 메시지 데이타의 시작주소
15-00=지정된 비트
고위 데이타 버스(비트 31-16)는 DMAC 채널 (3) 메모리 주소 레지스터(MAR)의 저위(비트 15-0)부분내에 적재된다. MAR의 고위 비트(31-16)는 초기호 중 제로에 세트되어 있다. DMAC(209)는 회선(265)상의 DTACK신호를 가지고 응답하며 이 신호는 S/88처리기(62)에 대한 BCU 논리(253)를 경유하여 회선(266a, b)상의 16비트 포트 DSACK로 전환된다.
그다음에 S/88처리기(62)는 명령을 제45y도에 도시한 형식으로 지역주소버스 (247)상에 배치하며, 여기서
비트 31-08=007E00=DMAC 레지스터 선택 명령
07-00=BCU 및 DMAC 채널 (3) MTC 선택 바이트 계수, 기억장치 키 및 주문자/IOA 공장 비트는 S/88처리기(62)에 의하여 제45z도에 도시한 형식으로 데이타 버스상에 배치되며, 여기에서
비트 31-20=지정된 비트
19-16=전송 바이트 계수 비트. 이 비트들은 DMAC(209) 및 BCU(156)내에 적재되며 DMAC 및 BCU에 대한 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내에 저장함으로써 주소버스(247)상에 나타날때 데이타 버스 내용을 포착한다.
DMAC(209)는 DTACK신호를 가지고 논리(253)에 응답하고 논리는 이를 PE(62)에 대한 회선(266a, b)상의 32 비트 포트 DSACK응답으로 전환시킨다. 이 행동은 BCU(156)에서 경보를 주어 지역기억장치(210)로부터 S/370 BSM(162)로의 고우선순위 메시지 전송을 개시하게 된다. 전송 바이트 계수는 제45z도에 도시한 추가 데이타와 함께 BCU가 Q Select Up명령을 만들어내는 동안 버스어댑터(154)에 제시된다. Q 선택 카운터(254)는 채널(1) 기록 명령 레지스터(225)의 비트(4-7)내에 적재된다. BCU(156)는 Q Select Up명령을 버스(209)를 경유하여 레지스터(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 채널 3요구)를 작동시킨다. DMAC(209)는 I/O버퍼 시작주소(MAR로부터)를 지역버스(247)상에 배치하고 ACK(DMAC 채널 3긍정응답) 회선(264d)을 상승시킨다. 그 다음에 BCU(156)는 데이타의 최초의 4개 바이트를 지역기억장치(210)내의 주소지정된 I/O버퍼로부터 어댑터 버퍼(260)로 SYNC 레지스터(113)를 경유하여 2개의 서브사이클내에 전송한다. 그 다음의 4바이트 블록은 태그 엎 명령에 의하여 지시된 순차에 따라 버스어댑터(154)와 DMAC에 대한 REQ/ACK 회선(263d, 264d)으로 전송된다. BCU(156)는 버스어댑터(154)에 제시되는 각 2배 단어(32비트)별로 바이트 계수를 감소시킨다.
버스어댑터(154)는 Q Select Up 명령을 S/370 처리기 버스 I/O 메모리 명령으로 전환시켜서 메시지를 기억장치(162)의 구역(189)으로 송신하고 명령의 형식은 제45ac도에 도시되어 있으며, 여기에서 PROCBUS170 비트는
O=O=I/O 메모리 명령
1=0=저장 작동
2-7=필드 길이(최대한 64바이트)
8-31=실바이트 주소(어댑터 레지스터 110, 112로부터)
처리기(85) 키/상태 버스는 제45ad도에 도시한 형식으로된 데이타를 가지며, 여기에서
비트 0-3=기억장치 키
4=동적 번역 없음
모든 메시지 데이타가 버스어댑터(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상태 명령
Read BCU Status Command는 BCU(156)의 현재 상태를 읽기 위하여 S/88 처리기가 발할 수 있다. 이 명령은 S/88 처리기(62)에 의하여 제45ae도에 도시한 형식으로 주소버스(247)상에 배치되며, 여기에서 비트 31-00=007E10-판독 BCU 상태 명령
BCU(156)는 제45af도에 도시한 상태를 데이타 버스상에 배치하고 DSACK(32비트 포트)를 버스(266) PE62상에 복귀시킨다. 제45af도의 비트는 다음을 나타낸다.
31-29=어댑터버스 채널(O) 상태-키 검사, 주소 검사
28=1=최종 모든 데이타 사이클
0=기타 모든 데이타 사이클
27-26=어댑터버스 채널(1) 상태 키 검사, 주소 검사
25=버퍼 사용불가(Q Select Up 명령)
24=1=최종 데이타 사이클
0=기타 모든 데이타 사이클
23=어댑터버스 채널(0) 태그 다운
22=어댑터버스 채널(1) 태그 다운
21=BSM Read Sync Check
20=BSM 판독 선택 요구/계루 래치
19=BSM 기록 선택 요구/계루 래치
18=Q Select Up 요구/계류 래치
17=판독 우편함 진행중
16=BSM 판독 진행중
15=BSM 기록 진행중
14=Q Select Up 진행중
BCU 상태 비트(21)(BSM 판독 등기화 검사)는 S/88처리기(62)에 의하여 판독된 후 리세트된다. 이 비트는 BSM판독 작업이 종료되었을때 버스어댑터(154) 와 BCU(156) 바이트 계수가 일치하지 아니함을 표시한다. 따라서 오류가 검출되어 재동기화가 필요하게 된다.
BSM 기록 작업을 위하여 버스어댑터(154)는 태그 다운(262b)을 작동시켜 모든 데이타가 수신되었음을 표시한다. 그 다음에 태그 다운(262b)은 버스어댑터(154)에 의하여 그 활동이 중지되고 이때 상태 표시기가 BCU(156)에 제시되고 이에 의하여 포착된다. 태그 다운이 10us내에 정지되지 아니하면 BCU(156)는 버스어댑터(154)로의 취소회선(도시없음)을 작동시킨다. 이에 의하여 버스어댑터(154)가 BCU(156)로부터 분리된다. 태그 다운(262b)은 명령/상태 버스(252)를 경유하여 BCU(156)에 보고할 수 없는 어떤 오류를 표시하기 위하여 버스어댑터(154)가 이용된다.
(e) 프로그램된 BCU 리세트
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)상에 복귀시킨다.
계수, 키 및 데이타 트랙 형식 에뮬레이션(제46a도 내지 제46k도)
S/88 처리기와 I/O장치가 S/370 I/O 프로그램을 수행할 수 있는 적당한 방법의 예시로서 S/88상의 S/370 DASD의 에뮬레이션을 설명하면 다음과 같다. S/370은 목적시스템이라 하고 S/88은 목표시스템이라한다. 목표시스템용의 DASD(직접 접근 기억장치)데이타는 목표시스템이 에뮬레이션 형식으로 유지한다. S/370 처리기내에서 실행되는 S/370 코드는 목적시스템 소프트웨어라 한다. 이를 4부분으로 나누어 설명하면 다음과 같다.
1) 목적시스템-기존 S/370 직접 접근 기억장치 곱에 의하여 이용되는 계수, 키 및 데이타 기록 형식의 간단한 설명을 제공한다.
2) 목표시스템- DASD프로그램 인터페이스 모델을 설명한다.
3) 에뮬레이션 형식-목적시스템 필드를 이용되는 에뮬레이션 형식으로의 매핑을 설명한다.
4) 에뮬레이션 기능-목적시스템 기능을 에뮬레이션 기능으로의 매핑을 설명한다.
1. 목적시스템
DASD의 물리적 매체는 실린더로 분할되고 실린더들은 트랙으로 나누어진다. 각 매체의 수와 그 능력은 DASD의 타이프와 모델에 따라 달라진다. 각 실린더는 2바이트 실린더 번호(CC)에 의하여 주소지정 가능한 프로그램이고 하나의 실린더내에 있는 개별트랙은 분리된 판독/기록 헤드에 의하여 접근되고 각 헤드는 2바이트 헤드 번호(HH)에 의하여 주소지정 가능하다. 트랙의 물리적 위치는 그 실린더와 헤드 번호에 의하여 주어지고 따라서 4바이트 트랙주소(CCHH)에 의하여 명시된다. 각 트랙에는 홈 주소, 트랙 기술어(기록 0), 하나 이상의 데이타 기록이 들어있다. 각 기록의 크기는 프로그램 가능하고 홈 주소와 기록 크기가 트랙상에 기록된 때에는 이 트랙은 형식화되었다고 말한다. 모든 트랙은 그 트랙 인덱스로부터 다음 트랙 인덱스까지 형식화한다. 제46a도는 이러한 트랙의 하나를 도시한 것이다.
물리적 매체상에 기록되는 정보의 기본 단위는 8개의 비트로 구성되는 데이타 바이트이다. 일단의 데이타 바이트는 하나의 구역을 구성하고 장치는 이러한 구역들을 그 사이의 갭을 기록함으로써 이 구역들을 분리시킨다. 각 기록은 2개(계수, 데이타) 또는 3개 (계수, 키, 데이타) 구역으로 구성되는 반면, 홈 주소는 하나의 구역만으로 구성된다. 목적시스템 기록을 구성하는 3개의 구역은 계수, 키(선택적) 및 데이타이다.
계수구역에는 다음의 필드들이 들어있다.
F 플래그 1 바이트 트랙 조건, 논리적 기록 트랙 오버플로우를 표시한다.
CCHH 트랙주소 2 바이트 트랙이 물리적으로 위치되는 경우에는 실린더 및 헤드 번호를 표시한다.
R 기록 번호 1 바이트 트랙상 기록의 순차 번호를 표시한다.
KL 키 길이 1바이트 키 구역내의 바이트 수를 표시한다.
DL 데이타 길이 2 바이트 데이타 구역내의 바이트 수를 표시한다.
ECC 오류코드 2 바이트 오류 탐색/정정 코드용으로 이용된다.
키 구역에는 다음의 필드들이 들어있다.(KL=0이면 이 구역과 그 갭은 생략된다.)
KEY 키 바이트 사용자 데이타
ECC 오류 코드 2 바이트 오류 탐색/정정 코드용으로 이용된다.
데이타 구역에는 다음의 필드들이 들어있다.
DATA 데이타 바이트 사용자 데이타
ECC 오류코드 2 바이트 오류 탐색/정정 코드용으로 이용된다.
각 트랙의 제1구역은 홈 주소이다. 여기에는 다음이 필드들이 들어있다.
F 플래그 1 바이트 트랙 조건을 표시한다.
CCHH 트랙주소 2 바이트 트랙이 물리적으로 위치하게 될때 실린더와 헤드 번호를 표시한다.
ECC 오류코드 2 바이트 오류 탐색/정정 코드용으로 이용된다.
기록 0(트랙 기술어)는 언제나 홈 주소구역 다음에 오는 첫번째 기록이다. 적당한 프로그래밍 시스템에 있어서 기록(0) CCHH 필드는 트랙이 결함있는 것으로 플래그된 경우에 대체트랙을 정의한다. 키 길이는 통상적으로 기록(0)에 있어서 제로이다. 기록(0)의 뒤에는 하나 이상의 데이타 기록에 따라올 수 있다. 키 구역은 선택적이며 키 구역이 있으면 이 구역에는 1 내지 255 바이트가 들어갈 수 있다. 기록의 수는 Format Write CCW명령어 계수, 키 및 데이타 구역을 기록하는 때에 결정된다. 기록이 형식화된 후, 사용자 데이타 구역은 트랙상의 인접기록을 파괴함이 없이 판독하거나 재기록(다른 CCW명령을 이용하여)할 수 있다. 기록이 재형식화되면 동일한 트랙상의 이 기록 다음에 오는 기록들은 파괴된다.
2. 목표시스템
DASD(제46b도)는 1부터 순차적으로 번호가 부여된 4096 바이트 블록 데이타가 들어있는 화일의 형태를 /88 마이크로 코드에 제시된다. 에뮬레이션 기구는 목적시스템 형식과 기능을 사용가능한 목표시스템 형식 및 기능조합으로 맵시킨다.
3. 에뮬레이션 형식
목적시스템내의 서로 다른 DASD 타이프와 모델이 물리적 파라미터는 변동된다. DASD타이프와 모델번호는 여러가지 파라미터와 함께 목표시스템 화일의 제1데이타블록(INFO)내에 보관된다. (제46c도) 화일의 벨런스에는 모방된 목적트랙 데이타가 들어있다. (제46c도) 각 트랙용 데이타는 전정수의 데이타 블록내에 유지된다. 각 트랙용으로 필요한 목표시스템 데이타 블록의 수는 제1데이타 블록내의 보관된 하나의 파라미터이다. CCHH=0000으로 시작되는 목적시스템내의 각 트랙은 목표시스템 화일내에 순차적으로 보관된다. 그 시작블록번호는 INFO 블록내의 보관된 CCHH및 목적디스크 규격이 주어지면 계산 할 수 있다.
각 모방트랙(제46d도)에는 현재 트랙상에 존재하는 기록들의 디렉토리, 디렉토리 헤더 및 각 기록별 사용자데이타(키, 데이타)가 들어있다. 디렉토리는 특별기록을 위한 데이타를 찾아내고 기록 또는 키 연산에 대한 탐색을 수행하고 트랙상의 최종기록에 접근하고 트랙오버플로우를 조정하는데 이용된다.
목적시스템 데이타는 에뮬레이션 환경내에서는 3가지 방식, 즉 유지, 묵시적 보유 또는 비보관중 하나의 방식으로 다루어진다.
모든 갭은 불필요하며 보관되지 아니한다. ECC 데이타는 데이타의 완전성이 목표시스템에 의하여 보장되기 때문에 새로 만들어지거나 유지되지 아니한다. 목표시스템이 제공하는 프로그램 모델이 고장난 물리적 표변구역을 모두 제거하기 때문에 목적시스템내의 대체트랙은 고장없이 실시된다. 이것은 트랙 조건을 표시하는 플래그 바이트(F)의 일부가 유지되지 아니하고 목적 시스템 소프트웨어에 의하여 기록된 플래그 바이트가 유효성 검사를 받고 버려진다는 것을 의미한다.
목적시스템 소프트웨어에 의하여 통과된 CCHH(트랙주소)는 목표시스템 DASD 화일내의 모방트랙의 위치를 계산하는데 이용된다. 그것은 다음에 설명하는 트랙 헤더내에 보관되지만 모방트랙의 계수 및 홈 주소구역 전역에 확산되지 아니한다. 홈 주소는 명시적 구역으로서 보관되지 아니한다. 목적시스템 소프트웨어에 의하여 통과된 기록번호(R)는 묵시적으로 유지되고 명식적 데이타로서 나타나지 아니한다.
각 기록용 사용자데이타, 선택 키 및 데이타 필드는 트랙 디렉토리 바로 다음에 이어서 모방트랙내에 순차적으로 유지된다.(제46d도)
목적시스템 데이타 IF(논리기록트랙 오버플로우), KL, DL의 밸런스는 트랙 디렉토리내에 유지된다. (제46e도) 디렉토리 엔트리에는 F, KL 및 DL와 각 기록별 사용자데이타(KEY 및 DATA)에 대한 포인터(P)가 들어있다. R는 디렉토리 엔트리 번호로서 묵시적을 유지된다. 제46e도는 헤더, 디렉토리 및 사용자 데이타 메이크 엎과 모방트랙의 목표시스템 4KB 블록으로의 매핑을 도시한 것이다. 포인터(P O-P 2)는 사용자데이타 기록(0-2)의 시작주소(4KB 블록이내)를 가르킨다.
4. 모방기능
이 항은 목적시스템의 DASD CCS명령어의 일부를 제공함에 있어서 전술한 에뮬레이션 형식의 사용을 설명하는 것이다. 제46f도 내지 제46k도는 판독 및 기록작업중 목적시스템 소프트웨어에 의하여 전송된 데이타를 나타낸다. 홈 주소가 포함되는 CCW 연산(ops)에 있어서 제46f도의 F 및 CCHH값은 계산 또는 검사되지만 모방트랙에는 아무것도 기록되지 아니한다.
레코드 0이 포함되는 CCW연산에 있어서(제46g도) CCHH및 R필드는 검사되지만 아무것도 기록되지 아니한다. KL 및 DL 필드는 적당한 디렉토리 엔트리로 또는 디렉토리 엔트리로부터 전송된다. 레코드 0은 사용자데이타 구역내의 오프셋 제로에 있다. 판독/기록 레코드 0는 언제나 헤드를 트랙내의 첫번째 레코드를 지향하게 한다.
계수를 수반하는 CCW 연산은 언제나 헤드를 트랙내의 다음 레코드를 지향하게 한다. (제46h도) 키와 데이타가 수반되는 CCW 연산에 있어서 사용자데이타의 위치 및 크기는 디렉토리내에서 찾게된다(제46i도). 계수, 키 및 데이타가 수반되는 CCW연산은 판독/기록 헤드를 트랙내의 다음 레코드로 지향하게 한다. (제46j도) 다중 계수, 키 및 데이타가 수반되는 CCW연산에 있어서 처리는 다음 디렉토리 엔트리를 가지고 시작하며 최종유효 디렉토리 엔트리까지 계속된다. (제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 구역을 새로 만들려고 하면 충분한 인접 기억장소를 이용할 수 있게 될때까지 모든 프로세스를 중단하고 이미 여러가지 프로세스에 할당한 기억장소 블록들을 재할당하는 복잡한 루틴을 수행하여야 한다.
이하에서 설명하는 응용 프로그램 EXEC 370에 있어서 서비스 루틴은 S/370 기억장소 구역을 S/88 운영 시스템으로부터 도용하기 위한 여러가지 기능을 제공한다.
2. S/88 기억장소(16)매핑
먼저 S/88 주기억장치(16)를 관리/매핑시키는 적당한 방식을 제48a도 내지 제48k도에 의하여 설명한다.
제48a도는 어느 프로세스의 가상 주소공간을 유지하기 위하여 S/88 운영시스템(S/88 OS)이 설정한 소프트웨어 구조의 간단한 개관이다. 소프트웨어 구조에는 다음의 소자들이 포함되어 있다.
pte-프로세스 테이블 엔트리(프로세스를 나타낸다)
pmb-프로세스 맵 블록, 이러한 블록들은 한데 연쇄되어 이 프로세스의 가상 주소공간용의 2pte를 가르키는 포인터(pme)를 포함한다.
pmbp-체인내의 제1pmb를 가르키는 pte내의 포인터
pme-pmb내에 들어있는 프로세스 맵 엔트리(apte의 포인터)
mme-물리적 기억장소 맵 엔트리. mme 배열내에는 시스템 즉, 기억장치(16)내의 물리적 기억장소의 4KB페이지마다 하나의 mme가 들어있다.
apte-활동 페이지 테이블 엔트리. apt 블록내에는 시스템내의 단일 가상 페이지마다 하나의 apte가 들어있다.
vpn-프로세스 가상 주소공간내의 가상 페이지 번호
pmt-프로세스 관리 테이블. 시스템내의 각 프로세스(pte)에 대한 pmt내에 하나의 포인터(ptep)가 있다.
ptep-하나의 프로세스에 대한 프로세스 테이블 엔트리 포인터
제48a도의 기억장소 맵 구조는 기억장소 관리장치(105)(제10도 및 제47도에 의하여 이용된다. 이러한 구조는 적당한 실시예에 있어서 각각 512개의 순서화된 mme가 들어있는 하나 이상의 mm배열(제48c도)로 구성된다. 각 mme는 실기억장소(16)의 하나의 4KB 페이지를 나타내며 따라서 하나의 mm배열은 512*4=2 접속 기억장소를 나타낸다.
제47도의 박스표지 기억장소 맵 배열은 순차 주소순위로 배열된 mme배열을 개념적으로 도시한 것이다.
mme은 다음의 3개 리스트중 하나에서 다루어진다.
1) 사용된 리스트, 프로세스에 지정된 mme
2) 리클레임 리스트, 자유리스트에 복귀될 mme
3) 자유리스트, 프로세스에의 지정을 위하여 이용할 수 있는 mme. mme가 하나의 리스트에서 다른 리스트로 이동됨에 따라 그 포인터도 적당히 갱신된다.
mme는 어느 리스트상에도 없는 경우에는 영구적으로 배선된 페이지이거나 과도상태에 있음을 나타낸다. 기억장소 관리장치(105)가 이용하는 mme데이타 구조에는 제48b도에 도시한 3개 리스트 포인터가 들어있으며, 여기에서 플래그 배선된 페이지가 연결되어 있다.
I/O 진행중 현재 디스트 I/O 진행중
기록 이 프레임은 디스크에 대한 기록이었기 때문에 최종(또는 혀재) I/O를 표시한다.
연결된 페이지는 하드웨어 레지스터내에 PTW(물리적 테이블 단어)를 가진다.
수정된 비트를 최종 조사하라.
미사용(2) 퇴거 이 페이지를 지워서 자유롭게 클린업할 포스트를 통지한다.
미사용(1) 퇴거 지워버릴 포스트를 통지한다.
프리
페이지 고장 이 페이지상에 대기하는 일부 pf
다음 mme 다음 mme에 대한 ppn(물리적 페이지 번호)
prev mme 이전 mme에 대한 ppn
address 메모리내에 있는 동안의 디스크 주소
astep이 페이지용 apte를 가르키는 포인터
"nest"와 "previous" mme필드는 연쇄 리스트(사용된, 리클레임, 자유리스트)를 만들어내는데 이용된다.
S/88 물리적 기억장소가 S/370 기억장소구역용으로 포착되었을때, 다음에 설명하는 바와같이 변경되는 것은 다음 mme와 이전 mme의 물리적 페이지 번호이다. 적당한 실시예에 있어서 각 mmep배열(제48c도)은 128 포인터 리스트이고 각 포인터는 하나의 mme 배열의 가상 주소이다. 최초의 n포인터들은 모든 mme배열의 순서화 리스트이다. 나머지 128-n 포인터들은 NULL이다. 이것은 128*2MB=256MB 실기억 장소의 트랙을 보관할 수 있는 능력을 제공한다. 이러한 각 포인터에는 16 최대유효(고위)비트의 물리적 주소(물리적 페이지 번호 ppn라고 하는)가 포함되어 있고 특정 mme의 포인터로서 이용된다. ppn의 7고위 비트는 mme배열을 선택하고 ppn의 9하위 비트는 이 배열내에서 mme를 선택한다. 물리적 주의 12하위 비트는 기억장소(16)의 실(물리적) 페이지내로의 오프셋이다.
메모리 맵 정보(mme 맵 info) 구조(제48d도)는 맵용으로 이용되는 메모리의 트랙을 보관하는데 이용되면, 여기에서 mem map infop-1 제1mem맵의 포인터
nest mem map infop 다음 mem맵 정보구조의 포인터
n pages 이 맵(최대한 16)에 의하여 이용되는 실메모리의 4K 페이지 수
per page(16) 구조의 밸런스는 페이지당 정보의 배열이다.
ppn 이 페이지용 의 물리적 페이지 수
활동성 페이지 테이블 엔트리(apte)는 가상 기어장소의 트랙을 보관하는데 이용된다. 시스템내의 모든 가상 기억장소 공간내에 있는 가상 기억장소의 각 4KB 페이지별로 하나의 apte가 있다. apte구조(제48e도)는 가상 공간의 소유자, 페이지의 가사 주소 및 디스크 주소가 불러내어진 경우에는 이러한 디스크 주소의 실메모리 주소를 표시한다.
하나 이상의 프로세스가 동일한 가상 주소 공간을 공유하고 있는 경우에는 모든 프로세스들은 트레일러(제48g도)를 경유하여 식별되며 각 가상 페이지별 apte는 이러한 트레일러를 가르킨다.
apte 구조에는 다음이 포함되어 있다.
address 실주소(=1로 지정된 플래그 mem)
4 페이지
디스크 주소(=0으로 지정된 플래그 mem)
자유 apte가 자유리스트상에 있는 경우에는 다음 자유 apte의 주소
주소
flags 프로세스 당 다른 프로세스들과 공유되지 아니한 가상 페이지
분기 페이지 프로세스당 페이지가 분기되었다.
지정 mem페이지는 기억장소를 가지고 있다.
대기 이 페이지의 대기 지정
I/O 오류 페이지상에서 생긴 I/O 오류
릴리스 apte I/O가 종료된 때 APTE를 풀어 놓는다.
CPU 타이프 페이지가 부트에서 패치되었다.
불량주소, 오류가 새 주소 강제 재지정
계수 이 페이지를 공유하는 프로세스의 수
vpage 가상 페이지 vpn은 27비트 가상 주소의 수 16최대유효 비트로 구성된다.
process ptr 프로세스당(가상 메모리를 공유하지 ate주소 또는 아니한 경우)
apt 트레일러(가상 메모리를 공유하는 주소 경우)
각 apte는 12바이트의 길이이고 각 활동성 페이지 테일러(apt) 블록내에는 256개의 엔트리가 들어있다. (제48f도)블록내의 apte의 상대위치는 중요하지 아니하다. 모든 미사용 apte는 자유 apte리스트에 이어진다. 추가 apte가 필요하고 리스트가 null인 경우에는 배선 히프(heap)내에 새로운 apt블록이 할당되고 전체 256apte는 자유 aptep리스트상에 이어진다.
apt 트레일러(제48g도)는 공유 프로그램 영역용으로 이용되고 배선 시스템 히프내에 할당되며 EITE(수행 가능 영상 테이블 엔트리) 또는 apte에 의하여 포인트된다. 프로그램당 4개의 트레일러(영역당 1개씩)가 있다. 트레일러는 시스템으로 하여금 페이지를 이동시킬때 페이지를 가르키는 모든 PTW를 찾아내게 한다.
apt 트레일러 구조에 포함되는 것은 다음과 같다.
n procs 이 트레일러를 이용하는 프로세스의 수
v base (영역 베이스 vpn) 이영역의 최초가상 페이지
n pages 영역내의 페이지 수
users 트레일러 사용자의 비트 맵
pp info(O : nnp) 구조의 밸런스는 프로세스 정보당 배열이다.
npp 배열의 크기
n ptws이 시간에 연결된 PTW의 수
aptep 이 페이지용 APTE의 포인터
프로세스 테이블 엔트리(ate)(제48h도)에는 프로세스를 관리하는데 필요한 정보가 들어있고 프로세스의 가상 주소공간에 관한 정보가 들어있다. 각 페이지 테이블 엔트리에는 다음이 포함된다.
first pmb ptr 이 프로세스용 pmb 리스트내의 제1pmb의 포인터
map root tbl phys addr 물리적 맵의 가상 주소
map root ptr virt 가상 맵 영상
pdr ptr 프로세스 데이타 영역의 주소
프로세스 맵 블록 구조(제48i도)는 프로세스 가상 공간을 실메모리 공간내에 맵시키는데 이용되며 다음이 포함된다.
nextp 이 프로세스용 다음 pmb의 포인터
bsae vpn 기준가상 페이지 수, 이 pmb의 제1가상 페이지 수 (6개의 최소유효 비트는 제로가 된다.)
map addr 맵의 물리적 주소
pme 프로세스 맵 엔트리(0-63), 구조의 밸런스는 페이지당 정보의 배열이다. 이 배열내의 인덱스는 vpn의 6 최소유효 비트이다.
flags used 이용된 비트의 복사
in mem 페이지는 메모리내에 있다.
unused(1)
fence 이 페이지는 펜스 페이지이다.
wired 이 페이지가 들어오면 이를 연결시켜라.
copy on 기록된 때 복사 페이지
write
patched 페이지는 패치 코드 페이지이다.
ufence 사용자 펜스 페이지
aptep 이 페이지용 APTE의 포인터
프로세스 관리 테이블(제48j도)애는 시스템내의 모든 프로세스에 대한 포인터 ptep목록, 시스템내에서 이용할 수 있는 페이지의 수 및 위탁 페이지의 수를 포함하는 스케줄러에 의하여 이용되는 정보가 들어있다.
제48k도의 물리적 테이블 단어(ptw)에는 다음이 포함된다.
ac 1 ptw 접근 코드
ppn 원하는 페이지의 물리적 페이지 수
ac 2 ptw접근 코드
u 01 ptw는 사용된다.
3. 개시 절차
시스템/88에는 시스템에 전원을 공급하고 시작 화일에 포함되어 있는 프로그램과 데이타 모듈을 부트시키는 시작 절차가 포함되어 있다.
자동 시작에 있어서는 프로그램 가능 판독 전용기억장치(prom)(181)(제12도)는 시스템/88 및 시스템/370 소자들에 대한 진단과 자체검사를 실행한다. 이러한 타스크가 완료되면 PROM(181)은 마스터 디스크(도시없음)로부터 S/88 운영시스템을 적재하는 유틸리티 프로그램을 읽는다.
모듈 시작 코드는 모든 구성장치와 디스크를 초기화하고 시스템 캘린더 클럭으로부터의 내부클럭을 세트시킨다. 이 화일에는 운영시스템의 모듈의 시작절차의 일부로서 수행하는 명령이 들어있다. 이러한 절차에는 모듈에 관련되는 기판, 디스크 및 장치의 구성을 명시하는 테이블 화일을 읽고, 시스템내의 모듈들을 식별하고, 여러가지 시스템 서비스 프로세스를 시작하는 기능들이 포함되어 있다.
모듈 화일은 새로운 시스템을 가동시킬만큼 충분한 데이타를 공급하고 주문자가 그 요구사항에 적합하게 수정할 수 있다. S/88 주기억장소(16)으로부터 S/370구역(162-164)을 포착하기 위하여 특정한 명령어들을 모듈 시작 코드 명령화일내에 삽입한다. 예를들면, 3개의 S/370 처리기(21, 23 및 25, 27 및 29, 31)와 이 처리기용의 3개의 S/370 기억장소 구역(162, 163, 164)을 가진 제10도의 구성을 가정하면 다음의 명령문이 모듈 시작 코드 명령화일내에 삽입된다.
시작 S/370 처리기 # 1 VM 8메가바이트
시작 S/370 처리기 # 2 AIX 4 메가바이트
시작 S/370 처리기 # 3 VSE 16 메가바이트
4. S/370 서비스 루틴
각 시작 S/370 명령은 특정한 S/370 처리기(#1, #2 또는 #3)용의 기억장소로부터 일블록의 실기억장소 공간을 "도용"하도록 소프트웨어 루틴이 수행되게 한다. 그다음에 적당한 S/370 운영시스템이 "도용된"실기억장소 공간내로 IPL된다. 소프트웨어 루틴의 기능은 S/88 기억장소로부터 기억장소 구역을 포착하고 적당한 때에는 이러한 구역을 "대치"하는 것이다. 이러한 기능을 수행하기 위하여 다음의 5개의 서브루틴이 이용된다.
a) 서브루틴 S/370 디스플레이스 기억장치는 S/88 운영시스템 테이블로부터 일블록의 물리적 기억장소를 추가한다. 블록의 기준주소는 메가바이트 경계상에 있게 되고 그 크기는 정수량의 메가바이트내에 있다.
사용 S/370 디스플레이스-stor 엔트리 이전 (15), 이진 (15), 이진 (15)을 선언하라. S/370 디스플레이스stor(n blks, ppn, 오류 코드)을 호출하라.
인수-n blks(입력) 원하는 접속 메가바이트의 수
ppn(출력)
블록내의 실기억장소의 최초의 최하위 또는 최고위 4K 페이지의 물리적 페이지 수, ppn의 8개 최소유효비트는 제로가 되고 블록의 기준 실주소는 4096ppn이 된다.
오류-코드(출력)
불충분-자유-적어도 하나의 MB를 디스플레스하기 위하여 이용할 수 있는 충분한 접속 자유 블록이 없다.
pro ded-less-디스플레이스된 MB의 수가 요구받은 수보다 적다.
b) 서브루틴 S/370 리플레이스 기억장치는 일블록의 물리적 기억장소를 S/88 운영시스템 테이블로 복귀시킨다.
사용
선언 S/370 리플레이스-stor 엔트리(이진 (15), 이진 (15), 이진 (15) ;
호출 S/370 리플레이스-stor(n-blks, ppn, 오류-코드) ;
인수
n-blks(입력)
복귀중에 있는 접속 메가바이트의 수
ppn(입력)
블록 베이스의 물리적 페이지 수. ppn의 8 최소유효 비트는 제로이어야 한다.
오류-코드(출력)
cannot-free-connected-기억장소를 VOS에 복귀시키려고 하기 전에 S/370 폐쇄 기억장소를 이용하여야 한다.
c) 서브루틴 S/370 Open Storage는 이전에 디스플레이스된 물리적 기억장소의 일부 또는 전부를 호출자 가상 주소 공간에 연결시키고 가상 페이지 수를 복귀시킨다. 적당한 apte및 pme가 만들어지고 가상 대 물리적 매핑이 설정된다. 접근코드는 "판독/기록'이고 기억장소가 연결된다.
사용
선언 S/370 open-stor 엔트리(이진 (15), 이진 (15) 이진 (15), 이진 (15);
호출 S/370 open-stor (n-blks,ppn, vpn, error-code) ;
인수
n-blks(입력)
요구받는 접속 메가바이트의 수
ppn(출력)
영역내의 최초 4K 페이지의 물리적 페이지수, ppn의 8 최소유효 비트는 제로가 된다.
vpn(출력)
영역내의 최도 4K 페이지의 가상 페이지수, vpn의 8 최소유효 비트는 제로가 되며, 가상 주소는 4096vpn이다.
error-code(출력)
복귀된 오류 코드
d) S/370
서브 루틴 S/370 폐쇄 기억장치는 이전에 개방된 물리적 기억장소를 호출자 가상 주소 공간으로부터 분리시킨다. 적당한 APTE와 PME는 S/88 운영시스템으로 복귀되고 가상 대 물리저거 매핑이 고장난다. 물리적 기억장소는 S/370 디스플레이스 기억장소 루틴으로 복귀된다.
사용
선언 S/370 close-stor 엔트리(이진 (15), (이진 (15), (이진 (15) ;
호출 S/370 close-stor(n-blks, vpn, error-code) ;
인수
n-blks(입력)
복귀중인 접속 메가바이트의 수
vpn(입력)
복귀중인 영역내의 최초 4K페이지의 가상 페이지 수
error-code(출력)
복귀된 오류 코드
e) Gain Freedom은 START-370 프로그램에 의하여 호출되는 서브루틴이다. 그것은 START-370 프로그램을 S/88 수퍼바이저 방식으로 놓기 때문에, 위의 4개 서브루틴이 수행될 수 있다 일단 -37이 수퍼바이저 방식으로 되면, 벡터 포인터는 S/88 운영시스템으로부터 기억장소 블록들을 이동시키고, 기억장소를 각 S/370 처리기에 재지정할 수 있게 수정할 수 있다.
이러한 서브루틴은 메모리 할당을 변경히키고 S/88 처리기의 인터럽트 레벨(6)용 수동 벡터를 변동시키는데 이용된다. 주문자는 시스템 안전보장의 이유로 이러한 호출을 알지 못하거나, 이에 저버근하지 못한다.
사용
선언 S/370 gain-freedom entry (이진(15), 이진(15),
호출 S/370 gain-freedom(give-take, error-code) ;
인수
give-take(입력)
0값은 호출자를 응용사용자 상태로 복귀시키고, 다른 값은 호출자를 수퍼바이저 상태로 비트시킨다.
error-code(출력)
복귀된 오류 코드위의 서브루틴의 기능 스탭은 다음과 같다.
S/370 Displace Storage
1) 자유를 얻고, mme 배열 프리리스트를 로크하라.
2) 인접자유 mme의 최대 스트링용 자유리스트를 탐색하라.
3) MB 경계에 대한 양끝을 반올림하고, nblk와 스트링내의 4KB블록 수를 계산하라.
4) nblks>n-blks이면 nblks를 n-blks(요구된 4KB수)로 세트시키고, 기준 ppn경계를 수정하라.
5) mme의 선택된 스트링을 자유리스트에서 분리시켜라.
6) 시스템 가용계수로부터 n페이지를 공제하라.
7) mme-배열 프리리스트를 풀고, freedom을 버려라.
8) 세트시켜라. ppn=기준ppn
nblks<n-blks이면 rc=오류 nblks<=0이면 rc=오류 오류가 없으면 rc=0
S/370 Replace Storage
1) 모든 엔트리들이 연결되지 아니하였는가를 검사하고 플래그를 제로에 세트시키고, mme를 적당히 연쇄하라. 문제가 있는 경우에는 오류를 복귀시켜라.
2) Gain-freedom, mme 배열 프리리스트를 로크하라.
3) mme를 다음에 연결시키기에 적당한 위치를 위한 자유리스트를 탐색하라.
a. 기준 ppn에 인접한 1차 후보
b. 리스트 종단에 있는 2차 후보
4) 블록전체를 자유리스트에 연결시켜라.
5) n페이지를 시스템 가용계수내에 다시 추가하라.
6) mme-배열 프리리스트를 풀고, freedom을 버려라.
S/370 Open Storage
1) 이 프로세스의 테이블 엔트리를 찾고, pmb 경계상의 그 가상 기억장소내에서 MB의 n-blks용으로 충분한 크기의 홀을 찾아라. 요구에 서비스할만큼 충분한 디스플레스 mme가 있는지의 여부를 확인하라.
문제가 있는 경우에는 오류를 복귀시켜라.
2) 필요한 경우에는 pmb 및 apte용 배선공간을 할당하라.
3) 전체 구조를 설치하라.
mme 배선 및 연걸
me. aptep->apte
pme. aptep->apte
모든 플래그를 적절히 세트시킨다.
apte. ptep->pte
4) 새로 구성된 pmb 체인을 타스크 pmb체인에 묶어라.
Close Storage
1) 이 프로세스의 테이블 엔트리를 찾고, s$ open-storage에 의하여 구성된 pmb를 찾아라. 아무것도 찾지 못하면 복귀하라.
2) 이러한 pmb를 프로세스의 pmb 체인으로부터 분리시켜라.
3) 각 apte별로 실 매핑의 고장을 찾기 위하여 setup-ptw를 호출하라.
4) pmb 및 apte용 배선공간을 OS에 복귀시켜라.
5) mme를 Displace-Storage 루틴으로 복귀시켜라.
Gain Freedom
1) give-take 인수의 주소를 얻어라.
2) freedom을 포기하는 경우에는 스텝(7)로 가라. 다음 스텝들은 freedom을 얻는다.
3) OS를 수퍼바이저 상태에 있는 동안 호출자에게 복귀하게 트랩(13)을 수행하라.
4) 사용자 스택 주소를 얻고, 시스템 스택 포인터와 교체하라.
5) 시스템 스택 주소를 사용자 스택 포인터내에 남겨두라.
6) 사용자 스택상에서 수퍼바이저 상태에있는 호출자에게 복귀시켜라. 다음 스텝들은 freedom을 포기한다.
7) 제외된 시스템 스택 주소를 다시 얻어서 시스템 스택 포이터에 대체하라.
8) 사용자 스택 조소를 사용자 스택 포인터내로 옮겨라.
9) 트랩 조정기가 스탭(11)으로 복귀될 수 있도록 스택을 수정하라.
10) 트랙 조정기로 복귀시켜라.
11) 트랙 조정기를 사용자에게 복귀시켜라.
12) 사용자 트랙상에서 사용자 상태에 있는 호출자에게 복귀시켜라.
5. 선택된 mme스트링이 자유 리스트로부터의 분리
FIRST MME는 분리된 스트링내의 최초 mme에 관한 것이고 기준 ppn에는 그 ppn(물리적 페이지 수)가 들어있다. LAST MME는 스트링내의 최종 mme에 관한 것이다. FIRST MME가 자유 리스트의 선단(그 전의 mme필드는 제로와 동일하다)에 있는 경우에는 자유 리스트 포인터는 LAST MME의 다음 -mme필드에 동일하게 세트된다. 따라서 LAST MME 다음의 mme는 자유 리스트의 선단에 있게 된다. 그렇지 아니한 경우에는 FIRST MME앞의 mme의 다음 mme필드는 LAST MME의 다음 -mme 필드와 동일하게 세트된다. LAST MME(그 다음 mme 필드는 제로가 아님) 다음의 mme가 있는 때에는 LAST MME의 다음 mme의 선행 mme 필드는 FIRST MME의 선행 필드와 동일하게 세트된다.
6. 기억장소 베이스 및 크기의 STICI에의 기록
기억장치는 S/88 OS로부터 "도용"된 후, 구성 화일내에 기술된 요건에 따라 S/370 처리기 사이에 배분된다. 구성 배열이 각 S/370 처리기용 기준 ppn및 n blks가 들어있는 S/88 커널 기억장소내에 내장되어 있다. n blks라 함은 기억장소의 접속 메가바이트의 수를 말한다. n blks는 도용된(분리되지 아니한) mme의 수를 256으로 나눈 수와 같다. 각 S/370 처리기의 EXEC 370 타스크가 그 해당 S/88 처리기내에서 개시된 때에는 이 타스크는 STCI단어를 수집하기 위하여 해당 기준 ppn과 n blks 값을 이용한다. 그 다음에 이 단어는 가상 주소 007E01FC(지역기억장치(210) 주소 공간내)에 기록됨으로써 S/88 운영시스템에 투명한 STIC 레지스터(404, 405)를 초기화시킨다.
제19a도, 제20도와 관련하여 앞에서 설명한 분리기구(216)과 BCU 인터페이스 논리(253)는 레지스터(404, 405)를 초기화하는데 이용된다.
그러나, 제32b도에 도시한 적당한 실시예에 있어서, 레지스터(404, 405)는 직접으로 S/88 처리기 데이타 버스(161)(BCU 지역 데이타 버스 223에 연결되기 보다는 )에 연결된다. 논리(216)의 해독논리(280)는 위의 가상 주소를 해독하여 S/88 하드웨어로부터의 AS를 차단하고, DSACK를 처리기(62)에 복귀시킨다. 레지스터(404, 405)는 논리(253)로부터의 STCI 선택회선(458)을 경유하의 가능하게 된다. STCI 단어의 비트(27-20)는 STCI "기준"주소를 형성하고, 비트(23-20)는 S/370 기억장소 "크기"값을 형성한다. 비트(19-0)는 제로들이다.
S/370에 의하여 개시되는 S/88 인터럽트용 초기화 기능
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) 인터럽트 코드는 완료되면 제어를 회복 환경을 관리하는 운영시스템 인터럽트 조정기에 복귀시킨다.
위의 첫번째 방법은 전술한 모든 것을 포관한다. S/370 인터럽트 루틴을 가리키기 위하여 S/370 인터럽트 벡터를 어셈블함으로써 S/88 운영시스템이 수행하는 정상적 인터럽트 처리를 모두 피하고, 장치 화일을 경유하여 S/370을 식별할 필요가 없다. 이것은 하드웨어에 갈음하여 코드가 수정되었기 때문에, 실제로는 소프트웨어 분리이다. 이러한 첫번째 방법은 원하는 인터럽트 기능을 달성할 수 있는 가장 신속하고 비용이 적게 소요되는 방법이다. 그러나, 이 방법은 이후에 S/88 운영시스템을 리리스할때마다 추가 보수를 하여야 한다. 이것은 적어도 커널 바인드를 필요로 하며, 인터럽트 조정기가 변경된 경우에는 S/370 인터럽트 코드를 다시 삽입하고, 인터럽트 조정기를 다시 어셈블하여야 한다.
두번째 방법에는 시스템 부트 후 운영시스템 인터럽트 벡터의 수정이 포함되며, 제20도의 하드웨어 인터럽트 기구의 설명과 함께 사용하기 위한 것도 바로 이 방법이다.
두번째 방법에서는 S/370 인터럽트 코드를 S/88 운영시스템 가상 주소 공간(적당한 실시예에 있어서, 007E0000 바로 아래)내에 배치하고, 운영시스템 커널 인터럽트 조정기내의 적당한 인터럽트 벡터를 수정할 필요가 있다. 이 작업은 운영시스템이 초기화된 후(S/370 초기화 루틴이 기억장소를 "도용"하는 것과 동시에) S/370 초기화 루틴에 의하여 행하여진다. 초기화 루틴은 S/88 운영시스템 커널 기억장소 구역을 수정하기 때문에, 이 루틴은 위에서 기억장소를 "도용"하는 것과 같은 방법으로 "freedom을 얻어야"한다. 이러한 두번째 방법은 새로이 릴리스되는 각 S/88 운영시스템 커널을 보수 변경할 필요가 없다. 그러나, S/370은 S/88 운영시스템이 작동되어 실행된 후 까지 기능하지 아니한다.
세번째 방법에서는 인터럽트 벡터 내용의 하드웨어 제시가 포함되며, 이것은 S/88 운영시스템 커널내의 변경이 필요없기 때문에, 즉 벡터 테이블을 변경할 필요가 없기 때문에 적당한 대안이다.
이러한 세번째 방법에서는 S/370 인터럽트 루틴을 S/88 운영시스템 가상 주소 공간 또는 공지된 판독 전용 기억장소(ROS) 주소인 BCU 지역기억장소내에 배치하여야 한다. 인터럽트 루틴 주소가 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개등 필요한만큼의 벡터가 들어있다.
이 세번째 방법은 S/370 하드웨어 동기화 등을 위한 기판 동기화중 분리를 할 수 있다. 그러나, 이 방법은 더 많은 하드웨어를 필요로 한다.
S/88 운영시스템의 수정없는 Freedom 획득
위에서 응용 프로그램이 어떻게 freedom을 얻을 수 있는가, 즉 수퍼바이저 상태를 획득할 수 있는가를 설명하는 "Start S/370 서비스 루틴"에서 한 방법이 제시되었다. 이러한 방법에는 S/88 OS커널에 추가될 특별한 OS 서비스 호출 "트랩 13 명령어" 루틴을 기록하는 것이 포함된다.
이러한 트랩(13) 인터럽트 루틴은 트랩 명령어 바로 다음의 위치에서 트랩을 발하고 프로그램을 "호출"하는 것에 지나지 아니한다. 트랩 인터럽트 루틴은 수퍼바이저 상태에 있기 때문에, 주체 프로그램은 수퍼바이저 상태로 변경된다. 응용 프로그램은 응용 프로그램 상태를 다시 얻기 위하여 인터럽트 스택 복귀 주소를 수정하고, 트랩(13) "호출"로부터 수정된 인터럽트 스택 주소를 사용하는 인터럽트로부터 존재하고 있는 트랩(13) 인터러버트 코드로 복귀한다. 이 방법에는 인터럽트 루틴을 S/88 OS에 추가하는 것이 포함된다.
제2방법은 주체 OS의 수정을 제거한다. 특별 레지스터(도시없음)가 BCU제어 기억장소 주소 공간내에 정의되고, 이것은 응용 프로그램에 의하여 기록되었을 때, 새로운 BCU 인터럽트로 하여금 위에서 주어진 인터럽트를 시행하기 위한 제3방법을 사용하게한다. 응용 인터럽트 루틴은 BCU판독 전용 기억장소(도시없음)내에 상주하게 되고, 트랩(13)코드와 동일하게 기능한다. 전술한 Gain Freedom루틴은 트랩(13)명령어를 발하는 대신에, BCU 특별 레지스터에 기록하는 것을 제외하고는 정확히 동일한 기능을 한다.
S/88 를 수정함이 없이 기억장소를 도용하는 것
이러한 제2Gain Freedom 구현을 이용하여 "메모리의 도용"은 S/88 원시코드 또는 S/88 OS커널의 바인딩의 리어셈블리를 필요로 하지 아니한다. 자유 리스트의 선단 주소는 응용 프로그램에 이용할 수 있다.
심플렉스 장치와 파트너 장치(21, 23)의 Power및 On 동기화(제49도, 제50도)(S/370 처리장치용 서비스 처리기로서의 S/88 처리장치)
1. 개요
이 항은 제49도 및 제50도에 관하여 제7도의 파트너 장치(21, 23)의 동기화 상태를 결정하고, 이를 위한 환경을 제어 및 세트시키는 하드웨어 레지스터, 래치 및 논리의 일부를 간략히 설명한다.
그외에도 심플렉스 장치와 파트너 장치의 초기화, 동기화 및 재동기하를 수행하기 위한 마이크로 코드 기능중 일부로 설명한다. 먼저, 심플렉스 및 파트너 장치 환경인 S/88 처리장치 초기화 및 동기화에 관하여 본질적으로 변경없이 기능하는 시스템/88(적당한 실시예)을 설명하기로 한다. 이 조작 방법은 간단히 약술하고, Reid 특허내의 관련 기술중 일부도 여기에 되풀이한다.
오류 검사는 장치(21)의 각 S/88 처리요소(60, 62)(제8도)가 A버스(42)와 B버스(44)를 구동시키는 것과 동시에 수행된다. 이러한 동시작동은 버스 구조를 구동시키기 전에 오류 검사를 실시하는 처리기 모듈(9)내의 I/O장치와는 대조적이다. 처리장치(21)는 작동상의 어떠한 지연도 시스템 처리율을 위하여 바람직하지 아니할 정도로 그 안에서의 타이밍이 중요하기 때문에, 이러한 방식으로 작동한다. 처리장치가 버스 구조를 구동시키는 동안에 검사 논리에 의하여 오류가 발견된 때에는 장치가시스템 클럭의 다음 단계중 A버스 오류 신호와 B버스 오류 신호를 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)에 적용된다. 제어 스테이지(86)는 비교 무효 신호와 패리티 무효 신호에 응답하여 다음 클럭 단계(N+1)에서 처리기 오류 신호를 발생시킨다. 이 작동에 대한 하나의 예외는 비교 무효 신호가 판독 작업중 입력 데이타 신호의 무효 비교로 인하여 생긴 경우에 일어난다. 이러한 경우에는 제어 스테이지(86)가 다음 타이밍 단계에서 오류 신호가 발생하지 아니하는 경우에만 처리기 오류 신호를 발생시킨다. 버스 오류 신호는 버스 구조(30)내의 고장 조건을 표시하며, 따라서 입력 데이타의 무효 비교가 처리 섹션(12a 또는 12b)에서 생긴것이 아니라, 버스 구조(30)의 A버스 부분 또는 B버스 부분내의 고장으로 인한 것임을 식별하게 된다.
처리기 오류 신호의 기능중 하나는 논리회로를 불능하게함으로써 본질적으로 장치(21)의 처리 섹션(12)내의 모든 작동을 정지시키는 것이다. 그외에도 A버스 오류 신호와 B버스 오류 신호는 X버스(46)에 적용되는 모듈(9)내의 모든 장치로 하여금 바로 앞 단계중 버스상에 배치된 정보를 무시하도록, 즉 CPU 버스 전송을 무시하도록 통지한다. 레벨/인터럽트 신호는 X버스(46)에 적용되어 파트너 처리장치(23)에 모듈내의 어떤 장치가 고장을 생기게 하는 오류를 탐지하였음을 통지한다.
단계(N+2)초에, 아직도 고장신호에 응답하는 스테이지(86)는 가정적 버스 마스터 상태를 종료시킨다. 이 행동에는 버스 오류 신호의 종료가 수반된다. 처리섹션(12)은 마스터 상태에서 전환되면 송수신기(12e)내의 모든 버스 드라이버들을 불능하게 한다. S/370 송수신기(13) 드라이버로 송수신기(12e)의 드라이버가 불능으로 되는 때마다 공동제어(75)를 경유하여 불능으로 된다.
이와 마찬가지로 처리기 오류 신호가 장치(21)의 제어 스테이지(75)에 의하여 생기는 경우에는 제어 스테이지(86)를 경유하여 송수신기(12e)가 불능으로 되고 송수신기(13)로 불능으로 된다.
따라서, 처리 장치(21, 23)는 드라이버에 적용되는 버스 가능 신호를 생기게 하는데 필요한 마스터상태에 있는 때에만 버스 구조를 구동시킬 수 있다. 처리기 오류 신호는 즉시, 즉 다음 타이밍 단계의 끝에서 마스터 상태를 턴 업한다. 장치(21)의 처리 섹션(12)이 처리기 오류신호를 발생시키는 경우에는 파트너 장치(23)의 S/88 처리 섹션은 본질적으로 중단없이 계속하여 작동한다. 기록 작업중 처리기 오류 신호가 생기는 때에는 파트너 처리 장치(23)가 데이타 전송을 속행한다. 판독 작업중 처리기 오류가 생기는 때에는 파트너 장치는 반복되는 데이타내에서 판독을 하고, 메모리가 이를 다음 타이밍 단계에 있는 버스 구조에 적용한다.
더구나, 파트너 처리장치(23)는 하위 인터럽트인 레벨/인터럽트에 응답하여 진단 루틴을 개시한다. 처리기 오류가 과도 현상으로 보이는 경우 즉, 진단 루틴이 고장난 또는 오류가 있는 조건을 식별하지 못하거나 찾아내지 못하는 경우에는 처리 장치(21)는 보수없이 작동을 회복할 수 있다. 적당한 실시예에 있어서, 과도 고장의 발생이 기록되고 임의로 정하여진 시간 수가 반복되는 경우에는 처리 장치는 전기적으로 더 이상의 진단없이 서비스나 연산으로부터 제거된다.
장치(21, 23)의 각 처리 섹션(12)에 특히 처리기 상태 및 제어 스테이지(86)내에는 2개의 파트너 장치를 로크-스탭 동기화시킬 수 있는 논리회로들이 포함되어 있다. 이 섹션(12)은 마스터 상태로 전이시킴으로써 로크-스텝 동기화를 달성한다. 각 섹션(12)은 신호를 버스구조로 구동시키기 위하여는 마스터 상태에 전형적으로 파트너 섹션들을 동기화시켜서 어느 처리 섹션도 처음에는 마스터 상태에 있지 아니하도록, 즉 턴 온되어 있지 아니하게 하기 위한 명령어들이 포함되어 있다.
장치(21, 23)의 처리 섹션(12)은 초기화 순서에서는 처음에 동기화에 있지 아니하며, 하나의 장치가 다른 사이클이 앞서 다단 사이클중 마스터 상태를 달성한다. 마스터 상태를 얻는 하나의 장치는 다른 장치의 후속 초기화 작업을 제어하여 이 장치를 선택된 시간에 마스터 상테에 있게 한다.
장치(21)의 처리 섹션(12)은 초기화되면 내부 오류 검사 신호를 부정하고, 이에 의하여 패리티 무효 신호 또는 비교 무효 신호가 처리기 보류 신호를 발생시키지 못하게 한다. 이에 갈음하여 섹션(12)은 전형적으로 PROM(181)내에 저장되어 있는 시험 루틴을 수행하고, 이 루틴은 처리기 오류 신호를 발생시킬 수 있는 모든 조건을 연습한다. 예상 고장 조건이 생겨날 때마다 처리 섹션은 해당 고장 보고 신호가 실제로 발생하였는가의 여부를 확인하기 위하여 시험을 한다. 오류 검사 신호가 없으면 처리 장치가 마스터 상태에 도달하지 못하게 금지하고 이로 인하여 논리 연습 루틴중에 생긴 고장은 처리 장치를 중지시키지 아니하고 버스 구조(30)에 보고되지 아니한다. PROM(181)내의 시험 루틴은 Error Check 신호를 가정하고 처리기로 하여금 이러한 검사 루틴을 성공적으로 완료하였을 때에만 마스터 상태를 인수할 수 있게 한다.
S/370 처리장치(적당한 실시예)는 전형적으로 각 칩내의 여러가지 소자들과 논리에의 "백 도어"접근을 경유하여 초길화 및 서비스 처리기 기능을 제공하는 하드웨어를 가진다. 이러한 것은 잘 알려져 있기 때문에 여기에서는 간단히 설명하기로 한다.
자체 시험 및 초기화를 위한 프로그램 루틴도 잘 알려져서 상세히 설명할 필요가 없다. 이 항에서 강조하는 것은 전형적인 S/370 자체 시험 및 초기화가 S/370 또는 S/88 운영시스템이 변경을 알지 못한 채 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 응용 프로그램을 수행하고, /88 개체들에 대하여 S/88 또는 S/370 운영 시스템이 상대방을 알지 못하면서, S/88 I/O장치와 프로그램을 이용하여 필요한 S/370 I/O 연산을 수행하도록 요구한다.
2. 고장 허용 한계 하드웨어 동기화
S/88-S/370 처리 장치의 여러가지 주요 특성중 하나는 현행 처리 파트너(23)에 의한 처리장치(21)의 자기 결정 동기화이다. 각 장치의 S/88 개체는 새로운 파트너 또는 오류 발생 파트너를 동기화시킬 수 있는 능력과 이에 대한 책임을 가진다. 장치의 S/88 개체가 이러한 책음을 인수하여 이를 "마스터"라 한다. 동기화되는 그 파트너를 "슬레이브(slave)"라 한다.
S/88 하드웨어/펌웨어 구조는 언제 동기화가 필요하며, 누가 누구를 동기화하는가를 결정한다. 상호 연결된 S/88-370 하드웨어/펌웨어는 동일한 지능을 이용하여 동기화 결정에 있어서 S/88의 본을 따른다. 즉, 88/이 S/88(슬레이브)개체는 그 파트너(마스터)와의 동기화가 필요하고, 동길화는 S/88 슬레이브 개체가 "킥 엎"된 후, 적당한 점까지 진행될 수 있다고 결정하면, 언제든지 수행이 대응 S/370 개체로 변환된다. S/370 개체들은 S/370 마스터 상태를 추출하기 위하여 PROM(181)으로부터의 코드를 수행하고, 이상태를 S/370 파트너로 회복시키는 S/88 PE에 의하여 동기화된다.
요구 사항이 Initial Power On, 새로운 파트너의 출현 또는 2개의 기존 파트너가 동기화를 상실하게 된 오류 조건으로부터의 회복(보수 인터럽트르르 강요하는 경우)에 의하여 야기되었는가의 여하를 불문하고, 파트너쌍의 어느 하나는 처리 장치내의 동기화에 있어서 마스터 또는 슬레이브 역할을 인수할 수 있다. 각 경우에 있어서, S/88 슬레이브 개체는 그 상태를 인식하고, 동기화를 위하여 S/88 마스터 개체에 의존한다.
S/88 마스터 및 슬레이브 개체는 그 역할을 보수 인터럽트가 발생할 당시 그 상태의 결과로서 가정한다. 모든 처리 장치의 S/88 개체는 인터럽트는 불이행 마스터가 입증될 때까지는 슬레이브라고 가정하고 인터럽트를 탐색 및 처리한다. 그 다음에, 이 마스터는 보유 슬레이브를 로크 스텝으로 킥 엎하고, 마스터가 선취한 환경을 다시 회복한다(인터럽트로부터 복귀할때).
마찬가지로, S/88 개체는 처리기를 나머지 논리로부터 분리시키고, S/370 파트너쌍내에서 동일한 선취상태를 설정하기 위하여 이러한 처리들을 이용하여 S/370 SP기능을 모방하고, 그 다음에는 정상 수행 환경을 재설정하고, S/370 파트너쌍의 로크 스텝으로 수행을 시작할 수 있게 된다.
동기화가 필요하지 아니한 하나의 상황 :
심플렉스 처리장치가 power on된다. 즉, 21과 같은 단일 장치.
동기화가 필요한 상황은 다음과 같다.
듀플렉스 처리장치(예 : 21, 23)가 power on된다.
장치(21)는 그 파트너(23)가 정상적으로 처리하는 동안 삽입된다.
21과 같은 처리장치는 그 파트너(23)내의 비교고장을 탐색하고, 회복을 시도한다.
S/88 개체는 동기화를 설정하기 위한 적당한 하드웨어 설비를 가지고 있다. S/370 처리 섹션은 슬레이브 개체를 마스터 개체와 정확히 동일한 상태를 초기화시킬 수 있는 충분한 하드웨어 및 소프트웨어 보조를 가진다. 여기에는 판독/기록 상태 레지스터, 판독 가능 방식 레지스터, 지울 수 있는 캐쉬, 정지 가능클럭, 계수링등과 같은 특징들이 포함되어 있다.
장치(21)내에서 정상적으로 작동하는 S/370 개체를 파트너장치(23)내의 그 대응 S/370 개체와 함께 SYNC내에 도입하여야 하는 때에 파트너 S/370 개체를 통상 작동개체와 동일한 상태가 되게 할 필요가 있다. 이러한 프로세스는 적당한 실시예에 있어서 대기행렬 선택 메시지를 S/88 처리기(60, 62)로부터(PROM181내의 S/370 초기화 및 동기화의 제어하에) S/370 처리기(85, 87)로 송신함으로써 간소화된다. 이 메시지는 사용자 응용이 동기화 시간중 156과 같은 BCU에 대하여 운영시스템을 거쳐 추가 서비스 요구를 하지 못하게 한다. 그것은 또한 모든 미완료 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도)를 이용하는 정상 사용자 프로그램된 판독/기록법이다. 다른 하나는 직렬 "백-도어"종합 지원 설비(ISF)/범지원 인터페이스(USI)(540, 541) 접근법이다. S/88 개체의 동기화 기구는 S/370 칩 세트 서비스 처리기 직력 인터레이스/프로토콜(ISF/USI)을 모방함으로써 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, 161D)를 회로(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신호가 회선(258a, 258c)상에 나타날때까지 회선(562, 563)상에 보류한다. 이러한 인터럽트용 벡터 번호는 제20도에 도시한 IACK 신호(258d, 258e)에 의하여 활성화 되었을때, 논리(564, 565)로부터 파생된다. 벡터 번호들은 처리 소자(62)가 해당 인터럽트 조정기 루틴에 접근하는데 이용된다.
S/370 종합 지원 설비(ISF)(제49도)는 칩 세트(150)상에 있는 논리에의 "벡 도어"엔트리를 나타낸다. ISF는 5회선 지원 버스(541)로 구성되어 있고, 이러한 지원 버스는 칩(85, 151-154)상에 집적되어 있는 장치 지원 인터페이스(USI)에 연결되어 있다. 제49도는 칩(856)상에 있는 USI(542)중 일부를 도시한 것이다.
지원 버스(541)는 다음의 5m 회선을 가진 직렬 인터페이스를 나타낸다.
BIT OUT(칩 세트로의 데이타) 회선(543)
BIT IN(칩 세트로부터의 데이타) 회선(544)
ADDRESS MODE(제어) 회선(545)
SHIFT GATE(제어) 회선(546)
SET PULSE(제어) 회선(547)
ADDR MODE 회선(545)은 BIT OUT/BIT IN 회선(543, 544)상의 주소 비트(up 레벨) 또는 데이타 비트(down 레벨)의 직력 전송(shkft)을 알려준다. BIT OUT 및 BIT IN 회선(543, 544)는 칩 내부의 쉬프트 레지스터(548)와 논리내의 외부 쉬프트 레지스터(549, 550) 사이의 상호 연결이다. 내부 레지스터(548)와 2개의 외부 레지스터(549, 550)중 하나 사이에 이동되는 비트수는 쉬프트 회선(546)에 적용되는 펄스의 수에 의하여 결정된다.
SET PULSE는 방금 칩으로 이동된 주소 또는 데이타 패턴에 근거한 칩 내부 활동을 동기화시키는데 이용된다. SET PULSE는 쉬프팅이 완료된 후, 칩측에 있는, 즉 레지스터(548)내에 있는 정보의 가용성을 알리기 위하여 활성화된다. 이것은 정보에 근거한 활동이 이 순간부터 개시될 수 있음을 의미한다.
다음의 예는 작동을 설명하는 것이다. 시작 기능은 특정 주소 패턴에 지정된다. 이 주소는 각 칩의 레지스터(548)내로 이동된다. 모든 주소 비트가 전송되면, 칩중 하나의 주소 해독(551)이 그 주소를 탐색한다. SET PULSE가 주소 전송에 뒤따른다. 주소 해독과 WET PULSE는 게이트(552)의 출력에서 칩 내부 시작 펄스를 형성한다.
USI의 칩 특정 부분에는 특정한 칩 설폐로부터 나오는 제어 및 데이타 체인이 들어 있다. 쉬프트 작동에 의하여 영향을 받지 아니한 저장 소자들의 현재 상태를 유지하려면 USI 활동이 개시되기 전에 기능 클럭이 정지되어야 한다. USI는 선행 조건이 '정적'이라고 정의됨에 따라 요구하는 클럭 스톱에 접근한다. 동적 접근 또는 기능은 칩이 작동중에 있는 동안 수행될 수 있는 작동들이다.
WET PULSE는 기능들을 칩 내부 타이밍에 동기화 시키는데 이용된다. 기능들은 SERDES레지스터내의 주소 패턴 또는 데이타 패턴으로부터 해독되고, 추가로 ADDR MODE회선(주소 또는 데이타 방식)에 의하여 게이트된다.
즉,
칩 상태를 SERDES 내에 세트시켜라.
방식 레지스터를 SERDES 내에 세트시켜라.
방식 레지스터를 SERDES로부터 적재하라.
지원 전송 요구 래치(SPR)를 세트시켜라.
처리기 제어 요구 래치(PCR)를 리세트시켜라.
개별 칩들을 지원하는데 필요한 동적 추가 기능.
S/370 칩 세트(150)내의 여러가지 주소 지정 가능 개체에 대한 '백 도어'접근을 제공하는 ISF의 5회선 직렬 버스(541)는 각 칩, 즉 칩(85)의 장치 지원 인터페이스(USI)에 결합되어 있다. USI(542)는 8-비트 주소 레지스터(566)와 8-비트 Serializer/Deserilalizer(SERDES)(548)를 제공한다. USI 주소 레지스터(566)는 칩의 주소와 칩 내의 목표 개체의 주소를 SERDES(548)이 실제 송/수신기구인 동안에 수신한다. USI는 쉬프트-인/쉬프트 아우트 기구를 위한 동기화 논리로 제공한다.
S/370 칩 세트(150)내이 각 칩에 4비트(고위) ISE/USI 주소가 지정되고, 예를들면 PE(85), 캐쉬제어기(153), 클럭(152), 어댑터(154), 부동 소수점 공동 처리기(151) 및 STCI(155)에는 16진값(2, 4, 6, 8, A 및 B)이 지정된다. ISE/USI 주소의 하위 4비트는 하위 4비트에 의하여 주소 지정된 내부 칩 개체(예 : 레지스터, 기능 또는 체인)를 정의한다.
통신 스키마는 쉬프트 체인(기능 체인이라고도 한다.)으로 구성되어 있고, 이 쉬프트 체인은 명령, 원시칩, 종착칩, 칩내에 있는 데이타 및 목표 개체를 식별하는 필드로 구성되어 있다. 쉬프트 체인은 다음과 같다.
비트 0-7-기능/명령
8-11-원시(제어)장치
12-15-목표(감지된/제어된)장치
16-23-메시지/데이타
24-27-제어된(기록된) 레지스터
28-31-감지된(판독된) 레지스터
이러한 기능 체인들은 ISF/USI의 직렬적 성격과 체인들은 논리(549, 550)와 SERDES 레지스터(548)의 내/외로 이동되어야 한다는 사실때문에, 쉬프트 체인이라고 한다.
기능 체인의 명령 필드에 기록/제어 명령(E61) 또는 판독/감지 명령(F61)이 포함될 수 있다. 기능 체인의 예는 다음과 같다.
=처리기(85)의 방식 레지스터에 기록하라.
여기에서, E6=명령=기록
0=원시 주소-검사용 PE(62)
2=수신지-PE(85)
=메시지(데이타)
1=제어된 레지스터(방식 레지스터)
0=감지 레지스터(명령어 "기록"이기 때문에 무)
여기에서 설명하는 동기화를 설정하기 위한 접근법은 PROM(181)내에 저장된 S/88 프로그램 코드를 사용한다. 이러한 코드는 위의 4가지 상황과 이에 따른 세트 플래그와 연관된 결정을 행한다. 그때 동기화 루틴들은 적당한 동기화 또는 초기화를 수행하기 위하여 코드 경로를 제어하는데 이러한 플래그를 이용한다. 2가지 예를들면 다음과 같다.
특정한 S/88 기판상의 메모리가 정원 고장으로 구성되어 있고, 그 파트너로부터 재초기화되었는가의 여부를 결정한다.
특정한 S/88 기판이 이행되지 아니한 마스터 처리장치(DMPU)의 역할을 인수하였는가의 여부를 결정한다.
다음의 세항(3-6)은 동기화 기구의 2가지 구현을 설명한 것이다. 그중 하나는 하드웨어의 지원을 받으며, 고속 '시간-준비완료'프로세스를 허용한다. 이것은 적어도 S/370 개체내에 추가 제어 회로를 필요로 하며, 일부 S/88 제어 회로를 S/370 '인터페이스'에 물리적으로 노출시킴으로써 정의된 능력 이상을 발휘할 수 있다. 이러한 '인터페이스'는 실제로 S/370 회로의 S/88 회로에 대한 '기생부착'이다.
여기에서 말하는 또다른 구현은 S/370 서비스 처리기의 에뮬레이션에 있어서, S/88 처리기 개체들에 의한 S/370 동기화를 다룰 수 있게하는 마이크로 코드뿐이다. 이 방법은 수행과 '시간-준비완료'가 중요하지 아니한 경우에 이용할 수 있다.
3. 심플렉스 처리장치(21)는 파우워온 된다(하드웨어 구현)이러한 상황은 다음 조건중 하나에 의하여 생길 수 있다.
1. 장치는 Power On/Boot의 결과로 온라인 된다.
2. 이 장치는 전원 고장 회복의 결과로서 온라인 된다. 어느 조건에 있어서도 코드 경로는 동일하다.
장치(21)의 S/88 개체는 그 자체시험 및 초기화 루틴(STIR)의 일부를 수행하고, 그 다음에는 그 인관 기억장치(16)의 내용이 위태롭게 되지 아니하였는가(전원 고장 상태)의 여부를 결정하고자 시도한다. 그런 경우에는 STIR 경로상에 있는 정상 전원으로 고장 대치된다. 그렇지 아니한 경우에는 DMPU일지도 모르는 파트너 또는 공동상극 처리장치를 가지고 있는가의 여부를 결정하려고 시도한다. 아무것도 찾지못한 경우에는 S/88 개체는 DMPU의 책임을 인수하고, 다른 처리장치들을 동기화시키려 할 것이다.
장치(21)의 S/370 개체는 단순이 S/88 개체의 본을 따른다. 이것은 S/88 PROM(181)내에 상극하는 코드를 수행하고, 정상 자체 시험을 완료한 다음에, 이것이 초기 Power On인건, 전원 고장 회복인가의 여부를 결정하는 S/88 처리기(62) 정상 초기화를 가지고 계속하며, 그것이 DMPU라고 가정하면서 인터럽트를 S/88 처리기(62)에 강제하는 S/370 논리에 의하여 트랩된다. 인터럽트(6)는 S/88 PROM(181)(제19a도)내의 S/370 동기화 마이크로 코드에 벡터된다.(이것은 S/88 주소 공간내로 맵된다.)
한편, S/370 PE(85)는 Power On/Boot로부터그 자체의 STIR를 수행한 다음에, 그 Sync 포인트에서 수행을 정지한다. 이 시간중 S/370 클럭(152)은 자체를 초기화시킨다. /88 레벨(6) 인터럽트 서비스 서브루틴(ISS)/즉, S/370 동기화 마이크로 코드)은 제44도의 ISF/USI 인터페이스를 이용하여 S/370 서비스 처리기를 모방한다. 이러한 SP 에뮬레이터는 기능 스트링을 발하여, 실제 코드 전송이 일어나지 아니하더라도(마이크로 코드가 S/88 PROM 181내에 있더라도), S/370 제어 기억장치(171)의 MIL 기능을 불러일으킨다. IML에물레이션의 다음 단계는 SYNC를 S/370 개체(처리기 85, 87)에 브로드캐스트하여 처리장치(21)를 수행 단계로 진행시키려는 것이다. ISS의 최종 단계는 인터럽트로부터 복귀시켜서, 처리장치가 IPL상태의 수행을 시작하게 하는 것이다.
S/88 처리장치
수행의 일부로서 모방된 서비스 처리기 'IPL Botton Pushed'기능 스트링이 S/370 처리장치로 송신되어 IPL 기능을 수행하고, 디스크로부터 S/370 주기억장치를 적재한다. IPL의 최종 단계는 제어를 위치( )에 의하여 명시된 주소로 통과시키는 것이다.
B. 마이크로 코드 전용 구현
장치(21)의 S/88 개체는 그 자체 시험 및 초기화 루틴(STIR)을 수행한 다음에, 이것이 초기 Power On(IPO) 또는 전원 고장 회복(PER)인가의 여부를 결정한다. 이것이 IPO이면, 코드는 장치(21)가 심플렉스 개체라고 결정하고 계속하여 운영시스템을 적재하고 루틴을 수행한다.
이것이 PER인 경우에는 코드는 그 연관 기억장치의 완전성이 손상되었는지의 여부를 결정한다. 손상되었으며 코드는 이것이 IPO인 것처럼 속행한다. 메모리의 내용이 손상되지 아니하였음이 판영된 경우에는 PER 코드는 정상 재시작 디스크를 속행한다.
위의 어느 경우에 있어서도, 동기화될 연관 파트너가 없기 때문에, 동기화 기능은 '모조'작동이 된다.
4. 듀플렉스 처리장치(21, 23)가 Power On된다. 헤드웨어 구현
이 상황은 다음의 2가지 조건이나 그중 하나에 의하여 일어날 수 있다.
1. 이 장치들은 Power On/Bott의 결과로서 온라인된다.
2. 이 장치들은 전원 고장 회복의 결과로서 온라인된다.
각 처리장치(21, 23)의 S/88 개체는 그 자체 시험 및 초기화 루틴(STIR)의 일부를 수행한 다음에, 그 연관 기억장치(16)의 내용이 손상되었는가(전원 고장상태)의 여부를 판정한다. 그렇다면 각 /88 개체는 STIR 경로상의 정상 전원으로 고장 대치된다. 그렇지 아니하면, 이 개체는 그것이 DMPU일 수 있는 파트너 또는 공동 상극 처리장치를 가지고 있는가 아니면 그것이 DMPU인가의 여부를 판정하고자 시도한다. 그렇다면, 그것은 DMPU의 책임을 인수하고, 다른 처리장치들을 동기화시키려 시도한다. 그것이 DMPU가 아니면 그것은 포인트로 진행하고, SYNC를 대기한다.
각 S/370 개체는 단순히 S/88 개체의 본을 따른다. S/88 개체는 그 PROM(181)내에 상극하는 코드를 수행하면서 정상 자체 시험을 완료한 다음에, 이것은 Power On인가 아니면 전원 고장 회복인가를 판정한다. 그것이 Power On이면 정상 초기화로 계속하고, Sync 포인트로 진행한다. 이것이 전원 고장 회복이면, 그것이 유효한가의 여부를 판정하기 위하여 캐쉬를 검토한다. 그것이 유효한 경우에, 파트너의 캐쉬가 무효임이 발견된때에는 파트너의 메모리를 갱신하여야 한다. 그 자체의 캐쉬가 무효인 경우에는 그 파트너의 내용에 따라 그 자체를 유효한 캐쉬 내용으로 갱신하여야 한다. 그 자체의 캐쉬가 무효인 경우에는 그 파트너의 내용에 따라 그 자체를 유효한 캐쉬 내용으로 갱신하여야 한다. 파트너로 유효한 메모리를 확보할 수 없는 경우에는 양자는 한쌍으로서 정상 Power On과 초기화 계속하여야 한다. 처리장치쌍의 S/88 개체들이 포인트에 접근하면, 각 S/88 개체는 DMPU 책임을 인수하여야 하는가의 여부를 판정한다. 그것이 DMPU임을 발견한때에는 SYNC를 발하려고 시도한다.
동기 신호는 S/370 논리에 의하여 트랩되고, 레벨(6)의 인터럽트를 S/88 개체로 보낸다. 인터러버트는 PROM(181)내의 S/370 동기화 마이크로 코드에 벡터된다(이것은 S/88 주소공간내로 맵된다). 그동안 S/370 개체(즉, 처리 소자 85, 87)는 Power On/Boot로부터 그 자체의 STIR를 수행한 다음에, 그 Sync 포인트에서 수행을 정지한다. 이것이 전원 고장 회복이면 S/370 개체는 메모리의 완전성과 동기화를 확보하기 위하여는 얼마만큼 초기화 루틴내로 고장 대치되어야 하는 가를 판정하는 S/88 개체 프로세스와 유사한 프로세스를 거치게 된다. 이 시간중 S/370 클럭(152)은 자체를 초기화시킨다.
S/370 처리기에 의하여 S/88 SYNC 펄스를 트랩하는 적당한 기구를 제20도, 제49도 및 제50도에 의하여 간단히 설명하면 다음과 같다.
S/88 처리기들은 회선(570)상의 SYNC OUT 신호를 발하는 장치(23)의 S/88 처리기쌍중 하나에 의하여 동기화를 달성한다. (제50도), 파트너장치가 초기화되고, 자체 시험도 거치고, BROMKEN이 아님이 판정된 경우에는 파트너장치는 BROKEN 회선(571)상의 신호 레벨을 가지며, 이것은 회로(572)에 의하여 역변환되어 AND TNVERT 게이트(573)을 통하여 SYNC OUT 신호를 게이트시킨다.
원 시스템 88(즉, 모듈 10)에서는 SYNC 신호가 회선(577)과 인버터(574)를 경유하여 장치(14)의 드라이브 S/88 처리기의 SYNC IN 회선(580)으로 보내졌다. 이 신호는 C 버스와 인버터(576)를 경유하여 장치(12)의 검사 S/88 처리기의 SYNC IN 회선(575)으로도 보내져서 장치(12, 14)의 4개 S/88 처리기들을 모두 로크-스텝으로 '킥-업'시킨다.
개량된 S/379-S/88 장치(21, 23)에서는 회로(573)의 출력(577)은 XYNC IN 회선(580, 575)으로부터 분리되어 S/88 처리기의 킥-업(kick-off)을 방지한다. 이에 갈음하여, 출력은 회선(581)을 경유하여 플립플롭(582)을 파트너장치(21)의 BCU(156)내에 세트시키도록 연결된다(제49도). 그것은 또한 대응 플립플롭은 장치(21)내의 BCU쌍(도시없음)내에 세트시킨다. 다음의 설명은 장치(21)내의 하나의 S/370 및 연관 하드웨만을 대상으로 한 것이지만, 2개 S/370 개체들도 동일한 방식으로 작동된다.
플립플롭(582)은 레벨(6) 인터럽트 신호를 회선(583), OR 회로(292a, 292)(제20도 참조), 인터럽트 논리 (293) 및 회선(IPO-2)을 경유하여 S/88 처리기(62)에 전송한다. 이 활동을 S/370에 의한 S/88 SYNC 신호의 "트래핑"이라 한다.
장치(21)의 S/370 개체들은 그 자세 시험과 초기화 루틴(STIR)을 성공적으로 수행하고, 킥-업할 준비가 완료되었다고 가정한다.
제20도에서 다른 DMAC 및 BCU 레벨(6) 인터럽트에 관하여 이미 설명한 바와 같이, S/88 처리기(62)는 회선(583)상의 SYNC신호에 응답하여 인터럽트 긍정 응답 사이클을 개시한다. 처리기(62)로부터의 기능 코드와 우선 순위 레벨은 논리(281)에서 해독되고, 해독 논리(281)의 출력(283)을 경유하는 회선(190), 게이트(291), 회선(287) 및 OR 회로(284)에 대한 지역 BCU 버스 요구가 행하여진다.
버스사이클 이 회선(191)상의 처리기(62)에 허가되면 이 버스사이클은 (SYNC 회선(583), AS 회선(270) 및 해독 회선(283)상의 신호들과 함께) AND 게이트(294-4)로 하여금 IACK 회선(258)에 신호를 보낼 수 있게 한다. 이 신호는 벡터 비트 논리(584)(제49도)에 보내져서, BCU 지역 버스(223), 구동기-수신기(208) 및 처리기 버스(161)를 경유하여 S/88 처리기(62)에 적당한 벡터 번호를 전송한다. 회선(258)상의 신호는 플립플롭(582)를 리세트시킨다.
S/370 STIR 기능이 가정한대로 이미 완료된 경우에는 S/88 처리기(62)는 판독사이클을 수행하여 벡터번호를 얻고, 이 벡터 번호는 처리기(62)가 S/370 동기화를 위한 인터럽트 루틴의 제1명령어에 접근하는데 이용된다.
동기화 루틴의 최종 명령어는 SYNC 신호를 회선(586)에 보내는 SYNC 명령을 발생시킨다(제50도).
이 신호는 SYNC 회선(580, 575)에 전송되어 파트너장치(21, 23)의 S/88(및 S/370) 처리기들을 "킥-업"시킨다.
모방된 'IML Buttom Pushed'기능 스트링은 S/88 'Module start up, em'의 일부로서 장치(21, 23)내의 S/370 개체에로 보내진다. 이 IML은 DASD 접근의 IML기능 전부를 수행하기 보다는 I/ O프로세스를 바이패스하고, S/88 주기억장치로부터 적재한다. EXEC 370 코드는 이미 DASD로부터 IPL 코드를 페취하여 이를 S/88 주기억장치내에 배치하고, IPL을 대기한다. 그다음 IPL의 최종 단계는 제어를 위치(0)에 의하여 명시된 주소에 통과시키는 것이다.
B. 마이크로 코드 전용 구현
PU 기판들이 초기 Power On(IPO) 또는 전원 고장 회복(PFR)의 결과로서 power UP된다.
먼저 IPO의 경우를 설명하면 다음과 같다.
IPO에 의하여 S/88 Power Good 신호가 가정된 결과로서, 보수 인터럽트가 S/88 PROM(181) 코드를 불러낸다. 이 코드는 장치(21)의 S/88 개체를 동기화한 다음에, PROM(181)내에 상극하는 S/370 STIR를 호출한다. S/370 STIR는 이것이 IPO이기 때문에, S/88 및 그 운영시스템의 설비들이 필요할 때, 초기화 및 동기화를 할 수 있을만큼 충분한 설비가 적재되어 있지 아니하다고 판정한다. 그 결과 S/370 STIR는 추가 활동없이 S/88 PROM(181) 코드로 복귀하고, 이 코드는 O/S를 적재하기 위하여 진행한다. O/S 초기화의 일부로서 'Start-up'모듈이 호출된다. 이 모듈도 PROM(181)내에 상극하는 S/370 STIR를 호출한다. 이번에는 STIR가 필요한 설비들을 이용할 수 있다고 판정하고, 초기 마이크로 코드 적재(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)가 삽입된다.
A. 하드웨어 구현
레벨(6) 인터럽트는 새로운 기판이 삽입될 때, 현행 장치(21)의 S/88 개체에 포스트 된다. 새로운 처리 장치가 그 STIR를 실시하는 동안 현행 처리 장치는 레벨(6) 인터럽트를 인식한다. 레벨(6)은 선취된 타스크 환경을 달성하는 프로세스를 시작하고, 새로운 처리 장치가 온라인에 있는가를 판정한다. 온라인인 때에는 인터럽트로 부터 복귀한다. 인터럽트로부터의 복귀기능으로서 2개의 장치가 로크스텝 동기화를 시작하고, 선취된 타스크를 개재한다.
B. 마이크로 코드 전용 구현
새로운 기판이 삽입됨으로써 보수 인터럽트는 S/88 PROM(181)코드를 불러낸다. 이 코드는 장치(21)의 S/88개체를 재동기화시킨 다음에, PROM(181)내에 상극하는 S/370 STIR를 호출한다. S/370 STIR는 이것이 PFR와 유사하기 때문에, 필요한 설비들을 이용할 수 있다고 판정하고, 장치(21)의 S/370개체를 동기화 및 초기화시키는 절차를 밟는다.
6. 파트너를 비교 고장을 탐색한다.
A. 하드웨어 구현
고장 처리 장치가 그 STIR내로 강제되눈 반면에, 정상 수행 처리 장치는 강제된 레벨(6) 인터럽트에 의하여 인터럽트된다. 레벨(6) 인터럽트 서비스 서브 루틴은 선취타스크 환경을 성취시키는 프로세스에 착수하고, 새로운 처리 장치가 온라인 인가의 여부를 판정하며, 온라인 인때에는 인터럽트로부터 복귀한다. 인터럽트로부터의 복귀 기능으로서, 2개의 장치는 로크 스텝의 동기화를 개시하고, 선취 타스크를 속행한다. 고장 처리 장치가 그 STIR을 정확하게(즉, 한번 또는 선택된 회수의 시도) 존재하게 하지 못하면, 정상수행 처리 장치는 적당한 시간이 경과한 후, BROKEN을 고장난 처리 장치와 그 여러가지 상태 보고 설비의 S/88부분에 세트시킨다.
B. 마이크로 코드 전용 구현
비교 고장이 탐지되고, 기판이 단선됨에 따라, 보수 인터럽트가 S/88 PROM(181)코드를 불러낸다. 이 코드는 장치(21)의 S/88개체를 재동기화시킨 다음에, PROM(181)내에 상극하는 S/370 STIR를 호출한다. S/370 STIR는 이것이 PFR와 유사하기 때문에, 필요한 설비를 이용할 수 있다고 판정하여, 장치(21)의 S/370 개체를 동기화 및 초기화시킨다. 또 다른 비교 고장은 동일한 활동을 반복시킨다. 예정된 회수가 반복된 후, 기판은 영구히 오프라인되며, 고장이 보고된다.
또다른 실시예
1. 다른(비 S/88)고장 허용 한계 시스템내에서의 이용
적당한 실시예에 있어서, 하드웨어 고장 허용 한계는 적어도 3가지 특징으로 가진 것으로 나타난다. 데이타 오류를 시스템의 다른소자에 전파함이 없이 고장 필드 대체 가능 장치의 즉시 전기 잘연이 있다. 동적 재구성 코드는 필요한 때 또는 소자들이 고장난 때 소자들을 제거 또는 추가하기 위하여 제공된다. 시스템의 손실없이 서브 시스템 또는 필드 대체가능 장치로부터 전원을 제거하거나, 이에 전원을 인가할 수 있는 능력, 즉 핫 플러그 능력이 제공되어 있다. 사용자는 기능이나 성능의 손실을 감지하지 아니한다.
본 개량은 전술한 엄격한 요건들 중 일부가 결여되어 있는 소프트웨어 고장 허용 한계 시스템과 같은 서로 다른 고장 허용한계 환경내에서도 이용할 수 있다.
본 개량을 이용할 수 있는 또다른 시스템 (엄격한 요건중 일부가 결여된)의 예는 1982년 10월 26일에 제임스 에, 카트만 등에게 수요된 "마이크로 처리기 시스템"이라는 표제의 미합중국 특허(제4356550호)에 기술되어 있다. 이 특허의 제1도에서는 3개의 처리 서스 시스템이 서로 비동기적으로 작동하며, 중복 버스에 결합되어 있다. 하나의 서브 시스템이 고장나면, 나머지 2개가 프로그램 수행을 계속할 수 있다. 모든 오류는 본 출원의 적당한 실시예에서와 같이, 즉시 판정되기 보다는 프로그램내의 체크 포인트에서 판정된다.
전술한 특허의 서브 시스템과 다른 S/370처리기와 같은 처리기들은 본 출원에서 S/88에 관하여 설명한 것과 유사한 방법으로 이러한 서브 시스템에 부착시킬 수 있다. 동 특허의 서브 시스템내의 선택 회선을 본 출원의 주소 스트로브(AS) 회선에 관하여 설명한 것과 유사한 방법으로 사용 및 제어함으로써 서브 시스템의 처리기들을 분리 시켜서, 부착된 다른 기생 처리기들용 I/O제어기로서 이용할 수 있다.
2. S/88 I/O제어기와 S/370 주기억장치 사이의 직접 데이타 전송
적당한 실시예에 있어서는 캐쉬(340)가 오늘날 전형적인 S/370캐쉬 시스템에서와 같이, 일부 유효 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기억장소 주소들은 EXEC 370에 의하여 S/88 물리적 주소로 바뀌어져야 하는 반면에, 명령들은 S/88 명령으로 전환된다.
기억장치(162)로부터 I/O장치로의 데이타 전송중 하나의 방법은 I/O연산과 관련된 캐쉬 부분을 I/O연산을 수행하기 전에 기억장치(162)로 먼저 끌어내는 것이다. I/O 장치로부터 기억장치(162)로의 데이타 전송중 I/O 연산에 관련된 캐쉬 섹션은 I/O 연산 수행전에 무효화된다. 데이타 전환이 필요한 경우에는 기능이 S/88 처리기(62)내에서 EXEC 370이 이용하는 것과 유사한 루틴에 의하여 I/O 장치 제어기내에서 수행될 수 있다. 데이타 전환은 ASCII-EBCDIC 전환과 같은 S/88 OS내의 전환 루틴을 호출하는 EXEC 370응용에 의하여서도 수행될 수 있다.
3. 직접 연결된 처리기쌍의 분리
제52도는 직접 결합되어 있는 처리기쌍을 적당한 실시예의 S/88 처리기(62)에 관하여 설명한 것과 유사한 방법으로 그 연관 하드웨어로부터 분리시켜서, 운영 시스템에 대하여 투명한 방법으로 처리기 사이에 명령 또는 데이타를 전송하는 또 다른 실시예의 데이타 흐름을 도시한 것이다. 2개의 처리기(640, 641)는 처리기 버스(642, 643), 구동기 송신기 회로(644, 645) 및 공통 지역 기억장치(646)를 경유하여 서로 결합되어 있다. 처리기(640, 641)는 동일한 또는 서로 다른 구조와 운영 시스템을 가질 수 있다. 각 처리기(640, 541)는 해당 운영 시스템의 제어하에 프로그램을 정상 처리하기 위한 주기억 장치와 I/O장치를 포함하는 그 자체의 하드웨어(도시없음)를 가질 수 있다. 운영 시스템은 다른 운영 시스템과 연관된 처리기의 존재 또는 이와의 결합을 알지 못한다.
그러나, 또다른 실시예의 처리기(640)가 명령이나 데이타를 기억장치(641)로 송신하기 위하여 응용 프로그램에 의하여 제어되는 때에는 예정된 주소를 처리기 주소 버스(647)상에 배치하고, 이 주소를 논리(648)가 해독하여, 처리기(640)로부터 기억장치(646)로의 명령 및 데이타 전송을 위하여, 회로(646)가 버스 (642)를 지역버스(652)를 경유하여 지역 기억장치(646)에 결합시키게 하는 것이 바람직하다. 주소의 해독에 의하여 처리기(640)가 그 연관 하드웨어로부터 분리되어 그 전송이 처리기(640)의 운영 시스템에 투명하게 된다.
처리기(641)용 I/O명령 및 데이타가 지역 기억장치(646)내로 전송되었을 때, 처리기(641)는 제어논리(649)의 분리에 의하여 인터럽트된다. 처리기(641)(그 응용 프로그램 인터럽트 조정기를 경유하여)는 그 하드웨어로부터 분리되고, 기억장치(646)로부터 그 주기억 장치(도시없음)로의 명령 및 데이타내에서 그 운영시스템에 대하여 투명한 방법으로 판독된다. 명령 및 데이타가 전환을 필요로 하는 경우에는 처리기(641)는 기억장치(650)내의 에뮬레이션 마이크로 코드를 이용하여 필요한 전환을 수행한다. 그 다음에 처리기(641)는 그 운영 시스템이 제어하에 전환 명령을 처리한다.
처리기(640, 641)의 "분리"(uncoupling)는 각 처리기가 그 하드웨어에 "재결합"될 수 있기전에, 명령 또는 데이타의 상당한 세그먼트를 지역 기억장치(641)로 뿐 아니라, 지역 기어장치로부터 계속 전송할 수 있다. 이러한 방법으로 고속의 효율적 데이타 전송을 달성한다. 명령 또는 데이타는 동일한 방법으로 처리기(641)에서 처리기(640)로 반대 방향에 따라 전송될 수 있다. 명령 또는 데이타는 필요한 경우에는 기억장치(651)내에 위치한 에뮬레이션 마이크로 코드에 의하여 전환될 수 있고, 전환된 명령은 처리기(640)내에서 그 운영 시스템의 제어하에 처리될 수 있다.
이러한 실시예는 데이타 전송을 "개시하는" 처리기가 그 하드웨어로부터 분리되어 데이타를 "수신"처리기로 송신한다는 점에서 적당한 실시예와 다른다. 이것은 I/O기능(명령과 데이타 또다른 처리기로 전송)이 수행되어야 할 때, 제어를 적당한 실시예의 EXEC 370/ETIO와 유사한 응용 프로그램으로 전송하는 추가기능을 필요로 한다. 특정한 I/O연산용 제어를 운영 시스템으로부터 응용 프로그램으로 전송하는 수단은 시스템의 특성에 따라 달라진다.
예를들면, 적당한 실시예에 있엇, S/370은 Start I/O명령어를 수행하고, 이 명령어는 운영 시스템에 위하여 S/370처리기를 그 연관 하드웨어로부터 "분리" 시킴이 없이 정상적 방식으로 처리된다.
제52도에 도시한 도 다른 실시예에 있어서는 S/370 처리기(640)가 명령 또는 데이타를 처리기(641)에 송신할때, 선택된 무효 OP CODE는 Start 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)의 운영 시스템에 대하여 투명하게 작동된다. 에뮬레이션 기능을 적당한 실시예의 EXEC 370에 관하여 설명한 것과 동일한 방법으로 응용 프로그램(지역 기억장치내의 마이크로 코드에 의하여서 보다는) 수행될 수 있다. 처리기(640, 641)사이에 데이타를 전송하기 위하여 인터럽트 기구보다는 폴링 기법을 이용할 수 있으나, 이러한 기법은 비효율적이다. 어느 처리기(640, 641)도 다른 처리기용 I/O연산을 수행할 수 있기 때문에, 다른 처리기용 I/O환경 특성중 일부를 취득할 수 있다. 어느 하나의 처리기내에서의 하나의 응용은 처리 시스템내의 운영 시스템의 서비스를 이용함이 없이 제2처리기내의 유사한 또는 서로 다른 응용에 통신하게 할 수 있다.
일부 특허청구 범위내에서, "응용프로그램 또는 코드"라는 말은 데이타 처리분야의 경험자들이 이해하고 있는 그 종래의 의미로 사용된다. 즉, 이 말은 다음과 같은 면에서 운영 시스템과 전형적으로 구별된다.
1. 응용 프로그램은 운영 시스템의 상단에 놓여 있어서, I/O의 판독, 기록 및 제어, 날짜의 시간등과 같은 서비스를 운영 시스템에 요구하여야 한다.
2. 운영코드는 사용자에 의하여 시작되거나 개시되고, 운영 시스템 서비스를 경유하여 적재된다.
3. 운영 시스템은 주기억 장치를 응용 프로그램의 페이징을 제어한다.
4. 운영 시스템은 주기억 장치를 응용 프로그램에 할당한다. 그러나, 이러한 "응용코드"는 수행할 추가기능이 제공된다.
"다른"(alien)이라는 말은 일부 특허청구의 범위에서 운영 시스템 구성 테이블내에 정의되어 있지 아니하기 때문에, 운영 시스템에 알여지지 아니한 장치를 정의하는데 사용된다. 그러므로 운영 시스템은 이 장치에 대한 장치 구동기가 없어서 이를 제어할 수 없다. 그러나, 운영 시스템상에서 실시되는 특정 응용 프로그램은 이 장치를 알고 있어서 이를 어느 정도 제어할 수 있다.
특허청구 범위안에서, "분별"(discern)이라는 말은 운영 시스템이 이를 운영하는 처리기에 연결된 다른 장치를 알지 못하거나, 처리기가 행동을 취하고, 이러한 행동이 운영 시스템으로부터 격리되어 이 운영 시스템이 이러한 행동을 거절하지 못하게 한다는 의미로 사용된다.
명세서에서 "투명한"(transparent)이라는 말은 이와 동일한 의미로 사용되는 경우가 많다.
위에서는 특히 적당한 실시예에 의하여 본 발명을 설명하였으나, 이 분야의 전문가들은 위에 제시된 여러가지 명령과 기타 형태 및 내용상의 변경도 본 출원의 내용을 벗어나지 아니하는 범위안에서 행할 수 있다고 이해할 것이다. 그러므로 이상의 설명과 도면은 제한적이라기 보다는 예시적이라 할 수 있으며, 첨부된 특허청구 범위안에서는 이러한 모든 변경 및 수정도 본 발명의 취지와 범위에 포함되는 것으로 본다.

Claims (11)

  1. 상기 특성들이 결여되어 있는 제1처리소자와 그 연관 제1운영 시스템용으로 선택된 특성을 가지는 환경을 조성하는 방법으로서, 상기 특성을 가지고, 연관 제2운영 시스템에 의하여 주소지정 기능하고, 운영 시스템에 대한 요구를 경유하여 프로그래머에 의하여 간접적으로 극소 지정 가능한 I/O 장치 및 연결 설비들을 가진 시스템 환경의 일부를 형성하는 제2처리소자에 제1처리소자를 직접 결합시키고, I/O 명령 및 데이타를 제1처리소자로부터 제2운영 시스템에 식별할 수 없는 직접 결합을 경유하여 제2처리소자에 전송하고, I/O 명령과 데이타를 제2처리소자와 그 제2운영 시스템에 의하여 수행할 수 있는 명령과 이용할 수 있는 데이타로 전환시키는 단계들로 구성되어 있고, 제1처리소자와 그 제1운영 시스템의 I/O 기능이 상기 선택의 특성을 가진 시스템 환경내에서 제2운영 시스템의 제어하에 제2처리소자에 의하여 처리하는데 이용할 수 있는 방법.
  2. 제1항에 있어서, I/O 명령 및 데이타를 제2운영 시스템의 제어하에 시스템 환경내에서 처리하는 단계가 더 포함되어 있는 방법.
  3. 제2항에 있어서, 상기 전송 단계에, 인터럽트 요구를 제1처리소자로부터 제2처리소자로 송신하고, 인터럽트 요구를 처리할 수 있는 응용프로그램 루틴에 접근하며, 제2처리소자를 그 시스템 환경으로부터 분리시키고, 제2처리소자가 분리되어 있는 동안에, I/O 명령과 데이타를 제2처리소자에 전술하는 단계가 포함되어 있는 방법.
  4. 제1처리소자와 그 연관 운영 시스템에, 연관 제2운영 시스템에 의하여 주소지정가능하고, 제2운영시스템에 대한 요구를 경유하여 프로그래머에 의하여 간접적으로 주소지정 가능한 I/O장치와 연결 설비를 포함하는 제2처리소자의 특성중 적어도 일부를 제공하는 기구로서, 제1처리소자를 제2처리소자에 직접 결합시키는 수단, I/O 명령과 데이타를 제1처리소자로부터 직접 결합 수단을 경유하여 제2운영 시스템에 식별할 수 없도록 제2처리소자에 전송하는 수단, I/O 명령과 데이타를 제2처리소자와 그 운영 시스템에 의하여 수행할 수 있는 명령과 사용할 수 있는 데이타로 전환시키는 수단이 포함되어 있고, 제1처리소자와 그 운영 시스템의 I/O 기능을 제2처리소자가 그 운영 시스템의 제어하에 처리를 이용할 수 있는 기구.
  5. 제4항에 있어서, 제1처리소자가 시스템/370 처리소자이고, 제2처리소자가 시스템/89 처리소자이며, 제2운영 시스템이 시스템/88 운영 시스템인 기구.
  6. 제5항에 있어서, 전환된 I/O 명령과 데이타를 시스템/88 운영 시스템의 제어하에 처리하는 수단이 더 포함되어 있는 기구.
  7. 제6항에 있어서, 상기 전송 수단에, 시스템/370 처리소자내에 들어 있고, 시스템/88 처리소자에 대한 인터럽트 요구를 개시하는 수단, 시스템/88 응용 프로그램 루틴이 포함되어 있고, 인터럽트 요구를 처리한 수단, 시스템/88 응용 프로그램이 포함되어 있고, 선택적으로 시스템/88 처리소자를 그 연관 I/O 장치와 연결설비로부터 분리시키는 수단, 시스템/88 처리소자가 분리되어 있는 동안에, 시스템/370 I/O 명령 및 데이타를 직접 결합 수단을 경유하여 시스템/88 처리소자에 전송하는 수단이 더 포함되어 있는 기구.
  8. 제5항에 있어서, 상기 시스템/88 처리소자와 I/O 장치 및 연결 설비에 결합되어 있는 다수의 추가 시스템/88 처리소자가 더 포함되어 있고, 시스템/88 운영 시스템이 I/O 적재 디스크를 시스템/88 처리소자 사이에 공유하게 되도록 유효하게 되고, 시스템/88 I/O 기능이 시스템/88 처리소자중 하나상에서 처리될 수 있는 기구.
  9. 하나의 구조를 가진 제1고장 허용단계 처리기쌍이 제1운영 시스템의 제어하에 동일한 연산을 동시에 수행하고, 하나의 구조를 가진 제2파트너 고장 허용한계 처리쌍에 제1운영 시스템의 제어하에 제1쌍과 동시에 동일한 연산을 수행하고, 처리기쌍들이 동일한 중복 시스템 버스와 고장 허용한계 I/O 장치쌍 및 고장 허용한계 주기억 장치쌍에 버스를 경유하여 결합되어, 운영 시스템의 제어하에 처리기쌍, I/O 장치쌍 및 주기억 장치쌍 사이에 동일한 데이타를 전송하고, 각 처리기쌍에 의하여 시스템 버스에 전송되는 신호가 주기적으로 오류탐지를 위하여 비교되고, 오류탐지에 응답하는 수단이 오류를 서비스로부터 제거함으로써 처리기쌍이 나머지 처리기쌍으로 시스템을 계속하여 작동할 수 있게 하는 고장 허용한계 데이타 처리 시스템으로서, 서로 다른 구조를 가지고, 시스템 버스에 결합되어 있고, 제2운영 시스템의 제어하에 서로 동시에 동일한 연산을 수행하며, 오류를 탐지하기 위하여 각 추가 처리기쌍에 의하여 시스템 버스에 전송되는 신호들을 주기적으로 비교하는 추가 제1처리기쌍 및 추가 처리기 파트너쌍, 제1쌍 및 제2파트너쌍내의 처리기가 포함되어 있고, I/O 명령과 데이타를 추가 제1쌍 및 추가 파트너쌍내의 처리기로부터 제1쌍 및 제2파트너쌍내의 해당 처리기로 제1운영 시스템에 대하여 식별할 수 없는 방법으로 통과시키는 수단, 상기 명령과 데이타를 제1쌍 및 제2파트너쌍의 처리기에 의하여 수행할 수 있는 명령과 사용할 수 있는 데이타로 전환시킴으로써 제1처리기쌍과 제2파트너 처리기쌍으로 하여금 추가 제1처리기쌍과 추가 파트너 처리기쌍용의 I/O 제어기로서 행동할 수 있게 하는 수단, 제1쌍 및 제2파트너쌍과 연관되어 있고, 제1쌍 또는 제2파트너쌍내의 추가 처리기쌍 또는 그 해당 처리기쌍에 의하여 시스템 버스에 순서대로 전송된 신호내에서 어떤 오류가 탐지된 때에, 제1쌍 또는 제2파트너쌍내의 추가처리기쌍과 그 해당처리기중 하나를 선택적으로 서비스로부터 제거하고, 다른 쌍들의 작동을 속행시킴으로써 추가 처리기쌍을 고장허용한계가 되게 하는 수단등과 결합되어 있는 고장 허용한계 데이타 처리시스템.
  10. 제1처리기쌍이 제1운영 시스템의 제어하에 동일한 연산을 수행하고, 처리기쌍이 서로 동일한 중복 시스템 버스를 경유하여 고장 하용한계 I/O 장치쌍과 고장 허용한계 주기억 장치에 결합되어 있어서, 동일한 데이타를 I/O 장치쌍, 주기억 장치쌍 및 처리기쌍 사이에 전송하고, 선택된 처리기 조건들을 주기적으로 서로와 비교하여 처리기와 버스 사이에 전송되는 신호속에서 오류를 탐지하고, 어느 처리기내의 오류 탐지에 응답하는 수단이 처리기쌍을 서비스로부터 제거하는 고장 허용한계 처리 시스템으로서, 제1운영 시스템과 다른 제2운영 시스템의 제어하에 작동하고, 프로그램 제어하에 서로 동시에 동일한 연산을 수행하는 추가처리기쌍, 추가쌍내의 선택된 처리기 조건들을 주기적으로 비교하여 오류를 탐지하는 수단, I/O 명령과 데이타를 추가쌍내의 처리기로부터 제1쌍내의 처리기로 제1운영 시스템에 의하여 식별할 수 없는 방법으로 통과시킴으로써 제1처리기쌍으로 하여금 추가 처리기쌍용 I/O 제어기로서 행동할 수 있게 하는 수단, 제1처리기쌍과 연관되어 있고, 주기적 비교에 응답하여 어느 처리기쌍내의 오류를 탐지한 때에 선택적으로 2개의 처리기쌍을 서비스로부터 제거하는 제거수단과 결합되어 있는 고장 허용한계 데이타 처리 시스템.
  11. 제1 S/88 처리기쌍이 프로그램 제어하에 동일한 연산을 동시에 수행하고, S/88 처리기의 제2파트너쌍이 프로그램 제어하에 제1쌍과 동시에 동일한 연산을 수행하며, S/88 처리기쌍이 중복 시스템 버스를 경유하여 S/88 고장 허용한계 I/O 장치쌍과 S/88 고장 허용한계 주기억 장치쌍이 포함되어 있는 하드웨어에 결합됨으로써 동일한 데이타를 S/88 운영 시스템의 제어하에 쌍으로 된 처리기, I/O 장치 및 주기억 장치 사이에 전송하고, 각쌍의 처리기 상태가 오류 탐지를 위하여 주기적으로 비교되고, 오류 탐지에 응답하는 수단이 오류를 생기게 하는 처리기쌍을 서비스로부터 제거하고, 다른 처리기쌍을 가지고 시스템의 연산을 속행하는 시스템/88(S/88) 고장 허용한계 데이타 처리 시스템으로서, 상기 시스템 버스에 결합되어 있고, S/370 운영 시스템의 제어하에 서로 동시에 동일한 연산을 수행하는 제1쌍의 시스템/370(S/370) 처리기 및 추가 파트너쌍의 S/370 처리기, S/88 처리기쌍에서 실행되는 S/88 응용 프로그램이 포함되어 있고, S/88 처리기를 하드웨어로부터 분리시키는 수단, S/88 처리기가 분리되어 있는 동안 S/88 처리기와 응용 프로그램에 의하여 제어되고, S/370 I/O명령과 데이타를 각 S/370 처리기로부터 해당 S/88 처리기로 S/88 운영 시스템에 대하여 식별할 수 없는 방법으로 통과시키는 수단, S/88 처리기와 S/88 응용 프로그램에 의하여 제어되고, S/370 I/O명령을 S/88 명령으로 전환시킴으로써 S/88 처리기로 하여금 S/370 처리기용 I/O 제어기로서 행동할 수 있게 하는 수단, S/370 처리기쌍내의 처리기 상태를 주기적으로 비교하여 오류를 탐지하는 수단, S/88 처리기에 연관되어 있고, 주기적 비교에 응답하여, 처리기쌍내의 오류가 탐지된 경우에는 한쌍의 S/370 처리기와 그 S/88 처리기쌍을 선택적으로 서비스로부터 제거하고, 다른 S/370 및 S/88 처리기쌍을 가지고 시스템 연산을 속행하는 수단등과 결합되어 있고 시스템/88 고장 허용한계 데이타 처리 시스템.
KR1019900006905A 1989-05-17 1990-05-15 데이타 처리 시스템과 데이타 처리 시스템에 시스템 특성을 추가로 제공하는 방법 및 그 기구 KR920008439B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US07/353,116 US5325517A (en) 1989-05-17 1989-05-17 Fault tolerant data processing system
US353111 1989-05-17
US07/353,111 US5283868A (en) 1989-05-17 1989-05-17 Providing additional system characteristics to a data processing system through operations of an application program, transparently to the operating system
US353116 1989-05-17

Publications (2)

Publication Number Publication Date
KR900018829A KR900018829A (ko) 1990-12-22
KR920008439B1 true KR920008439B1 (ko) 1992-09-29

Family

ID=26997789

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019900006905A KR920008439B1 (ko) 1989-05-17 1990-05-15 데이타 처리 시스템과 데이타 처리 시스템에 시스템 특성을 추가로 제공하는 방법 및 그 기구

Country Status (3)

Country Link
KR (1) KR920008439B1 (ko)
CN (2) CN1040803C (ko)
AU (1) AU629336B2 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
DE69330981T2 (de) * 1992-04-20 2002-06-27 3Com Corp Vorrichtung zur Netzmittelerweiterung auf entfernte Netzwerke
US7197663B2 (en) * 2003-11-20 2007-03-27 International Business Machines Corporation Concurrent PPRC/FCP and host access to secondary PPRC/FCP device through independent error management
JP5141381B2 (ja) * 2008-06-02 2013-02-13 富士通株式会社 情報処理装置、エラー通知プログラム、エラー通知方法
CN103136060B (zh) * 2011-11-23 2016-10-05 联想(北京)有限公司 运行控制方法和运行控制装置
US8819485B2 (en) * 2012-03-12 2014-08-26 Infineon Technologies Ag Method and system for fault containment
JP6047349B2 (ja) * 2012-09-12 2016-12-21 株式会社日立製作所 論理回路及び該論理回路を用いた制御装置
CN104750510B (zh) 2013-12-30 2019-04-02 深圳市中兴微电子技术有限公司 一种芯片启动方法及多核处理器芯片
CN107567616A (zh) * 2015-06-26 2018-01-09 惠普发展公司,有限责任合伙企业 操作系统管理
GB2543554B (en) * 2015-10-22 2019-01-23 Advanced Risc Mach Ltd Handling exceptional conditions for vector arithmetic instruction
CN111176559B (zh) * 2015-12-04 2023-07-11 成都华为技术有限公司 数据写入方法及装置、双活系统
US10037150B2 (en) * 2016-07-15 2018-07-31 Advanced Micro Devices, Inc. Memory controller with virtual controller mode
CN110297747A (zh) * 2018-03-22 2019-10-01 福建天泉教育科技有限公司 一种测试统计功能的方法及终端
KR102606009B1 (ko) * 2018-08-16 2023-11-27 에스케이하이닉스 주식회사 캐시 버퍼 및 이를 포함하는 반도체 메모리 장치
US11237970B2 (en) * 2018-11-07 2022-02-01 Micron Technology, Inc. Reduce data traffic between cache and memory via data access of variable sizes
JP2020198044A (ja) * 2019-06-05 2020-12-10 富士通株式会社 並列処理装置
CN110850787B (zh) * 2019-12-04 2021-06-29 中国石油化工股份有限公司 一种并行控制系统及方法
CN111400210B (zh) * 2020-03-10 2022-05-06 苏州盛科通信股份有限公司 一种集中式MACsec包处理芯片的中断处理方法及装置
CN111475359B (zh) * 2020-04-13 2023-05-30 腾讯音乐娱乐科技(深圳)有限公司 多消息交互场景下的系统测试方法、装置和存储介质
CN111722142B (zh) * 2020-05-24 2022-05-10 苏州浪潮智能科技有限公司 一种服务器电源信号传输质量检测装置及方法
CN111679792B (zh) * 2020-06-04 2023-04-07 四川九州电子科技股份有限公司 一种嵌入式设备NandFlash I/O数据监测系统及方法
CN112582009B (zh) * 2020-12-11 2022-06-21 武汉新芯集成电路制造有限公司 单调计数器及其计数方法
CN116189896B (zh) * 2023-04-24 2023-08-08 北京快舒尔医疗技术有限公司 一种基于云端的糖尿病健康数据预警方法及系统
CN116612804B (zh) * 2023-07-19 2023-10-10 芯天下技术股份有限公司 一种芯片崩边检测电路及存储芯片

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4004277A (en) * 1974-05-29 1977-01-18 Gavril Bruce D Switching system for non-symmetrical sharing of computer peripheral equipment

Also Published As

Publication number Publication date
CN1168004C (zh) 2004-09-22
CN1047407A (zh) 1990-11-28
CN1206147A (zh) 1999-01-27
AU629336B2 (en) 1992-10-01
CN1040803C (zh) 1998-11-18
AU5487190A (en) 1990-11-22
KR900018829A (ko) 1990-12-22

Similar Documents

Publication Publication Date Title
KR940004386B1 (ko) 데이타 처리 시스템 및 그 처리 방법
KR920008439B1 (ko) 데이타 처리 시스템과 데이타 처리 시스템에 시스템 특성을 추가로 제공하는 방법 및 그 기구
CA2009550C (en) Data processing system with total system resource management for itself and for an associated alien processor
EP0398693B1 (en) Method and apparatus for adding a data processing function to a data processing system
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
US5325517A (en) Fault tolerant data processing system
EP0398695B1 (en) A single physical main storage unit shared by two or more processors executing respective operating systems
US5369767A (en) Servicing interrupt requests in a data processing system without using the services of an operating system
KR940002340B1 (ko) 다중 운영 체제 컴퓨터 장치
JPH06124242A (ja) 二重化共有メモリ等価性保証方式

Legal Events

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

Payment date: 20030711

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee