입출력 채널

Channel I/O

컴퓨팅에서 채널 I/O는 다수의 컴퓨터 아키텍처, 특히 메인프레임 컴퓨터에 다양한 형태로 구현되는 고성능 입출력(I/O) 아키텍처입니다.과거 채널은 일반적으로 커스텀 디바이스, 다양한 이름의 채널, I/O 프로세서, I/O 컨트롤러, I/O 싱크로나이저 또는 DMA 컨트롤러를 사용하여 구현되었습니다[a].

개요

대부분의 I/O 태스크는 복잡할 수 있으며 포맷 및 기타 유사한 태스크를 변환하기 위해 데이터에 논리를 적용해야 합니다.이 경우 가장 간단한 해결책은 CPU에 로직 처리를 의뢰하는 것이지만 I/O 디바이스는 상대적으로 속도가 느리기 때문에 CPU는 디바이스로부터의 데이터를 기다리는 데 시간을 낭비할 수 있습니다(컴퓨터 관점에서).이 상황을 'I/O bound'라고 합니다.

채널 아키텍처에서는 전용 로직으로 작업을 오프로드하여 CPU의 도움 없이 I/O 태스크의 일부 또는 전부를 처리함으로써 이 문제를 방지합니다.채널은[a] 논리적으로 독립적이며 I/O 작업을 처리할 수 있는 충분한 논리와 작동 스토리지를 갖추고 있습니다.일부는 자체적으로 컴퓨터로 사용할 수 있을 만큼 강력하거나 유연하며 IBM 7090 또는 IBM 7094의 7909 데이터 채널과 같이 보조 프로세서의 한 형태로 해석될 수 있습니다. 그러나 대부분은 그렇지 않습니다.일부 시스템에서는 채널이 중앙 프로세서가 주소 지정할 수 있는 메모리 또는 레지스터를 작동 스토리지로 사용하는 반면, 다른 시스템에서는 채널 하드웨어에 있습니다.일반적으로 채널과 외부 주변기기 사이에는 표준 인터페이스가 있으며 여러 채널을 동시에 작동할 수 있습니다.

일반적으로 CPU는 I/O 태스크를 처리하기 위해 스토리지 블록을 지정하거나 비교적 작은 채널 프로그램을 채널로 보냅니다.대부분의 경우 채널과 컨트롤러는 CPU의 개입 없이 이 작업을 완료할 수 있습니다(예외: 프로그램 제어 인터럽트, PCI를 사용하여 프로그램 l을 촉진하는 채널 프로그램).oading, 요구 페이징 및 기타 필수 시스템 작업)을 수행합니다.

I/O 전송이 완료되거나 오류가 검출되면 컨트롤러는 보통 인터럽트를 사용하여 채널을 통해 CPU와 통신합니다.채널은 보통 메인메모리에 직접 접근할 수 있기 때문에 Direct Memory Access(DMA; 다이렉트메모리 액세스) 컨트롤러라고도 불립니다.

가장 최근의 실장에서는 채널 프로그램이 개시되어 채널 프로세서가 종료 조건 또는 프로그램 제어 인터럽트(PCI) 중 하나가 될 때까지 필요한 모든 처리를 실행한다.이를 통해 CPU와 채널의 상호작용이 거의 없어지고 시스템 전체의 퍼포먼스가 대폭 향상됩니다.채널은 몇 가지 다른 유형의 종료 조건을 보고할 수 있으며, 이는 명백한 정상일 수 있으며 오류를 명확하게 나타낼 수 있으며, 그 의미는 컨텍스트와 후속 감지 동작의 결과에 따라 달라질 수 있습니다.일부 시스템에서는 I/O 컨트롤러가 CPU 개입 없이 일부 작업의 자동 재시도를 요청할 수 있습니다.이전의 실장에서는, 아무리 작은 에러라도 CPU 개입이 필요하게 되어, 결과적으로 오버헤드가 크게 증가했습니다.프로그램 제어 인터럽트(PCI)는 여전히 특정 레거시 작업에서 사용되고 있지만, 불가피한 경우를 제외하고는 이러한 PCI에서 멀어지는 경향이 있습니다.

역사

채널 I/O는 1957년 IBM 709[2] 진공 튜브 메인프레임에서 처음 사용되었으며, 모델 766 Data Synchronizer는 최초의 채널 컨트롤러였습니다.트랜지스터화된 후속 제품인 IBM 7090[3]2-8개의 6비트 채널(7607)과 최대 8개의 채널을 제어할 수 있는 채널 멀티플렉서(7606)를 가지고 있었습니다.7090 및 7094는 7909와 함께 최대 8비트 채널을 가질 수도 있습니다.

IBM은 일부 컴퓨터에서 데이터 채널 명령을 사용하고 7090과 같은 명령 체인을 허용했지만, 대부분의 다른 공급업체는 단일 레코드를 처리하는 채널을 사용했습니다.그러나 GE-600 시리즈와 같은 일부 시스템은 보다 정교한 I/O 아키텍처를 가지고 있었습니다.

나중에 더 큰 IBM System/360 System/370 컴퓨터의 경우 채널은 IBM 2860 셀렉터 채널(1박스에 1~3개의 셀렉터 채널), IBM 2870 바이트 멀티플렉서 채널(멀티플렉서 채널 1개, 옵션에서 1개의 셀렉터 서브 채널) 및 IBM 288과 같은 부피가 크고 비싼 개별 구성요소였습니다.0 블록 멀티플렉서 채널(1박스에 1개 또는 2개의 블록 멀티플렉서 채널)303x 프로세서 복합체에서 IBM은 이 구현을 포기하고 370/158과 동일한 사이클 스틸링 구현을 사용했습니다.System/360 라인의 후속 제품에는 유선 채널이 탑재되어 있지 않았습니다.

Amdahl Corporation의 System/370 호환 채널 하드웨어 구현은 상당히 달랐습니다."C-Unit"이라고 불리는 단일 내부 유닛은 지원되는 모든 채널에 동일한 하드웨어를 사용하여 최대 16개의 채널을 지원했습니다.최대 32개의 채널을 지원하는 2개의 내부 "C-Units"가 가능했습니다.각 "C-Unit"은 일반적으로 "Shifting Channel State Processor"(배럴 프로세서의 일종)라고 불리는 프로세스를 독립적으로 수행했으며, 이 프로세서는 특수 유한 상태 머신(FSM)을 구현했다.각 CPU 사이클은 470V/6 및 /5에서는 32나노초마다, 470V/7 및 8/8에서는 26나노초마다 읽기 완료 상태가 되었다.l priority 시퀀스 및 I/O채널 인태그.해당 채널의 마지막 상태와 그 태그에 의해 정의된 필요한 액션이 수행되었습니다.메인 스토리지에서 데이터를 읽거나 쓰거나 채널 프로그램의 Program Control Interrupt 플래그로 이러한 중단이 지정되면 운영체제 프로그램이 중단되고 "C-Unit"은 최종적으로 해당 채널의 다음 상태를 저장하고 I/O를 설정합니다.채널 출력 태그를 지정하고 다음으로 우선순위가 낮은 채널로 넘어갑니다.경우에 따라서는 프리엠프션이 가능했습니다.이 FSM에 의해 에뮬레이트된 모든 채널에 대해 "C-Unit" 내에 충분한 FIFO 스토리지가 제공되었습니다.유지보수 콘솔 명령어를 사용하여 고객이 선택한 셀렉터, 바이트 멀티플렉서) 또는 블록 멀티플렉서 채널로 채널을 쉽게 재구성할 수 있습니다."2바이트 인터페이스"는 "데이터 입력/데이터 출력" 및 기타 고성능 IBM 채널 옵션과 마찬가지로 지원되었습니다.Amdahl-speak에서는 CCA라고 불리지만 IBM-speak에서는 CTC 또는 CTCA라고 불리는 내장 채널 간 어댑터도 제공되었습니다.IBM은 이와 유사한 채널 기능과 유연성을 제공하도록 메인프레임을 재설계해야 했습니다.IBM의 초기 대응은 "채널 모드"에서 작동하는 모델 158s를 모델 303x 채널 유닛으로만 포함하는 것이었습니다.Amdahl "C-unit"에서 채널은 IBM 모델처럼 바이트 멀티플렉서용으로 채널 0과 4를 예약하지 않고 모든 유형, 셀렉터, 바이트 멀티플렉서) 또는 블록 멀티플렉서일 수 있습니다.

소형 IBM 컴퓨터, System/360 Model 50 이하 및 System/370 Model 158 이하에서는 채널을 CPU 마이크로코드로 구현하고 CPU 자체는 "CPU 모드" 또는 "채널 모드"의 두 가지 모드 중 하나로 작동하며 채널 모드는 CPU 모드에서 "스틸링" 사이클(IBM 2860, 2870 및 2870 amd 2880)됩니다.하드웨어)

최초의 상용 비 IBM 채널 시스템 중 일부는 UNIVAC 490, CDC 1604, Burroughs B5000, UNIVAC 1107GE 635에 탑재되었습니다.그 이후로 채널 컨트롤러는 대부분의 메인프레임 설계의 표준 부분이 되어 왔으며 메인프레임은 작고 빠른 개인용 컴퓨터 및 네트워크 컴퓨팅에 비해 큰 이점을 가지고 있습니다.

1965년 CDC 6600 슈퍼컴퓨터는 이 역할을 위해 주변기기 프로세서(PP)라고 불리는 논리적으로 독립된 컴퓨터 10대와 간단한 I/O 채널 12대를 사용했습니다.PPS는 CDC 최초의 개인용 컴퓨터인 12비트 CDC 160과 160A의 변형 버전이었다.operating system은 처음에 PP0에 상주하여 실행되었습니다.채널은 메모리에 직접 액세스할 수 없었고 인터럽트를 일으킬 수 없었습니다. PP의 소프트웨어는 동기 명령을[b] 사용하여 채널과 A 레지스터 또는 PP 메모리 간에 데이터를 전송했습니다.

훨씬 후에 채널은 일반적으로 "채널 프로세서"라고 불리는 CPU와 같은 박스에 상주하는 온보드 프로세서로 구현되었으며, 일반적으로 RISC 프로세서였지만 IBM의 CMOS 메인프레임에서와 같은 특수 마이크로 코드를 가진 System/390 마이크로프로세서일 수 있습니다.

1981년 IBM 블록 멀티플렉서[4] 채널과 동등한 저가 채널로 도입된 SCSI는 이제 파이버 채널 및 Serial Attached SCSI의 형태로 어디서나 볼 수 있습니다.

최신 컴퓨터에는 PCI Direct Memory Access(DMA; 직접 메모리 액세스) 디바이스 의 주변 디바이스를 버스 마스터하는 형태의 채널이 있습니다.이러한 디바이스의 근거는 원래 채널컨트롤러와 동일합니다.즉, 메인 CPU로부터의 전송 오프로드, 인터럽트 및 컨텍스트스위칭입니다.

채널 컨트롤러는 예를 들어 NeXT 컴퓨터에서 사용되는 여러 채널이 있는 단일 칩 설계만큼 작게 제작되었습니다.

묘사

채널 I/O의 참조 구현은 IBM System/360 메인프레임 제품군 및 후속 제품군의 구현이지만, IBM은 14107010, 7030과 같은 다른 라인에서, 그리고 Control Data, Bull(General Electric/Honeywell) 및 Unis같은 다른 메인프레임 공급업체에서 유사한 구현을 채택했습니다.

채널 I/O를 사용하는 컴퓨터 시스템에는 시스템의 CPU와 독립적으로 모든 입출력 작업을 처리하는 특수한 하드웨어 컴포넌트가 있습니다.채널 I/O를 사용하는 시스템의 CPU는 일반적으로 입출력 레퍼토리에 기계 명령어가1개밖에 없습니다.이 명령어는 채널 프로그램의 형태로 특수한 I/O하드웨어에 전달하기 위해 사용됩니다.그 후 운영체제에 대한 통지가 필요한 이벤트가 발생할 때까지 CPU의 개입 없이 I/O가 진행되며, 이 시점에서 I/O 하드웨어는 CPU에 인터럽트 신호를 보냅니다.

채널은 컨트롤러 또는 디바이스 세트에 모든 I/O를 조정하는 독립된 하드웨어 컴포넌트입니다.이름에도 불구하고 단순한 통신 수단이 아니라 실행할 I/O 작업 목록을 받은 후 I/O의 모든 세부 사항을 처리하는 프로그래밍 가능한 장치입니다(채널 프로그램).

각 채널은 1개 이상의 컨트롤러 및/또는 디바이스를 지원할 수 있지만 각 채널 프로그램은 연결된 디바이스 중 하나만을 대상으로 할 수 있습니다.채널 프로그램에는 채널 자체 및 채널로 향하는 컨트롤러 및 디바이스에 대한 명령어 목록이 포함되어 있습니다.운영체제는 채널 명령의 전체 목록을 준비하면 단일 I/O 기계 명령을 실행하여 채널 프로그램을 시작합니다. 그 후 채널이 완료될 때까지 I/O 작업을 제어합니다.

데이터 테스트 및 채널 프로그램 내의 조건부 분기를 포함하여 매우 복잡한 채널 프로그램을 개발할 수 있습니다.이러한 유연성을 통해 CPU는 개별 I/O 작업을 시작, 모니터링 및 관리하는 데 드는 오버헤드를 줄일 수 있습니다.전용 채널 하드웨어는 I/O 전용으로 CPU보다 효율적으로 실행할 수 있습니다(CPU와 완전히 병렬).채널 I/O는 마이크로컴퓨터의 Direct Memory Access(DMA; 다이렉트메모리 액세스)와 다르지 않습니다.복잡하고 고도의 기능만 갖추고 있습니다.

대형 메인프레임 컴퓨터 시스템에서 CPU는 병렬로 작동하는 몇 가지 강력한 하드웨어 컴포넌트 중 하나에 불과합니다.특수 입출력 컨트롤러(정확한 이름은 제조업체마다 다름)는 I/O를 배타적으로 처리합니다.이러한 컨트롤러는 입출력 전용 하드웨어 채널에 연결됩니다.CPU와 I/O 프로세서가 여러 개 있을 수 있습니다.전체적인 아키텍처는 순수한 CPU 성능을 저하시키지 않고 입출력 성능을 최적화합니다.메인프레임 시스템의 실제 어플리케이션 대부분은 I/O 집약적인 비즈니스 어플리케이션이기 때문에 이 아키텍처는 메인프레임을 다른 유형의 컴퓨터와 구별하는 매우 높은 수준의 throughput을 제공합니다.

IBM ESA/390 용어로 채널은 트리형 또는 계층적으로 구성된 I/O 하위 시스템 내부의 병렬 데이터 연결입니다.System/390 I/O 케이지에서는 채널은 케이지 내에 설치되어 있는 디바이스(ESCON, FICON, Open Systems Adapter 등)에 직접 접속하거나 케이지 바깥, 즉 엄지 두께의 케이블로 위쪽 바닥 아래를 통과하여 테이프 서브시스템 등의 대형 디바이스 채널인터페이스에 직접 접속합니다.DASD(Direct Access Storage Device), 터미널 콘센트레이터 및 기타 ESA/390 시스템.

채널의 종류

채널은 지원하는 동시 I/O 작업의 수와 유형이 다릅니다.IBM 용어로는 멀티플렉서 채널은 동시에 인터리브된 저속 연산을 여러 개 지원하며, 각 연산은 한 번에 1바이트씩 디바이스에서 전송됩니다.셀렉터 채널은 한 에 하나의 데이터 블록을 전송하는 하나의 고속 동작을 지원합니다.블록 멀티플렉서는 논리적으로 동시되는 다수의 채널 프로그램을 지원하지만 한 번에 하나의 고속 데이터 전송만 지원합니다.

또한 채널마다 주변기기와 스토리지 버퍼의 관련성이 다를 수 있습니다.UNIVAC 용어에서는 채널은 내부 지정 인덱스(ISI)로 한번에1개의 버퍼와 디바이스를 활성화하거나 디바이스가 사용하는 버퍼를 선택하는 외부 지정 인덱스(ESI) 중 하나입니다.

채널 프로그램

채널 프로그램은 IBM System/360 및 후속 아키텍처의 I/O 채널 하위 시스템에 의해 실행되는 일련의 채널 명령어(CCW)입니다.채널 프로그램은 하나 이상의 채널 명령어로 구성됩니다.운영 체제는 SSCH(하위 채널 시작) 명령으로 채널 프로그램 실행을 시작하도록 I/O 채널 하위 시스템에 신호를 보냅니다.그 후 중앙 프로세서는 중단될 때까지 비 I/O 명령을 자유롭게 진행할 수 있습니다.채널 동작이 완료되면 I/O 중단으로 중앙 프로세서가 중단됩니다.IBM 메인프레임 라인의 이전 모델에서 채널 유닛은 각 채널에 하나씩 식별 가능한 구성요소였습니다.최신 메인프레임에서는 채널은 모든 채널에 대해 독립된 RISC 프로세서인 채널프로세서를 사용하여 구현됩니다.IBM System/370 Extended[5] Architecture 및 후속 제품은 이전의 SIO(Start I/O) 및 SIOF(Start I/O Fast Release) 기계 명령(System/360 및 초기 시스템/370)을 SSCH(Start Sub-Channel) 명령(ESA/370 및 후속 제품)으로 대체했습니다.

채널 I/O는 입출력 면에서 상당한 경제성을 제공합니다.예를 들어 IBM의 Linux on IBM Z에서 DASD의 전체 트랙을 포맷하려면 하나의 채널 프로그램(따라서 하나의 I/O 명령만)이 필요하지만 여러 채널 명령어(블록당 하나씩)가 필요합니다.프로그램은 전용 I/O 프로세서에 의해 실행되며 애플리케이션 프로세서(CPU)는 다른 작업에 사용할 수 있습니다.

채널 명령어

채널 명령어(CCW)는 특수한 I/O채널 프로세서에 대한 명령어이며, 실제로는 유한상태 머신입니다.채널 연결 장치에서 "읽기", "쓰기" 또는 "감지"와 같은 I/O 작업을 시작하는 데 사용됩니다.채널 I/O를 실장하는 시스템아키텍처에서는 일반적으로 모든 디바이스가 채널로 접속되기 때문에 모든 I/O에는 CCW를 사용해야 합니다.

CCW는 운영체제시스템, I/O서브루틴, 유틸리티 프로그램 또는 스탠드아론 소프트웨어(테스트 및 진단 프로그램 등)에 의해 채널프로그램으로 편성됩니다.제한된 "분기" 기능, 즉 동적으로 프로그램 가능한 기능은 "상태 수정자" 채널 플래그와 "채널 내 전송" CCW를 사용하여 이러한 채널 프로그램 내에서 사용할 수 있습니다.

체인

IBM CCW는 체인으로 연결되어 채널프로그램을 형성합니다.CCW의 비트는 저장소의 다음 위치에 동일한 채널 프로그램의 일부인 CCW가 포함되어 있음을 나타냅니다.채널 프로그램은 일반적으로 예외가 발생하거나 Transfer-in-Channel(TIC) CCW가 실행되거나 CCW가 체인을 지정하지 않고 실행될 때까지 순차적인 CCW를 실행합니다.명령어 체인은 채널에 다음 CCW에 새로운 명령어가 포함되어 있음을 알려줍니다.데이터 체인은 다음 CCW에 동일한 명령어의 추가 데이터 주소가 포함되어 있음을 나타냅니다.를 들어, 1개의 레코드의 일부를 스토리지의 복수의 데이터 영역(수집기 쓰기 및 산란 읽기)[6]에서 쓰거나 읽을 수 있습니다.

채널 프로그램 자동 변경

채널 프로그램은 데이터 읽기를 기반으로 실행 중에 자체 작업을 수정할 수 있습니다.예를 들어 OS/360 [7]ISAM에서는 자기변경이 광범위하게 사용되고 있습니다.

채널 프로그램 예시

다음[8] 예제에서는 기록된 키로 식별된 디스크 레코드를 읽습니다.레코드와 키의 원하는 값을 포함하는 트랙이 알려져 있습니다.장치 제어 장치는 요청된 기록을 찾기 위해 트랙을 검색합니다.이 예에서는 채널프로그램에 지정된 필드의 스토리지 주소가 포함되어 있는 것을 나타내고 있습니다.

SEEK <cylinder/head number> SEARCH KEY EQUAL <키값> TIC *-8 READ DATA <버퍼>가 아닌 경우 검색으로 돌아갑니다.

TIC(채널 내 전송)는 일치하는 키를 가진 레코드(또는 트랙 끝)가 발견될 때까지 채널 프로그램을 SEARCH 명령으로 분기시킵니다.일치하는 키를 가진 레코드가 발견되면 DASD 컨트롤러는 채널 상태에 상태 수정자를 포함시켜 채널이 TIC CCW를 건너뜁니다. 따라서 채널 프로그램이 분기하지 않고 채널이 READ 명령을 실행합니다.

위의 예는 차단되지 않은 레코드(블록당 1개의 레코드)에 대해 올바른 것입니다.차단된 레코드(블록당 여러 레코드)의 경우 기록된 키는 해당 블록 내에서 가장 높은 키와 같아야 하며(및 레코드는 키 시퀀스에 있어야 함) 다음 채널 프로그램이 사용됩니다.

SEEK <cylinder/head number> 검색 키 높음 또는 동일 <키 값> TIC *-8 읽기 데이터 높음 또는 동일하지 않은 경우 검색으로 돌아가기 <버퍼>

데이터 세트가 트랙에 할당되어 있고 요청된 레코드를 찾지 못한 채 트랙 끝에 도달하면 채널 프로그램이 종료되고 "no record found" 상태 표시를 반환합니다.마찬가지로 데이터 세트가 실린더에 할당되어 있고 요청된 레코드를 찾지 못한 채 실린더 끝에 도달하면 채널 프로그램이 종료되고 "no record found" 상태 표시를 반환합니다.경우에 따라 시스템 소프트웨어에는 애플리케이션 프로그램을 중단하지 않고 트랙 또는 실린더 번호를 업데이트하고 I/O 작업을 다시 수행하는 옵션이 있습니다.

가상 스토리지 시스템의 채널 프로그램

대부분의 시스템 채널은 실제(또는 물리적) 주소를 사용하여 작동하며 채널 프로그램은 가상 [9]주소를 사용하여 구축됩니다.운영체제는 이러한 채널 프로그램을 실행하기 전에 이러한 채널 프로그램을 번역해야 합니다.이러한 목적을 위해 입출력 슈퍼바이저(IOS)에는 특별한 패스트픽스 기능이 있습니다.이 기능은 OS 슈퍼바이저에 의해 설계되어 비교적 짧은 "픽스" (즉, "월 클럭"보다 훨씬 짧은 "픽스"에 대해서만 설계되었습니다."me")는 I/O 작업에 사용되는 데이터를 포함하는 페이지는 실제 메모리에 잠기거나 페이지를 고정합니다.채널 프로그램이 복사되고 I/O 작업이 시작되기 전에 모든 가상 주소가 실제 주소로 대체됩니다.작업이 완료되면 페이지는 고정되지 않습니다.

페이지 수정과 해제는 CPU 비용이 많이 드는 프로세스이기 때문에 CPU 비용을 절감하기 위해 장기적인 페이지 수정이 사용될 수 있습니다.여기서 가상 메모리는 각 I/O 작업을 수정하고 해방하는 것이 아니라 애플리케이션 수명 동안 페이지 고정됩니다.장기 페이지 수정을 사용할 수 있는 프로그램의 예로는 DB2가 있습니다.

장기적인 페이지 수정의 대안으로 모든 데이터 버퍼를 포함한 전체 애플리케이션을 메인 스토리지의 원하는 영역으로 이동하는 것이 있습니다.이 작업은 MVS/370에서 z/OS 운영 체제를 통해 특수 SYSEVENT에 의해 수행되며, 이 경우 우선되지 않는 영역(아마도 비선호 영역)에서 외부 스토리지를 스왑 및 호출하고, 다음으로 우선 영역(SYSEVENT TRANSWAP)으로 스왑인됩니다.그 후, 다른 특수한 SYSEVENT(SYSEVENT DONTSWAP)에 의해서, 애플리케이션에 스왑 할 수 없는 마크가 붙을 수 있습니다.이러한 애플리케이션이 정상적으로 종료되거나 비정상적으로 종료될 때마다 운영체제는 애플리케이션을 대신하여 다른 특별한 SYSEVENT를 암묵적으로 발행합니다(SYSEVENT OKSWAP).

채널 I/O를 사용한 부팅

시스템의 부트스트랩 또는 IBM 명명법의 초기 프로그램 로드(IPL)도 채널에 의해 실행됩니다.단, 프로세스는 CPU에 의해 암묵적인 Start I/O(SIO) 명령, 위치0의 암묵적인 채널주소 워드(CAW) 및 OP 코드에서의 암묵적인 채널명령어(CCW)를 통해 부분적으로 시뮬레이트됩니다.tion 0. 명령어체인이 상정되기 때문에 로케이션0의 암묵적인 CCW는 로케이션8 및 16의 채널프로그램의 계속에 도달합니다.또, 그 외의 장소에서는, 이러한 CCW 중 하나가 Transfer-In-Channel(TIC;[10] 전송 인 채널)이 될 가능성이 있습니다.

시스템을 로드하기 위해 묵시적 읽기 IPL CCW는 선택한 IPL 장치의 첫 번째 블록을 위치 0의 24바이트 데이터 영역으로 읽고, 채널은 CCW인 두 번째 및 세 번째 이중 워드를 계속하며, 이 채널 프로그램은 시스템의 첫 번째 부분을 메인 스토리지에 로드합니다.첫 번째 더블워드에는 PSW가 포함되어 있습니다.이 PSW는 IPL 종료 시 취득되면 CPU가 위치8에서 CCW에 의해 읽혀진IPL 텍스트(부트스트랩로더)를 실행합니다.그런 다음 IPL 텍스트가 운영 체제의 Nucleum을 찾아 로드하고 제어를 전송합니다.Nuclear는 필요한 초기화를 수행 또는 시작한 후 일반 OS 작업을 시작합니다.

이 IPL 개념은 디바이스에 의존하지 않습니다.카드 덱, 자기 테이프 또는 디스크, 드럼 등의 다이렉트 액세스 스토리지 디바이스(DASD)에서 IPL을 실행할 수 있습니다.CPU에 의해 시뮬레이트된 Read IPL (X'02')명령어는 카드 리더에서는 Read EBCDIC Select Stacker 1 read 명령어, 테이프 미디어에서는 Read 명령어(본질적으로는 순차적 액세스)입니다만, DASD에서는 Read-IPL 명령어입니다.

DASD 컨트롤러는 X'02' 명령어를 받아들여 X'0000' head X'0000'을 실린더링하고 인덱스 포인트로 건너뛰어(즉, 트랙 디스크립터 레코드(R0)를 지나 Read IPL 명령어를 Read Data(X'06') 명령어처럼 처리합니다.이 특별한 DASD 컨트롤러 동작이 없으면 디바이스에 의존하지 않는 IPL은 불가능합니다.DASD의 경우 IPL 텍스트는 실린더 X'0000', 트랙 X'0000', 레코드 X'01'(24바이트), 실린더 X'0000', 트랙 X'0000', 레코드 X'02'(3,000바이트보다 약간 큰 크기)에 포함되어 있습니다.볼륨 라벨은 항상 실린더 X'0000', 트랙 X'0000' 및 블록 X'03'(80바이트)에 포함되어 있습니다.볼륨 라벨은 항상 HHHH 형식의 포인터로 VTOC를 가리킵니다(즉, VTOC는 처음 65,536 트랙 내에 있어야 합니다).VTOC의 포맷4 DSCB는 VTOC의 범위(크기)를 정의하기 때문에 볼륨라벨은 VTOC 익스텐트의 첫 번째 트랙에 대한 포인터만 필요로 합니다.또한 VTOC를 설명하는 포맷4 DSCB는 항상 VTOC의 첫 번째 DSCB이며 HH도 VTOC의 포인트입니다.

IPL 텍스트로 초기화되지 않은 디바이스에서 IPL을 시도하면 시스템은 단순히 대기 상태가 됩니다.DASD(Direct Access Storage Device) 초기화 프로그램, IBCDASDI 또는 DASD 초기화 애플리케이션 ICKDSF는 디바이스가 IPL이 아닌 데이터용으로만 지정되어야 하며, 그 후에 이러한 프로그램이 다른 하드 드라이브를 포맷하고 VTOC를 실행하는 경우 대기 상태 PSW 및 더미 CCW 문자열을 24바이트에 배치합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "IBM 3705 Communications Controller" (PDF). Datapro Reports on Data Communications. McGraw-Hili. April 1990 [May 1987]. Retrieved April 3, 2022. Cycle-stealing is a form of interrupt in which the component needing access to memory or to the processor takes control for an entire machine cycle.
  2. ^ "IBM Archives: 709 Data Processing System". 03.ibm.com. Retrieved 2014-01-22.
  3. ^ "IBM Archives: 7090 Data Processing System (continued)". 03.ibm.com. 1958-12-30. Retrieved 2014-01-22.
  4. ^ SCSI Forum. Technology Forums. October 1986. p. 202. * Similarities to Mainframe, * System 360 Block Multiplexed Channel, *Trend to Microcomputers
  5. ^ IBM System/370 확장 아키텍처 운영 원리, SA22-7085-0
  6. ^ IBM Corporation (1968). Student Text: Introduction to IBM System/360 Architecture (PDF). IBM Corporation. p. 22.
  7. ^ Attanasio, C.R.; Markstein, P.W.; Phillips, R.J. (1976). "Penetrating an Operating System: a Study of VM/370 Integrity". IBM Systems Journal. 15 (1): 102–116. doi:10.1147/sj.151.0102.
  8. ^ IBM Corporation (1969). IBM System/360 Component Descriptions: 2314 Direct Access Storage Facility and 2844 Auxiliary Storage Control (PDF). IBM Corporation. p. 50.2. Archived from the original (PDF) on 2011-03-22.
  9. ^ IBM Corporation (1978). OS/VS2 MVS Overview (PDF). pp. 8–12. Archived from the original (PDF) on 2011-03-16.
  10. ^ "System/370 동작 원리", GA22–7000–4, 페이지 54-55, 초기 프로그램 로딩; System/370 확장 아키텍처는 매우 유사하지만 XA는 "임플리드" 시작 I/O 대신 "임플리드" 시작 하위 채널(SSCH)을 사용합니다.

메모들

  1. ^ a b 일부 마이크로코드 채널은 완전히 독립된 하드웨어가 아닌 사이클[1] 도용으로 실행되었습니다.
  2. ^ 채널 상태 및 지침에 대한 명시적 테스트 사용
    70 IAN
    채널 d에서A로 입력
    71 IAM
    채널 d에서 m에 단어(A) 입력
    72 OAN
    A에서 채널d로의 출력
    73 OAM
    m에서 채널 d로 (A) 워드를 출력
    74 ACN
    채널 d를 활성화
    75 DCN
    채널 d의 접속을 해제합니다.
    76 팬
    채널 d의 기능(A)
    77 FNC
    채널 d의 함수 m

외부 링크