KR101476073B1 - 채널 서브시스템과 입력/출력 디바이스들 사이에 트랜스포트 모드 입력/출력 동작들을 용이하게 하는 방법, 장치 및 컴퓨터 프로그램 제품 - Google Patents

채널 서브시스템과 입력/출력 디바이스들 사이에 트랜스포트 모드 입력/출력 동작들을 용이하게 하는 방법, 장치 및 컴퓨터 프로그램 제품 Download PDF

Info

Publication number
KR101476073B1
KR101476073B1 KR1020137011599A KR20137011599A KR101476073B1 KR 101476073 B1 KR101476073 B1 KR 101476073B1 KR 1020137011599 A KR1020137011599 A KR 1020137011599A KR 20137011599 A KR20137011599 A KR 20137011599A KR 101476073 B1 KR101476073 B1 KR 101476073B1
Authority
KR
South Korea
Prior art keywords
data
value
dcw
control unit
sli
Prior art date
Application number
KR1020137011599A
Other languages
English (en)
Other versions
KR20130101538A (ko
Inventor
로저 해손
존 플래너건
루이스 리치
스캇 칼슨
매튜 조셉 칼로스
해리 유든프렌드
데일 리디
다니엘 프랜시스 캐스퍼
수잔 케이 칸델라리아
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/173,754 external-priority patent/US8473641B2/en
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20130101538A publication Critical patent/KR20130101538A/ko
Application granted granted Critical
Publication of KR101476073B1 publication Critical patent/KR101476073B1/ko

Links

Images

Abstract

호스트 컴퓨터 시스템의 채널 서브시스템에 의해서 적어도 하나의 명령 메시지를 생성하는 단계 - 상기 적어도 하나의 명령 메시지는 하나 혹은 그 이상의 디바이스 명령 워드들(DCWs)을 포함하고, 상기 하나 혹은 그 이상의 DCW들 중 적어도 하나의 DCW는 서프레스-길이 표시(SLI)를 포함하고, 상기 SLI는 데이터 카운트가 요구된 데이터 양에 매칭하지 않음을 컨트롤 유닛이 검출하는 것에 응답하여 상기 I/O 동작을 계속 수행하도록 상기 컨트롤 유닛에 명령하도록 구성됨 -, 부정확한 길이(IL) 값을 수신하는 단계 - 상기 IL값은 상기 SLI가 제1 SLI값인 것과 상기 데이터 카운트가 상기 요구된 데이터 양에 매칭하지 않는 것에 응답하여 제1 IL값이 됨 -; 및 상기 컨트롤 유닛으로부터 상기 IL값을 수신하는 것에 응답하여, 서브채널-상태 워드(a subchannel-status word)에 IL 인디케이터를 저장하는 단계를 포함하는 방법을 수행하기 위하여 컴퓨터 프로그램 제품이 구성된다.

Description

채널 서브시스템과 입력/출력 디바이스들 사이에 트랜스포트 모드 입력/출력 동작들을 용이하게 하는 방법, 장치 및 컴퓨터 프로그램 제품{FACILITATING TRANSPORT MODE INPUT/OUTPUT OPERATIONS BETWEEN A CHANNEL SUBSYSTEM AND INPUT/OUTPUT DEVICES}
본 발명은 일반적으로 입력/출력(I/O) 처리에 관한 것이며, 특히 트랜스포트 모드 I/O 동작들(transport mode I/O operations)을 용이하게 하기 위한 특징들을 제공하는 것에 관한 것이다.
입력/출력(I/O) 동작들은 I/O 처리 시스템의 메모리와 I/O 디바이스들 사이에 데이터를 전송하기 위해 사용된다. 더 구체적으로 이야기하면, I/O 동작들을 실행함으로써, 데이터는 메모리로부터 하나 혹은 그 이상의 I/O 디바이스들에 라이트되고(written), 데이터는 하나 혹은 그 이상의 I/O 디바이스들로부터 메모리로 리드된다(read).
I/O동작들의 처리를 용이하게 하기 위해서, I/O처리 시스템의 I/O 서브시스템이 채용된다. I/O 서브시스템은 I/O 처리 시스템의 메인 메모리 및 I/O 디바이스들에 결합되어 메모리와 I/O 디바이스들 사이에 정보의 흐름을 지시한다. I/O 서브시스템의 한 예가 채널 서브시스템(a channel subsystem)이다. 채널 서브시스템은 통신 매체로서 채널 경로들(channel paths)을 사용한다. 각각의 채널 경로는 컨트롤 유닛(a control unit)에 결합된 채널을 포함하며, 컨트롤 유닛은 또한 하나 혹은 그 이상의 I/O 디바이스들에 더 결합된다.
채널 서브시스템 및 I/O 디바이스는 I/O 디바이스들과 메모리 사이에 데이터를 전송하기 위해 하나 혹은 그 이상의 명령 컨트롤 블록들(command control blocks)의 전송(transfer)을 지원하는 트랜스포트 모드(a transport mode)로 동작할 수 있다. 트랜스포트 컨트롤 워드(a transport control word: TCW)는 실행될 하나 혹은 그 이상의 I/O 명령들을 명시한다(specify). 명령들이 특정 I/O 동작들을 개시하기 위해서, TCW는 그 동작과 관련된 메모리 영역들, 메모리 영역으로부터 혹은 메모리 영역으로 전송이 완료될 때마다 취해야 할 액션(action), 및 기타 선택들(options)을 지정한다.
한 실시 예는 컨트롤 유닛 - 상기 컨트롤 유닛은 하나 혹은 그 이상의 디바이스들과 통신함 - 과 통신을 위해 구성된 호스트 컴퓨터 시스템에서 입력/출력(I/O) 동작 명령에 의해서 개시된 I/O 동작을 수행하기 위한 컴퓨터 프로그램 제품을 포함한다. 상기 컴퓨터 프로그램 제품은 아래의 단계를 포함하는 방법을 처리하기 위해 처리 회로(a processing circuit)에 의하여 판독 가능하고 상기 처리 회로에 의한 실행을 위한 명령들(instructions)을 저장하는 유형의 스토리지 매체(a tangible storage medium)를 포함한다. 상기 방법은 상기 호스트 컴퓨터 시스템의 채널 서브시스템에 의한 I/O 동작을 명시하는 적어도 하나의 명령 메시지를 생성하는 단계 - 상기 적어도 하나의 명령 메시지는 하나 혹은 그 이상의 디바이스 명령 워드들(DCWs)을 포함하고, 각각의 DCW는 I/O 명령과 관련되며, 상기 하나 혹은 그 이상의 DCW들 중 적어도 하나의 DCW는 데이터 카운트(a data count)와 서프레스-길이 표시(a suppress-length indication: SLI)를 포함하고, 상기 SLI는 컨트롤 유닛이 부정확한 길이 조건(an incorrect length condition)을 검출하는 것에 응답하여 상기 I/O 동작을 계속 수행할 것인지를 상기 컨트롤 유닛에 명령하도록 구성되며, 상기 부정확한 길이 조건은 상기 데이터 카운트가 상기 I/O 동작 명령을 수행하기 위해 요구된 데이터 양(an amount of data required)에 매칭(matching)하지 않는 것에 응답하여 검출되고, 상기 요구된 데이터는 리드 동작 명령을 위해 상기 컨트롤 유닛에서 이용 가능한 데이터와 라이트 동작 명령을 위해 상기 컨트롤 유닛에 의해서 요구된 데이터 중 하나임 -; 상기 컨트롤 유닛에 상기 적어도 하나의 명령 메시지를 포워드하는 단계(forwarding); 상기 컨트롤 유닛으로부터 부정확한 길이(IL) 값을 수신하는 단계 - 상기 IL값은 상기 SLI가 제1 SLI값인 것과 상기 데이터 카운트가 상기 요구된 데이터 양에 매칭하지 않는 것에 응답하여 제1 IL값이 되고, 상기 IL값은 상기 SLI가 제2 SLI 값인 것과 상기 데이터 카운트가 상기 요구된 데이터 양에 매칭하지 않는 것에 응답하여 제2 IL 값이 됨 -; 및 상기 컨트롤 유닛으로부터 상기 IL 값을 수신하는 것에 응답하여, 서브채널 상태 워드(a subchannel-status word)에 IL 인디케이터를 저장하는 단계 - 상기 IL 인디케이터는 상기 IL 값을 나타냄 - 을 포함한다.
다른 실시 예는 컨트롤 유닛 - 상기 컨트롤 유닛은 하나 혹은 그 이상의 디바이스들과 통신함 - 과 통신을 위해 구성된 호스트 컴퓨터 시스템에서 입력/출력(I/O) 동작을 수행하기 위한 장치를 포함한다. 상기 호스트 컴퓨터 시스템은 다음의 방법을 수행하도록 구성된다: 상기 방법은 상기 호스트 컴퓨터 시스템의 채널 서브시스템에 의한 I/O 동작을 명시하는 적어도 하나의 명령 메시지를 생성하는 단계 - 상기 적어도 하나의 명령 메시지는 하나 혹은 그 이상의 디바이스 명령 워드들(DCWs)을 포함하고, 각각의 DCW는 I/O 명령과 관련되며, 상기 하나 혹은 그 이상의 DCW들 중 적어도 하나의 DCW는 데이터 카운트(a data count)와 서프레스-길이-표시(a suppress-length indication: SLI)를 포함하고, 상기 SLI는 컨트롤 유닛이 부정확한 길이 조건(an incorrect length condition)을 검출하는 것에 응답하여 상기 I/O 동작을 계속 수행할 것인지를 상기 컨트롤 유닛에 명령하도록 구성되며, 상기 부정확한 길이 조건은 상기 데이터 카운트가 상기 I/O 동작 명령을 수행하는데 요구된 데이터 양(an amount of data required)에 매칭(matching)하지 않는 것에 응답하여 검출되고, 상기 요구된 데이터는 리드 동작 명령을 위해 상기 컨트롤 유닛에서 이용 가능한 데이터와 라이트 동작 명령을 위해 상기 컨트롤 유닛에 의해서 요구된 데이터 중 하나임-; 상기 컨트롤 유닛에 상기 적어도 하나의 명령 메시지를 포워드하는 단계; 상기 컨트롤 유닛으로부터 부정확한 길이(IL) 값을 수신하는 단계 - 상기 IL값은 상기 SLI가 제1 SLI값인 것과 상기 데이터 카운트가 상기 요구된 데이터 양에 매칭하지 않는 것에 응답하여 제1 IL 값이 되고, 상기 IL 값은 상기 SLI가 제2 SLI 값인 것과 상기 데이터 카운트가 상기 요구된 데이터 양에 매칭하지 않는 것에 응답하여 제2 IL값이 됨 -; 및 상기 컨트롤 유닛으로부터 상기 IL 값을 수신하는 것에 응답하여, 서브채널 상태 워드(a subchannel-status word) 내에 IL 인디케이터를 저장하는 단계 - 상기 IL 인디케이터는 상기 IL 값을 나타냄 - 를 포함한다.
또 다른 실시 예는 컨트롤 유닛 - 상기 컨트롤 유닛은 하나 혹은 그 이상의 디바이스들과 통신함 - 과 통신을 위해 구성된 호스트 컴퓨터 시스템에서 입력/출력(I/O) 동작 명령에 의해서 개시된 I/O 동작을 수행하는 방법을 포함한다. 상기 방법은 상기 호스트 컴퓨터 시스템의 채널 서브시스템에 의한 I/O 동작을 명시하는 적어도 하나의 명령 메시지를 생성하는 단계 - 상기 적어도 하나의 명령 메시지는 하나 혹은 그 이상의 디바이스 명령 워드들(DCWs)을 포함하고, 각각의 DCW는 I/O 명령과 관련되며, 상기 하나 혹은 그 이상의 DCW들 중 적어도 하나의 DCW는 데이터 카운트(a data count)와 서프레스-길이 표시(a suppress-length indication: SLI)를 포함하고, 상기 SLI는 컨트롤 유닛이 부정확한 길이 조건(an incorrect length condition)을 검출하는 것에 응답하여 상기 I/O 동작을 계속 수행할 것인지를 상기 컨트롤 유닛에 명령하도록 구성되며, 상기 부정확한 길이 조건은 상기 데이터 카운트가 상기 I/O 동작 명령을 수행하는데 요구된 데이터 양(an amount of data required)에 매칭(matching)하지 않는 것에 응답하여 검출되고, 상기 요구된 데이터는 리드 동작 명령을 위해 상기 컨트롤 유닛에서 이용 가능한 데이터와 라이트 동작 명령을 위해 상기 컨트롤 유닛에 의해서 요구된 데이터 중 하나 임 -; 상기 컨트롤 유닛에 상기 적어도 하나의 명령 메시지를 포워드하는 단계; 상기 컨트롤 유닛으로부터 부정확한 길이(IL) 값을 수신하는 단계 - 상기 IL 값은 상기 SLI가 제1 SLI 값인 것과 상기 데이터 카운트가 상기 요구된 데이터 양에 매칭하지 않는 것에 응답하여 제1 IL 값이 되고, 상기 IL 값은 상기 SLI가 제2 SLI 값인 것과 상기 데이터 카운트가 상기 요구된 데이터 양에 매칭하지 않는 것에 응답하여 제2 IL 값이 됨 -; 및 상기 컨트롤 유닛으로부터 상기 IL 값을 수신하는 것에 응답하여, 서브채널 상태 워드(a subchannel-status word) 내에 IL 인디케이터를 저장하는 단계 - 상기 IL 인디케이터는 상기 IL 값을 나타냄 - 를 포함한다.
추가적인 특징들 및 장점들은 본 발명의 실시 예의 기술들을 통해서 실현된다. 다른 실시 예들 및 특징들은 여기서 설명되고 청구된 발명의 일부로 고려된다. 상기 장점들 및 특징들을 갖는 본 발명을 더 잘 이해하기 위해서, 아래의 상세한 설명과 도면들을 참조한다.
본 발명으로 간주되는 주제는 본 명세서의 결론 부분에 청구항들로 구체적으로 명확하게 기재되고 청구된다. 본 발명의 전술한 그리고 기타의 목적들, 특징들, 및 장점들은 첨부된 도면들을 참조하여 작성된 아래의 상세한 설명으로부터 명백하다.
도 1은 본 발명의 하나 혹은 그 이상의 특징들을 결합하고 사용하는 I/O 처리 시스템의 한 실시 예를 도시한다;
도 2는 트랜스포트 컨트롤 워드(TCW)의 한 실시 예를 도시한다;
도 3은 트랜스포트 명령 컨트롤 블록(TCCB)의 한 실시 예를 도시한다;
도 4는 도 3의 TCCB를 포함하는 트랜스포트 명령 정보 유닛(IU)의 한 실시 예를 도시한다;
도 5는 도 4의 트랜스포트 명령 IU의 트랜스포트 명령 헤더의 한 실시 예를 도시한다;
도 6은 도 4의 TCCB의 트랜스포트 명령 영역 헤더(TCAH)의 한 실시 예를 도시한다;
도 7은 도 4의 TCCB의 트랜스포트 명령 영역(TCA)의 한 실시 예를 도시한다;
도 8은 일방향 데이터 전송 동작들을 위한 다양한 데이터 카운트들의 예시적 결정들을 기술하는 테이블이다;
도 9는 양방향 데이터 전송 동작들을 위한 다양한 데이터 카운트들의 예시적 결정들을 기술하는 테이블이다;
도 10은 디바이스 명령 워드(DCW)의 한 실시 예를 도시한다;
도 11은 도 10의 DCW의 컨트롤 플래그들 필드(a control flags field)의 한 실시 예를 도시한다;
도 12는 DCW를 위한 예시적 명령 코드들 및 플래그들을 도시한다;
도 13은 트랜스포트 명령 영역 확장(a transport command area extension: TCAX)의 한 실시 예를 도시한다;
도 14는 CBC-오프셋 블록의 한 실시 예를 도시한다;
도 15는 트랜스포트 모드 I/O 동작을 수행하는 방법의 한 실시 예를 예시하는 흐름도이다;
도 16은 채널과 컨트롤 유닛 및/또는 I/O 디바이스 사이에 입력 및 출력 데이터를 트랜스포트하기 위해 사용되는 트랜스포트-데이터 IU들의 실시 예들을 도시한다;
도17은 서브채널-상태 워드(SCSW)를 포함하는 인터럽션-응답 블록(IRB)의 한 실시 예를 도시한다;
도 18a 및 (18b+18c+18d)는 도 17의 SCSW를 위한 예시적 상태 한정자들(status qualifiers)을 도시한다;
도 19는 트랜스포트 응답 IU(a transport response IU)의 한 실시 예를 도시한다; 그리고
도 20은 도 19의 트랜스포트 응답 IU의 상태 영역(status area)의 한 실시 예를 도시한다.
본 발명의 실시 예들은 컴퓨터 시스템에서 입력/출력(I/O) 처리를 용이하게 한다. 한 실시 예에서, 트랜스포트 명령들(transport commands)이 I/O 동작과 채널 경로를 통한 데이터의 전송을 관리하기 위해 제공된다. 트랜스포트 명령들은 데이터 전송 체킹(checking) 및 추가의 DCW들의 전송을 관리하기 위해 사용되는 트랜스포트 명령 메타-정보(transport command meta-information: TCMI)를 전송한다(transfer). 트랜스포트 컨트롤 워드(a transport control word: TCW)에 의해서 명시될 수 있는TCMI는 I/O 동작에서 전송될 데이터에 관한 정보를 정의하고(defining), 명시하며(specifying) 그리고 검증하기(verifying) 위해 하나 혹은 그 이상의 데이터 트랜스포트 정보 유닛들(IU들) 내에 정의된다. 트랜스포트 명령들은 질의 명령(an interrogate command), 전송-CBC-오프셋 블록(TCOB) 명령, 및 전송-TCA-확장(TTE) 명령을 포함할 수 있다.
한 실시 예에서, I/O 처리는 I/O 동작을 위해 디바이스에 송신될 수 있는 명령들의 수를 증가시키도록 호스트 컴퓨터를 인에이블(enable) 함으로써 용이하게 된다. 예를 들어, I/O 동작과 관련될 수 있는 명령들의 수를 증가시키기 위해서 트랜스포트 명령 영역 확장(a Transport Command Area Extension: TCAX) 형식의 TCMI가 호스트로부터 디바이스에 송신될 수 있다. 한 실시 예에서, TCAX는 TCW에 의해서 명시될 수 있고, 전송 TCA 확장(Transfer TCA Extension: TTE) DCW라 일컬어지는, 디바이스 명령 워드(a device command word: DCW)를 통해서 송신되는데, 이는 트랜스포트 명령 영역(a Transport Command Area: TCA) 내에 송신된 명령들뿐만 아니라 수행될 명령들을 포함한다. 한 실시 예에서, TCAX는 TTE DCW에 의해서 명시되고 출력 데이터로서 컨트롤 유닛에 송신된다.
I/O 처리는 또한 부정확한 길이 레코드(an incorrect length record)를 만났을 때 I/O 디바이스가 I/O 동작을 계속할 수 있도록 하는 수단을 제공함으로써 용이하게 될 수 있다. 예를 들어, DCW-부정확한-길이 및 FCX-부정확한 길이 표시 퍼실리티(a DCW-incorrect-length and FCX-incorrect length indication facility)를 호스트 시스템 및 컨트롤 유닛 혹은 디바이스 내에 설치할 수 있다. 이 퍼실리티는 컨트롤 유닛에 의해서 수행될 수 있는 부정확한 길이(IL) 체킹을 준비한다. 서프레스-부정확한-길이 혹은 서프레스 길이 표시(SLI) 필드(a suppress-incorrect-length or Suppress Length Indication (SLI) field)가 디바이스에 송신된 DCW에 추가될 수 있다. 이 비트가 활성화되면(activated), 부정확한 길이 조건이 컨트롤 유닛에 의해서 검출되었을 때 DCW 체이닝(DCW chaining)은 계속되도록 허용된다.
I/O 처리는 또한 단일의 I/O 동작으로 디바이스에 리드 및 라이트 명령 모두를 송신하는 수단을 제공함으로써 용이하게 될 수 있다. 종래 기술의 TCW 채널 프로그램들은 모든 라이트 명령들 혹은 모든 리드 명령들을 명시한다. 양방향 동작은 명령 IU의 트랜스포트 명령 헤더(TCH) 내에 하나 혹은 그 이상의 플래그들을 세트함으로써, 예를 들어, 리드 및 라이트 플래그들을 모두 1(one)로 세트하고 리드 및 라이트 데이터 카운트 모두를 제공함으로써, 명시될 수 있다. 또한, 프로세스 로그인(a Process Login: PRLI) 요청 메시지와 같은 개시 혹은 로그인 메시지(an initiation or login message) 내의 플래그는 채널 서브시스템이 양방향 데이터 전송을 지원함을 표시하기 위해 세트될 수 있다. PRLI 수용 메시지(PRLI accept message)와 같은 응답 메시지는 디바이스가 양방향 데이터 전송을 지원하는지를 표시하기 위해 세트될 수 있는 플래그를 포함할 수 있다. 만일 양방향 데이터 전송이 호스트 및 컨트롤 유닛 모두에 의해서 지원된다면, 리드 및 라이트 플래그들 모두 명령 IU에서 세트되어 있을 경우 디바이스는 에러를 보고하지 않는다. 이 능력은, 양방향 데이터 전송 동작들을 지원하지 않는, 종래 기술의 파이버 채널 프로토콜들(Fibre Channel protocols) 보다 개선된 것이다. 여기서 설명한 바와 같이, "양방향 데이터 전송들"은 단일의 TCW I/O 동작 내에서 수행되는 모든 입력 및 출력 데이터의 전송들, 예를 들어 단일의 TCW I/O 동작 내의 리드 및 라이트 명령들 모두를 송신하고 실행하는 것이다.
도 1은 인터내셔널 비지네스 머신즈 코포레이션((IBM®)에 의해서 제조된 z시리즈 메인프레임 컴퓨터(a zSeries® mainframe computer)와 같은 데이터 스토리지 및/또는 처리 시스템을 포함하는 호스트 컴퓨터 시스템(102)를 포함하는 I/O처리 시스템(100)의 예시적 실시 예를 도시한다. IBM은 미국 뉴욕주 아몬크에 소재하는 인터내셔널 비지네스 머신즈 코포레이션의 등록 상표이다. 여기서 사용되는 기타 제품명들도 인터내셔널 비지네스 머신즈 코포레이션 혹은 다른 회사들의 등록 상표들, 상표들 혹은 제품명들일 수 있다. 호스트 컴퓨터 시스템(102)는 다양한 처리, 스토리지 및 통신 엘리먼트들을 포함한다. 한 실시 예에서, 호스트 컴퓨터 시스템(102)는 하나 혹은 그 이상의 중앙 처리 유닛들(CPU들)(104), 메인 스토리지 혹은 메모리(106)과 같은, 메모리 컴포넌트들, 확장된 스토리지 혹은 메모리(108), 하나 혹은 그 이상의 CPU들(104)에 의해서 실행되는 하나 혹은 그 이상의 운영체제들(OS들)(110)을 포함한다. 예를 들어, 하나의 CPU(104)는 다른 가상 머신 인스턴스들(different virtual machine instances)로서 리눅스 운영체제(a Linux® operating system)(110) 및/또는 z/OS® 운영체제(110)을 실행할 수 있다. CPU(104)는 I/O처리 시스템(100)의 컨트롤링 센터이다. CPU(104)는 명령 실행, 인터럽션 액션, 타이밍 펑션들, 초기 프로그램 로딩, 및 기타 머신-관련 펑션들을 위한 시퀀싱 및 처리 퍼실리티들(sequencing and processing facilities)을 포함한다. CPU(104)는, 양방향 혹은 일방향 버스와 같은, 연결(113)을 통해서 메인 메모리(106) 및/또는 확장된 메모리(108)에 결합된다.
호스트 컴퓨터 시스템(102)는 또한 호스트 시스템(101)과, 하나 혹은 그 이상의 컨트롤 유닛들(118)에 의해서 컨트롤 될 수 있는, 다양한 I/O 디바이스들(116) 사이에 통신 인터페이스를 제공하는 채널 서브시스템(114)를 포함한다. I/O 디바이스들은 프린터들, 자기-테이프 유닛들, 직접 액세스-스토리지 디바이스들, 디스플레이들, 키보드들, 통신 컨트롤러들, 텔레프로세싱 디바이스들, 및 센서-기반 장비와 같은 장비를 포함한다. 이 상세한 설명에서, “컨트롤 유닛”과 “디바이스”라는 용어들은 서로 교환 가능하게 사용될 수 있거나, 혹은 컨트롤 유닛은 하나 혹은 그 이상의 디바이스들을 포함하는 것으로 고려될 수 있다. 채널 서브시스템(114)는 I/O 디바이스들(116)과 호스트 컴퓨터 시스템(102) 사이에 정보의 흐름을 지시한다. 그것은 CPU(104)가 I/O 디바이스들과 직접적으로 통신하는 부담을 덜어주고 데이터 처리가 I/O 처리와 동시에 진행되도록 해준다. 채널 서브시스템(114)는, 버스와 같은 연결(120)을 통해서, CPU들(104), 메인 메모리(106) 및/또는 확장된 메모리(108)에 결합된다.
한 실시 예에서, 채널 서브시스템(114)는 직렬 혹은 병렬 링크와 같은 연결(124)를 통해서 채널 서브시스템(114)를 각각의 컨트롤 유닛(118)에 연결하는 각각의 "채널 경로"(122)를 통해 각각의 I/O 디바이스(116)에 연결된다. 컨트롤 유닛들(118)은 하나 이상의 채널 경로(122)를 통해서 채널 서브시스템(114)에 접속될(attached) 수 있고, 그리고 I/O 디바이스(116)은 하나 이상의 컨트롤 유닛(118) 및/또는 I/O 디바이스(116)에 접속될 수 있다. 모든 경우에, 하나의 개별 I/O 디바이스(116)은 다수의 채널 경로들에 의해서 액세스 가능하게 될 수 있다. 채널 경로는 다양한 종류의 연결들, 예를 들면, 병렬 인터페이스, 직렬-I/O 인터페이스 및 FICON I/O 인터페이스를 사용할 수 있다. 예를 들어, 직렬 채널 경로는, 예를 들어, 파이버 채널 패브릭(a Fibre channel fabric) 내 동적 스위치(126)을 통해서 컨트롤 유닛(118)에 연결되는 하나 혹은 그 이상의 광 파이버들을 포함할 수 있고, 병렬 인터페이스는 다수의 전기적 혹은 광 파이버 도체들(a number of electrical or fiberoptic conductors)을 포함할 수 있다.
한 실시 예에서, 채널 서브시스템(114)는 하나 혹은 그 이상의 개별 채널들(128)을 포함하고 이들 각각은 하나 혹은 그 이상의 채널 경로들(122)를 통해서 하나 혹은 그 이상의 컨트롤 유닛들(118) 및/또는 I/O 디바이스들(116)에 연결된다. 각각의 채널(128)은 로컬 채널 마이크로프로세서(130) 및 이 로컬 채널 마이크로프로세서(130)에 연결되고 이에 의해서 액세스 가능한 로컬 채널 메모리(132)와 같은 처리 일렉트로닉스(processing electronics)를 포함한다. 로컬 채널 메모리(132)는 채널-프로그램 지정(a channel-program designation), 채널-경로 식별자(a channel-path identifier), 디바이스 번호(a device number), 디바이스 카운트(a device count), 상태 표시들(status indications)과 같은 정보를 포함할 수 있을 뿐만 아니라, 경로 가용성(path availability) 및 펜딩 혹은 수행될 펑션들(functions pending or being performed)에 관한 정보도 포함할 수 있다.
하나 혹은 그 이상의 서브채널들도 또한 각 채널(128) 내에 위치한다. 각 서브채널은 관련된 I/O 디바이스(116) 및 채널 서브시스템(114)에 대한 그의 접속(attatchment)에 관한 정보를 제공하는 채널 메모리(132) 내에 위치하는 데이터 구조이다. 상기 서브채널은 또한 I/O 동작들 및 관련된 I/O 디바이스(116)을 개입시키는 기타 펑션들에 관한 정보도 제공한다. 상기 서브채널은 채널 서브시스템(114)가 관련된 I/O 디바이스(116)에 관한 정보를 CPU들(104)에 제공하는 수단이다. 한 실시 예에서, 채널 서브시스템에 의해서 제공되는 서브채널들의 수는 관련된 I/O 디바이스들(116)에 대한 채널 경로들(122)의 수와 무관하다. 예를 들어, 대체(alternate) 채널 경로들(122)를 통해서 액세스 가능한 디바이스(116)은 여전히 하나의 서브채널에 의해서 표시된다.
각각의 컨트롤 유닛(118)은 하나 혹은 그 이상의 I/O 디바이스들(116)을 동작시키고 컨트롤하기 위한 로직(logic)을 제공하고, 공동 퍼실리티들(common facilities)의 사용을 통해서, 각각의 I/O 디바이스(116)의 특성들을 채널(128)에 의해서 제공된 링크 인터페이스에 적응시킨다(adapt). 상기 공동 퍼실리티들은 I/O 동작들의 실행, I/O 디바이스들(116) 및 컨트롤 유닛(118)의 상태에 관한 표시들(indications), 채널 경로(122)를 통한 데이터 전송들의 타이밍의 컨트롤 및 I/O 디바이스 컨트롤의 특정 레벨들을 준비한다(provide for). 컨트롤 유닛(118)은 별도로 설치될 수도 있고 혹은 I/O 디바이스에, 채널 서브시스템에 혹은 CPU에 물리적으로 그리고 논리적으로 통합될 수도 있다.
I/O 처리 시스템(100)의 하나 혹은 그 이상의 상기 컴포넌트들은 2010년 8월 발간된 공보 번호 SA22-7832-08, 9판, "IBM® z/아키텍처 동작의 원리들(z/Architecture Principles of Operation)"에 더 자세히 설명되어 있다.
I/O 동작들은 호스트 컴퓨터 시스템(102)와 I/O 디바이스들(116) 사이의 데이터 전송과 관련된 모든 동작으로서 설명된다. 여기서 설명하는 바와 같이, I/O 동작은 채널 서브시스템(114)와 디바이스(116) 사이의 통신을 포함하는데, 이 통신으로 단일 명령(예를 들어, 채널 명령 워드 혹은 CCW), 다수 명령들을 포함하는 단일 명령 메시지(예를 들어, 트랜스포트 명령 정보 유닛 혹은 트랜스포트 명령 컨트롤 블록(TCCB)), 혹은 다수의 체인된 명령들(예를 들어, 다수의 CCW들)이 채널 서브시스템(114)로부터 디바이스에 송신된다. I/O 동작은 또한, 명령 혹은 체인된 명령들의 수신 및/또는 실행에 응답하여, 디바이스(116) 혹은 관련 컨트롤 유닛(118)에 의해서 생성되는 하나 혹은 그 이상의 응답 메시지들을 포함할 수 있다.
한 실시 예에서, I/O 동작들은 디바이스(116)과 관련된 서브채널을 지정하는 OS(110)에 의해 생성된 I/O 명령들의 실행에 의해서 디바이스(116)에 개시된다. 채널 서브시스템(114)가 I/O 동작의 다양한 펑션들을 수행할 것을 요청하기 위해 그러한 명령들은 CPU(104)에 의해서 호스트 시스템에서 실행되는데, 채널(128) 혹은 서브채널에 파라미터들을 송신함으로써 실행된다.
예를 들어, 채널 서브시스템(114)가 서브채널과 관련된 I/O 디바이스(116)에 스타트 펑션(a start function)을 수행해 줄 것을 요청하는 타겟 서브채널에 파라미터들을 전송함으로써 CPU(104)는 "START SUBCHANNEL" 명령을 실행한다. 채널 서브시스템(114)는, 디바이스(116)으로의 채널 경로를 찾기 위해서 그리고 채널 경로가 일단 선택되면 I/O 동작을 실행하기 위해서, 스타트 펑션(the start function)을 수행하는데, START SUBCHANNEL 명령의 실행 동안 전송된 정보를 포함하여, 서브채널에서의 정보를 사용하여서 수행 한다.
START SUBCHANNEL 명령과 같은 명령이 CPU(104)에 의해서 실행될 때, 채널(128)은 I/O 동작 수행을 시작한다. 한 실시 예에서, 채널 서브시스템(114)는 채널 서브시스템(114)와 디바이스들(116) 및/또는 컨트롤 유닛들(118) 사이의 통신을 위한 고성능(High Performance) FICON(HPF) 프로토콜(a High Performance FICON (HPF) protocol) 하에서 동작한다. FICON 및 HPF에 관해서는 2009년 9월 22일 발표된 "파이버 채널: 단일-바이트 명령 코드 세트 매핑 프로토콜-4(FC-SB-4) (Fibre Channel: Single-Byte Command Code Sets Mapping Protocol - 4 (FC-SB-4))", T11 프로젝트 2122-D, 개정 3.00에 자세히 설명되어 있다.
한 실시 예에서, START SUBCHANNEL 명령의 실행은 동작 요청 블록(ORB)의 컨텐츠(the contents of an operation request block (ORB))를 채널 서브시스템(114)에 전송한다. 상기 ORB는 하나 혹은 그 이상의 명령 워드들(예를 들어, 채널 명령 워드 혹은 트랜스포트 명령 워드이며 이에 관해서는 아래에 더 설명한다)의 주소를 포함하는 채널 프로그램을 명시한다. 서브채널 동작은 두 개의 모드들이 있다. 한 실시 예에서, 호스트 컴퓨터 시스템(102)는 명령 모드(a command mode)에서 동작하고 명령 워드(들)을 채널 명령 워드(CCW) 형식으로 명시한다. 다른 실시 예에서, 호스트 컴퓨터 시스템은 트랜스포트 모드(a transport mode)에서 동작하고 명령 워드(들)을 트랜스포트 명령 워드(TCW) 형식으로 명시한다.
FCX(파이버 채널 확장들) 퍼실리티(facility)가 설치되고 스타트 펑션이 TCW 채널 프로그램을 명시하는 START SUBCHANNEL 명령의 실행 결과로서 서브채널에 세트될 때 서브채널은 트랜스포트 모드에 진입할 수 있다. 상기 서브채널은 스타트 펑션이 상기 서브채널에서 리셋 될 때까지 트랜스포트 모드에 남아있는다. 그 외의 모든 경우에는, 서브채널은 명령 모드에 있게 된다.
명령 모드에서, 채널은 CCW 채널 프로그램을 실행하는데, 이 프로그램은 단일 채널-명령 워드 혹은 순차적으로 실행되는 채널-명령 워드들의 시퀀스를 포함하고 채널 동작들의 특정 시퀀스를 컨트롤한다. 컨트롤 유닛은 CCW I/O 동작을 실행하는데, I/O 디바이스에 의해 CCW 명령들을 디코드하고, 수용하고, 그리고 실행함으로써 그렇게 한다. 순차적 실행을 위해 구성된(arranged) 하나 혹은 그 이상의 CCW들은 CCW 채널 프로그램을 형성하고, 하나 혹은 그 이상의 I/O 동작들로서, 각각, 실행된다.
파이버-채널 확장들(FCX) 퍼실리티는 선택적(optional) 퍼실리티이고, 이는 트랜스포트-명령-컨트롤 블록(TCCB) 및 트랜스포트-상태 블록(TSB)을 지정하는 트랜스포트 컨트롤 워드(TCW)로 구성되는 트랜스포트 모드 채널 프로그램의 형성을 준비한다. TCCB는 트랜스포트-명령 영역(TCA)을 포함하는데, 이는 디바이스-명령 워드들(DCW들)의 형식으로 된 하나 혹은 그 이상의(예를 들어 30까지) I/O 명령들의 목록을 보유한다. TCW와 그의 TCCB는 리드(read) 혹은 라이트(write) 동작을 명시할 수 있다. 한 실시 예에서, FCX-양방향-데이터-전송 퍼실리티는 트랜스포트 모드 동작들을 지원하는 시스템에 설치될 수 있는데, 이는 만일 연결된 디바이스(116) 및 컨트롤 유닛(118)이 양방향-데이터 전송을 지원한다면 호스트 컴퓨터 시스템(102)가 단일 트랜스포트 모드 I/O 동작 내에 입력 및 출력 데이터 모두의 전송을 명시할 수 있도록 한다. 컨트롤 유닛(118)이 양방향 데이터 전송들을 인지할 때, TCW 및 그의 TCCB는, 디바이스에 따라서, 리드 및 라이트 데이터 전송들 모두를 명시할 수 있다.
트랜스포트 모드에서, 단일 트랜스포트 명령 워드(TCW)는 TCCB의 메모리 내 위치(또한 하나 혹은 그 이상의 데이터 영역들의 메모리 (106) 혹은 (108) 내의 위치)를 명시하는데, 이는 명령 모드의 별도의 개별 CCW들 대신 단일 메시지로 송신된다. 컨트롤 유닛(118)은 트랜스포트 모드 I/O 동작을 실행하는데, TCCB와 그 안에 포함된 개별 DCW들을 디코드하고, 수용하고, 그리고 실행함으로써 그렇게 한다. 만일 ORB가 TCW 채널 프로그램을 명시하면, 채널 서브시스템(114)는 TCCB를 컨트롤 유닛(118)에 전송하기 위해서 지정된 TCW 내의 정보를 사용한다. TCCB가 컨트롤 유닛(118)에 전송되고 컨트롤 유닛(118) 및 관련된 I/O 디바이스(116)에 대하여 의미(meaning)를 가진 후에만 TCCB의 컨텐츠는 채널 서브시스템(114)에 의해서 무시된다.
한 예시적 실시 예에서, 컨트롤 유닛(118)은 채널 프로그램을 실행하는 것에 응답하여 응답 메시지를 생성한다. 컨트롤 유닛(118)은 또한, 제한된 수의 통신 시나리오 하에서 채널 프로그램을 실행하지 않고도 응답 메시지를 생성할 수 있는데, 예를 들어 채널 서브시스템(114)에 채널 프로그램이 실행되지 않을 것을 통지하기 위해서 그렇게 할 수 있다. 컨트롤 유닛(118)은 I/O 통신 어댑터와 I/O 디바이스들 사이의 통신을 지원하기 위해, 또한 채널 프로그램 실행을 지원하기 위해 다수의 엘리먼트들을 포함할 수 있다. 예를 들어, 컨트롤 유닛(118)은, 통신과 상태 모니터링을 용이하게 하기 위해 하나 혹은 그 이상의 큐들(queues), 타이머들(timers), 및 레지스터들(registers)뿐만 아니라, 메시지들을 분석하고(parse) 처리하기(process) 위해 컨트롤 로직을 포함할 수 있다.
도 2는 트랜스포트-컨트롤 워드(TCW)의 실시 예를 도시하며, 이 TCW는 호스트 시스템(예를 들어, 메인 메모리(106))에 저장되고 채널(128)로부터 컨트롤 유닛(118)에 전송될 적어도 하나의 컨트롤 블록을 명시한다. 한 실시 예에서, 상기 컨트롤 블록은 트랜스포트-명령-컨트롤 블록(TCCB)이며, 이 TCCB의 컨텐츠는 처리를 위해서 컨트롤 유닛(118) 및 I/O 디바이스(116)으로 트랜스포트된다(transported). TCW(140)이 TCCB를 명시할 때, TCCB는 TCA를 포함하며, 이는 하나 혹은 그 이상의 디바이스-명령 워드들(DCW들) 및 관련 선택(option)들을 명시한다. 데이터 전송(TCCB 내에 보유된 컨트롤 데이터는 제외하고)을 개시하는 명령을 명시하는 DCW를 위해서, TCW(140)은 데이터가 위치할 하나 혹은 그 이상의 스토리지 영역을 지정한다.
한 실시 예에서, 상기 TCA는 전송 TCA 확장(TTE) 명령을 포함하는데, 이는 TCCB 내에 수용될 수 있는 것들에 더하여 추가의 DCW들 및/또는 컨트롤 데이터를 전송하기 위해 제공된다. 상기 TTE는 TCA확장(TCAX)을 (적어도 하나의 DCW를 포함하는) 컨트롤 유닛에 전송하고, 예를 들어, TCCB의 최종(last) DCW를 TTE의 제1 DCW에 체이닝함으로써, 그것이 관련되는 TCA의 논리적 확장으로 간주된다.
도 2를 다시 참조하면, TCW(140)의 실시 예는 64-바이트 범위(boundary)에서 지정되는 64-바이트 컨트롤 블록이다. 상기 TCW는 아래에서 설명하는 바와 같이 다양한 필드들을 포함한다.
예를 들어, 다수의 플래그 필드들(142)는 입력 데이터, 출력 데이터 혹은 TCCB를 찾기 위해 직접 혹은 간접 데이터 어드레싱이 사용되는지를 표시한다. 출력 트랜스포트-간접-데이터 어드레싱(TIDA) 필드는 출력 데이터가 직접적으로 혹은 간접적으로 어드레스 되는지를 표시한다. 예를 들어, 워드 0이고, TCW(140)의 비트 7은 0(zero)이며, 그리고 출력 데이터가 명시 될 때, 출력-데이터-주소 필드(144)는 출력 데이터 위치를 절대 스토리지(absolute storage)에 지정한다. 비트7이 1(one)일 때, 출력-데이터-주소 필드(144)는 출력 스토리지 위치 혹은 위치들을, 각각, 지정하는 TIDAW들의 목록(TIDAL) 내 TIDA 워드(TIDAW) 혹은 제1 TIDAW의 절대 주소를 지정한다. 입력 TIDA 필드는 입력 데이터가 직접적으로 혹은 간접적으로 어드레스 되는지를 표시한다. 예를 들어, 워드 0이고, 비트 5가 0(zero)이며 입력 데이터가 명시될 때, 입력-데이터-주소 필드(146)은 입력 스토리지 위치, 즉 입력 데이터가 저장될 위치의 절대 주소를 지정한다. 비트 5가 1(one)일 때, 입력-데이터-주소 필드(146)은 입력 스토리지 위치 혹은 위치들을 지정하는 TIDAL 내 TIDAW 혹은 제1 TIDAW의 절대 주소(absolute address)를 지정한다. 트랜스포트-명령-컨트롤-블록 TIDA(TCCB-TIDA)필드는 TCCB가 직접적으로 혹은 간접적으로 어드레스 되는지를 표시한다. 예를 들어, 워드 0이고, 비트 6이 0(zero)일 때, TCCB-주소 필드(148)은 TCW를 위해 TCCB의 절대 주소를 지정하고, 비트 6이 1(one)일 때, TCCB-주소 필드(148)은 TCCB의 위치 혹은 위치들을 지정하는 TIDAW 혹은 TIDAL의 절대 주소를 지정한다.
TCW(140)은 또한 TCCB의 바이트들 내의 길이를 명시하는 트랜스포트-명령-컨트롤-블록 길이(TCCBL) 필드(150)을 포함한다. 예를 들어, TCCBL 필드는 부호 없는 정수(unsigned integer)를 포함하는데, 이 값은 (예를 들어, 일방향 데이터 전송들을 위해서는 20에 더해졌을 때 혹은 양방향 데이터 전송을 위해서는 24에 더해졌을 때) TCCB의 길이를 바이트로 명시한다.
메인 메모리(106)으로 전송될 바이트들의 수를 표시할 때 리드 동작들 (R) 필드(152)는 0이 아니다(non-zero)(예를 들어, 워드 1의 비트 14는 1(one)이다). 메인 스토리지로부터 전송될 바이트들의 수를 표시할 때 라이트 동작들(W) 필드(154)는 0이 아니다(non-zero)(예를 들어, 워드 1의 비트 15는 1(one)이다). 만일 R-필드(152) 및 W-필드(154) 모두가 1(one)이면, 타겟 디바이스(116) 및 컨트롤 유닛(118)이 양방향 데이터 전송을 지원하지 않는 한, 프로그램-체크 조건이 인지된다(recognized). 만일 W-비트가 1이고 TCW가 질의(interrogate) TCW이면, 프로그램-체크 조건이 인지된다.
출력-데이터 주소 필드(144)는 디바이스로 송신될 모든 출력 데이터의 스토리지 내 위치를 표시한다. 예를 들어, 워드 1의 비트 15(W-필드 비트 154) 가 1이고 플래그들 필드(142)(출력-TIDA 플래그)의 비트 7이 0일 때, 워드들 2-3은 절대 스토리지 내 64-비트 출력 위치를 지정한다. W-비트가 1이고 출력-TIDA 플래그가 1일 때, 워드들 2-3은 출력 스토리지의 위치 혹은 위치들을 지정하는 TIDAW 혹은 TIDAW들의 리스트의 절대 스토리지 내 64-비트 위치를 지정한다. 입력-데이터 주소 필드(146)은 디바이스로부터 수신되었을 때 입력 데이터가 저장될 위치를 표시한다. 예를 들어, 워드1의 비트 14(R-필드 비트 152)가 1이고 플래그들 필드(142)의 비트 5(입력-TIDA 플래그)가 0일 때, 워드들 4-5는 절대 스토리지 내 64-비트 입력 위치를 지정한다. R-비트가 1이고 입력-TIDA플래그가 1일 때, 워드들 4-5는 입력 스토리지 위치(들)을 지정하는 TIDAW 혹은 TIDAW들의 목록의 절대 스토리지 내 위치를 지정한다.
트랜스포트-상태-블록 주소(156)은 TCW를 위한 트랜스포트-상태 블록의 스토리지 내의 위치를 명시한다. 예를 들어, 워드들 6-7은 TCW를 위한 트랜스포트-상태 블록의 절대 스토리지 내의 64-비트 위치를 지정한다.
트랜스포트-명령-컨트롤-블록 주소 필드(148)은 TCCB의 하나 혹은 그 이상의(직접 혹은 간접) 주소들을 명시한다. 예를 들어, 만일 TCCB-TIDA 비트(플래그들 필드의 비트 6)가 0이면, 워드들8-9는 TCCB의 절대 스토리지 내의 64-비트 위치를 지정한다. TCCB-TIDA가 0일 때, TCCB는 스토리지의 인접 영역(a contiguous area) 내에 상주하기 위해 명시된다. 만일 트랜스포트-명령-컨트롤-블록-TIDA 비트가 1이면, 워드들 8-9는 TCCB의 절대 스토리지 내의 위치를 지정하는 TIDAW 혹은 TIDAW들의 목록의 절대 스토리지 내 64-비트 위치를 지정한다. TCCB-TIDA 비트가 1일 때, TCCB는 스토리지의 비인접 영역들(noncontiguous areas) 내에 상주하기 위해 명시된다.
출력 카운트 필드(158)은 TCW의 출력 바이트들의 수를 명시한다. 예를 들어, 워드 1의 비트 15(W-비트)가 1일 때, 워드 10은 TCW 출력 바이트들의 부호 없는 정수 총 카운트(the unsigned integer total count)를 보유한다. 입력-카운트 필드(160)은 TCW의 입력 바이트들의 수를 명시한다. 예를 들어, 워드 1의 비트 14(R-비트)가 1일 때, 워드 11은 TCW의 입력 바이트들의 부호 없는 정수 총 카운트(the unsigned integer total count)를 보유한다.
만일 TCW가 질의 동작(an interrogation operation)을 명시한다면, 질의-TCW 주소 필드(162)는 질의 TCW의 스토리지 내 위치를 표시한다. 예를 들어, START SUBCHANNEL 명령이 TCW를 지정할 때, TCW의 워드 15는 체크되지 않는다. 그러나, CANCEL SUBCHANNEL명령이 TCW 채널 프로그램을 위해 스타트 펜딩(start pending)이고 상태 펜딩(status pending)이 아닌 서브채널을 지정할 때, START SUBCHANNEL에 의해서 지정된 TCW의 워드 15의 비트들 1-31은 상기 서브채널을 위한 질의 동작을 개시하기 위해 사용되는 질의-TCW의 절대 스토리지 내 31-비트 위치를 지정한다. 만일 CANCEL SUBCHANNEL이 발행될(issued) 때 워드 15가 0들을 보유한다면, 질의 동작은 개시되지 않는다. CANCEL SUBCHANNEL이 발행될 때, 워드 15의 비트 0은 0이 되어야 하고, 그렇지 않으면, 프로그램-체크 조건은 질의-실패한 상태가 표시된 것(interrogate-failed status indicated)으로 인지된다. CANCEL SUBCHANNEL이 발행되고 워드 15의 비트들 1-31이 0들을 보유하지 않을 때는, 워드 15의 비트들 1-31은 64-바이트 범위에서 스토리지 위치를 지정해야 한다, 그렇지 않으면, 프로그램-체크 조건은 질의-실패한 상태가 표시된 것(interrogate-failed status indicated)으로 인지된다. 워드 14는 상기 질의-TCW-주소 필드를 64 비트로 확장하기 위해 유보될 수 있다.
도 3 및 4를 참조하면, 트랜스포트-명령-컨트롤 블록(TCCB)(170)은 하나 혹은 그 이상의 개별 명령들을 TCW I/O 동작의 일부로서 포함하고, 채널 경로를 통해서 채널(128)에 의해 컨트롤 유닛(118) 및/또는 디바이스(116)에 송신된다. TCCB(170)은 채널이 다수의 메시지들(multiple messages) 혹은 정보 유닛들을 송신해야 하는 일을 덜어주고(relieve), 또한 그 동작을 실행할 책임을 컨트롤 유닛으로 넘기며(transfer) 그리고 컨트롤 유닛(118)이 각각의 명령을 위해 응답을 송신할 필요를 제거한다. 대신에, 컨트롤 유닛(118)은 모든 명령들을 실행할 수 있고 그 동작이 완료되면 응답을 송신할 수 있다.
TCCB(170)은 길이가 가변이고(variable), 헤더(header)와 트레일러 (trailer) 정보를 보유할 수 있으며, 하나 혹은 그 이상의(예를 들어, 1에서 30까지) 명령들을 논리적으로 링크된(즉, 체인된) 디바이스-명령 워드들(DCW들)로서 보유할 수 있는데, 이는 그들이 순차 방식으로(in a sequential manner) 컨트롤 유닛(118)에 의해서 실행되도록 하기 위함이다. TCCB(170)은 인접 스토리지의 단일 블록으로서 상주하거나 혹은 인접하지 않는 스토리지의 다수 블록들로서 상주할 수 있다. 예를 들어, 전술한 TCW(140) 내 TCCB-TIDA 플래그는 TCCB가 인접 스토리지 내에 상주하는지를 명시하기 위해 사용된다.
TCCB의 예들이 도 3 및 4에 도시된다. 도 4에서 도시한 바와 같이, TCCB(170)은 I/O 동작을 개시하기 위해 컨트롤 유닛(118)로 송신되는 트랜스포트 명령 정보 유닛(IU)(172)의 일부로서 채널(128)로부터 컨트롤 유닛(118)로 송신될 수 있다. 한 실시 예에서, 트랜스포트 명령 IU(172)는 8-바이트 SB-4 헤더(174), 그 다음의 4-바이트 트랜스포트 명령 헤더(TCH)(176), 그리고 TCCB(170)으로 구성된다. TCCB(170)은 16-바이트 트랜스포트-명령-영역 헤더(TCAH)(178), 가변 길이 트랜스포트-명령 영역(TCA)(180), 및 트랜스포트 명령 영역 트레일러(TCAT)(182)를 포함한다. TCAT(182)는 4-바이트 LRC필드(184), 4-바이트 데이터 전송 길이(DL) 필드(186)를 더 포함할 수 있고, 양방향 동작들을 위해, 4-바이트 양방향 리드 데이터-전송 길이(BRDL) 필드(188)을 더 포함할 수 있다. 이들 필드들에 관해서는 아래에서 더 설명을 할 것이다.
도 4를 참조하면, SB-4 헤더(174)는 데이터 전송을 위한 논리적 경로 및 디바이스(116)을 식별하기 위해서 FC-4 어드레싱 정보를 제공한다. SB-4 헤더(174)는, 디바이스 ID 뿐만 아니라, 채널(128)과 컨트롤 유닛(118) 사이의 논리적 경로를 위한 채널 이미지 ID 및 컨트롤 유닛 ID를 포함하는 정보를 제공한다.
도 5를 참조하면, TCH(176)은 TCCB(170) 및 관련된 디바이스 동작들에 관한 정보를 포함한다. 한 실시 예에서, TCH(176)은 4 바이트를 보유하며 트랜스포트 명령 IU(172) 내에서SB-4헤더(174) 바로 다음에 위치한다. TCH(176)은 길이 필드("L1")(190), 리드 필드("R")(192), 및 라이트 필드("W")(194)와 같은 필드들을 포함한다. 상기 L1 필드(즉, 비트24-29에 위치함)는 TCA(180) 플러스 TCA(180) 바로 다음에 위치하는 1-워드 LRC 필드(184)의 길이를, 워드로(in words), 명시한다. 예를 들어, 컨트롤 유닛들(118)이 양방향 동작들을 지원하지 않는 경우, 트랜스포트 명령 IU(172) 내에 전송된 데이터의 총량(total amount)은 L1 필드 플러스 8(즉, L1 필드 플러스 2-워드 SB-4헤더, 1-워드 TCH, 4-워드 TCAH 및 1-워드 DL)과 같으며(equal); 그렇지 않으면, 컨트롤 유닛은 데이터 카운트 에러 때문에 트랜스포트-명령 IU 무결성 에러(integrity error)를 인지한다. 컨트롤 유닛들이 양방향 동작들을 지원하는 경우, 트랜스포트-명령 IU(172) 내에 전송되는 데이터의 총량은 L1 필드 플러스 8(즉, L1 필드 플러스 2-워드 SB-4헤더, 1-워드 TCH, 4-워드 TCAH 및 1-워드 DL) 혹은 L1 필드 플러스 9(즉, L1 필드 플러스 2-워드 SB-4헤더, 1-워드 TCH, 4-워드 TCAH, 1-워드 DL 및 양방향 동작을 위한 1-워드 BRDL)와 같으며; 그렇지 않은 경우, 컨트롤 유닛은 데이터 카운트 에러 때문에 트랜스포트-명령 IU 무결성 에러를 인지할 것이다. 만일 트랜스포트-명령 IU 무결성 에러가 인지되지 않는다면, TCCB 내의 LRC 위치는 L1 필드에 기초하여 정해지고 그리고 LRC 체크는 수행될 수 있다.
리드(R) 필드(192)는 TCA(190)이 하나 혹은 그 이상의 리드 혹은 입력 명령들을 포함한다는 것을 명시한다. 도 5의 한 실시 예에서, R 필드(192)는 R 비트, 비트 30이며, 이것이 1로 세트 되었을 때, TCA(180)이 리드 데이터(read data)를 전송하는 하나 혹은 그 이상의 명령들을 보유한다는 것을 나타낸다. R 비트가 0으로 세트 되었을 때, TCA(180)은 리드 데이터를 전송하는 어떠한 명령들도 보유하지 않는다. R 비트가 1이고 W 비트(즉, 비트 31)가 0일 때, 동작은 리드 동작으로 해석된다(referred). R 비트와 W 비트가 모두 0으로 세트 되었을 때, TCA(180)은 리드(read) 혹은 라이트(write) 데이터를 전송하는 어떠한 명령들도 보유하지 않으며, 이는 I/O 동작이 데이터 전송을 수행하지 않음을 나타낸다. R 비트와 W 비트가 모두 1로 세트 되었을 때, TCA(180)은 리드 및 라이트 데이터 모두를 전송하는 명령들을 보유할 수 있으며, 이때 동작은 양방향 동작으로 해석된다. 만일 양방향 동작이 명시되었는데 컨트롤 유닛(118)이 양방향 동작들을 지원하지 않는다거나 혹은 컨트롤 유닛(118)은 양방향 동작들을 지원하지만 트랜스포트-명령 IU(172)가 BRDL 필드(188)을 보유하지 않는다면 디바이스(116) 혹은 컨트롤 유닛(118)은 리드-라이트 충돌(read-write conflict) 때문에 TCH 컨텐츠 에러를 인지한다. R 비트가 0이고 컨트롤 유닛(118) 혹은 디바이스(116)이 리드 데이터를 전송하려고 시도하는 TCA(180) 내의 명령을 만났을(encounter) 때, 무효의 리드 시도 때문에 TCCB 컨텐츠 에러가 인지된다.
라이트(W) 필드(194)는 TCA(180)이 하나 혹은 그 이상의 라이트 혹은 출력 명령들을 포함한다는 것을 명시한다. 도 5의 한 실시 예에서, W 필드는 W 비트, 비트 31이며, 이것이 1로 세트 되었을 때, TCA(180)이 라이트 데이터(write data)를 전송하는 하나 혹은 그 이상의 명령들을 보유한다는 것을 나타낸다. 이 비트가 0으로 세트 되었을 때, TCA(180)은 라이트 데이터를 전송하는 어떠한 명령들도 보유하지 않는다. W 비트가 1이고 R 비트(즉, 비트 30)가 0일 때, 이 때 동작은 라이트 동작으로 해석된다(referred). W 비트가 0이고 컨트롤 유닛(118) 혹은 디바이스(116)이 라이트 명령을 명시하는 TCA 내의 명령을 만났을 때, 무효의 라이트 조건 때문에 TCCB 컨텐츠 에러가 인지된다.
도 6을 참조하면, TCA 헤더(TCAH)(178)의 한 실시 예는, TCA 길이 및 디바이스 표시들(device indications)과 같은, TCA(180) 및 그 안에 기술된 동작들에 관한 정보를 포함한다. 이 실시 예에서, 워드 1의 바이트 3은 "L2" 길이 필드(196)이고, 이는 TCA(180) 플러스 TCA 헤더의 워드들 2 및 3, 플러스 4-바이트 LRC 필드(184)(TCA(180) 바로 다음에 옴)의 길이를, 바이트로, 명시하는 부호 없는 2진 정수(an unsigned binary integer)를 보유한다. 서비스-액션 코드 필드(198)(즉, 워드 2의 바이트들 0-1)은 TCCB에 의해서 명시되는 동작의 종류를 명시하는 부호 없는 정수 값을 포함한다. 예를 들어, 헥사 값(a Hex value) '1FFE'는 SB-4 디바이스 I/O 동작을 나타내고, 헥사 값 '1FFF'는 SB-4 디바이스 지원 펑션들(Dvice support functions)을 나타낸다. 우선 번호 필드(200)(즉, 워드 2의 바이트 3)은 컨트롤 유닛 I/O 우선 번호(priority number)를 포함한다.
도 7을 참조하면, 트랜스포트-명령 영역(TCA)(180)은 가변 길이 영역이고, 이는 하나 혹은 그 이상의(예를 들어, 1에서 30까지) 명령들을 디바이스-명령 워드들(DCW들)(202)로서 보유한다. TCA(180)의 길이는, 한 실시 예에서, 4-바이트 워드들의 진정수(integral number)이다. 디바이스 컨트롤 데이터를 명시하는 DCW들(202)을 위해, TCA(180)도 또한 각각의 DCW(202)와 관련된 컨트롤 데이터를 보유한다. 컨트롤 데이터를 명시하는 각각의 DCW(202)는 최대 DCW 용량(capacity)을, 명령-관련 데이터의 크기에 따라서, 하나 혹은 그 이상의 DCW들에 의해서 감소시킨다. 입력 또는 출력 데이터를 명시하는 DCW들(202)을 위해, TCW(140)은 관련 스토리지 영역 혹은 영역들을 지정하고 DCW는 전송할 바이트들의 카운트를 지정한다. 한 실시 예에서, TCA의 최대 크기는 240 바이트이다. 도 7의 실시 예에서 도시한 바와 같이, 전체 DCW(202)를 위해 TCA(180) 내에 충분한 공간이 존재할 때, DCW(202)는 이전의 DCW(202) 혹은 이전의 DCW(202)와 관련된 컨트롤 데이터 다음에 오는 워드 범위에서(on the word boundary) 시작한다. TCA(180) 내 마지막 DCW(202)가 워드들의 진정수가 아닌 컨트롤 데이터를 명시할 때, 후속 LRC 필드(184)는 컨트롤 데이터 다음에 오는 워드 범위에서 시작한다.
일부 디바이스들을 위해, DCW들(202)의 목록은 TCA(180)에 적합한(fit in) 범위를 넘어서 확장될 수 있다. 그러한 경우들에서, 추가의 DCW들을 포함하는 TCA 확장(TCAX) 필드가 명시되고 마치 TCAX가 출력 데이터인 것처럼 전송될 수 있다(예를 들어, 출력 트랜스포트-데이터 IU의 일부로서 전송될 수 있다). 그러나, TCAX는 전송 데이터로서 보다는 TCA(180)의 논리적 계속(a logical continuation)으로서 취급된다. TCAX는 전송-TCA-확장(TTE) DCW에 의해서 TCA(180) 내에 명시된다. TCAX 및 TTE DCW는 아래에서 더 자세히 설명될 것이고, TCAX의 실시 예가 도 12 및 13에 도시되어 있다.
도 3 및 4에서 도시한 바와 같이, TCCB는 트랜스포트-명령-영역 트레일러(TCAT)(182)를 포함할 수 있는데, 이는, 다양한 카운트 정보를 포함하여, TCCB에 관한 추가의 정보를 제공한다. 한 실시 예에서, 일방향 데이터 전송이 명시되거나(R 비트 혹은 W 비트가 1로 세트됨) 혹은 아무런 데이터 전송이 명시되지 않을 때(TCW 내 R 비트 및 W 비트 모두가 0으로 세트됨), TCAT(182)의 길이는 두 개의 워드이다(two words in length). 양방향 데이터 전송이 명시될 때(TCW 내 R 비트 및 W 비트 모두 1로 세트됨), TCAT(182)의 길이는 세 개의 워드이다(three words in length).
예를 들어, 일방향 데이터 전송이 명시될 때, 트랜스포트 카운트 혹은 데이터 길이(DL) 필드(186)은 전송될 총 데이터의 32-비트 부호 없는 정수 카운트("트랜스포트 카운트 값")를 명시한다. 리드 동작이 명시될 때(TCW R-비트가 1), TCAT 내 트랜스포트-카운트 필드의 값은 각각이 리드-타입 명령을 명시하는 DCW들(202) 내의 카운트 필드 값들을 합함으로써 결정될 수 있다. 그 합계는 4의 가장 가까운 배수로 반올림 되고(rounded upwards), 그 반올림 된 합계는 트랜스포트 카운트 값에 도달하기 위해 4만큼 증가된다. 리드 동작이 명시될 때, 상기 트랜스포트 카운트 값은 TCW 입력-카운트 필드(160) 내의 값과 같아야 하며, 4의 다음 배수로 반올림, 플러스 4가 된다.
라이트 동작이 명시될 때(TCW내의 W 비트는 1), 라이트 명령을 명시하는 DCW들(202) 내의 카운트 필드 값들은 합계된다(summed). 또한, 트랜스포트 명령-메타 정보의 전송을 명시하는 모든 트랜스포트-명령 DCW들(아래에서 더 상세히 설명함) 내의 카운트 필드 값들, 플러스 TCMI 내의 유보된 필드들의 크기가 상기 합계에 더해진다. (TCMI 유보된 필드의 크기는 0일 수 있음을 주목할 것). 모든 TIDAW-명시된 컨트롤 블록 체크(CBC) 혹은 순환 리던던시 체크(CRC) 바이트들 및 패딩 바이트들(padding bytes)의 카운트들의 총계가 상기 합계에 더해진다. 상기 합계는 4의 가장 가까운 배수로 반올림되고, 그 반올림된 합계는 4만큼 증가되어 트랜스포트-카운트 값이 된다. 라이트 동작이 명시될 때, 상기 트랜스포트 카운트 값은 TCW 출력-카운트 필드(158) 내의 값과 같아야 하며, 4의 다음 배수로 반올림, 플러스 4가 된다. 리드 혹은 라이트 동작 어느 쪽도 명시되지 않을 때(TCW 내의 W 비트 및 R 비트 모두가 0), 상기 트랜스포트 카운트 값은 0이어야 한다.
양방향 데이터 전송이 명시될 때, DL 필드(186)은 라이트 카운트(write count)이고 전송될 총 출력 데이터의 32-비트 부호 없는 정수 카운트를 명시한다. TCAT(182) 내의 DL 필드(라이트-카운트 필드)의 트랜스포트 카운트 값은 전술한 바와 같이 라이트 동작을 위해 결정된다. 양방향 리드 데이터 길이(BRDL) 필드(188)은 전송될 총 입력 데이터의 32-비트 부호 없는 정수 카운트를 명시한다. BRDL 필드(188)을 위한 트랜스포트 카운트 값은 전술한 바와 같이 리드 동작을 위해 결정된다.
한 실시 예에서, 라이트 동작 혹은 양방향 동작을 위해, DL 필드는 4-바이트 부호 없는 2진 정수를 보유하는데, 이는 그 동작을 위해 컨트롤 유닛에 채널에 의해서 전송될 바이트들의 수를 명시하고 그리고 모든 중간 및 최종 패드와 CRC 바이트들을 포함하며, 그리고 만일 COB가 라이트 동작의 제1 트랜스포트-데이터 IU 내에 포함된다면, 그것은 또한 COB, 모든 COB 패드 바이트들 및 COB CRC 바이트들을 포함한다. 만일 TTE DCW가 TCA 내에 존재하면, DL 필드는 또한 TCAX, 모든 TCAX 패드 바이트들 및 TCAX CRC 바이트들을 포함한다.
도 8 및 9는, 각각, 일방향 및 양방향 전송들을 위한TCW 입력-카운트, 출력-카운트, 및 TCAT 트랜스포트 카운트 값들의 결정을 요약하는 테이블들이다.
양방향 동작을 위해, 양방향-리드-데이터-길이(BRDL) 필드는 4-바이트 부호 없는 2진 정수를 포함하는데, 이는 그 동작을 위해 채널로 컨트롤 유닛에 의해서 전송될 바이트들의 수를 명시하고 그리고 만일 CRC를 위해 이미 워드 범위 플러스 4 바이트에 있지 않다면 워드 범위까지 반올림(round)하기 위해서 요구된 모든 패드 바이트들을 포함한다. 양방향 동작들이 아닌 동작들을 위해, 만일 트랜스포트-명령 IU가 BRDL 필드를 보유한다면 리드-라이트 충돌 때문에, 디바이스는 TCH 컨텐츠 에러를 인지할 것이다.
도 10을 참조하면, 디바이스-명령 워드(DCW)(202)는 실행될 명령을 명시한다. 특정 I/O동작들을 개시하는 명령들을 위해, 그것은 동작이 수행되는 바이트들의 카운트, 스토리지로 또는 스토리지로부터 전송이 완료될 때마다 취해야 할 액션, 및 기타 선택들을 지정한다. DCW 데이터-전송 동작과 관련된 스토리지 영역 혹은 영역들은, 명령에 의해서 명시되는 동작에 따라서, DCW(202)를 포함하는 TCCB(170)을 지정하는 TCW(140)의 입력-데이터-주소 필드(146) 혹은 출력-데이터-주소 필드(144)에 의해서 지정된다. 입력-데이터-주소 필드(146) 혹은 출력-데이터-주소 필드(144)가 스토리지를 직접적으로 혹은 간접적으로 지정하는지는 TCW(140) 내의 입력-TIDA 및 출력-TIDA 플래그들에 의해서 명시된다.
한 실시 예에서, DCW(202)는 TCW(140) 내 한 워드 범위로 지정되는 8-바이트 컨트롤 블록이다. DCW(202)는 명령 코드 필드(204), 컨트롤 플래그들 필드(206), 컨트롤 데이터 카운트(208) 및 DCW 데이터 카운트(210)과 같은 필드들을 포함한다.
명령 코드 필드(204)(예를 들어, 워드 0의 비트들 0-7)는 수행될 동작을 명시한다. 명령이 유효한지는 디바이스에 달려있고 그리고 TCAH(178) 내의 서비스-액션 코드 필드(198)의 값에 달려있다. 기본 명령들은 리드, 라이트, 컨트롤, 감지(sense) 및 트랜스포트를 포함한다. 채널 서브시스템(114)는 다음 동작들을 구별한다: 컨트롤(control), 출력 포워드(output forward (write)), 입력 포워드(input forward (read, sense, sense ID)), 입력 백워드(input backward (read backward)), 브랜칭(branching (transfer in channel)) 및 트랜스포트 (transport). 일부 명령들은, 실행될 때, 데이터의 전송은 일으키지는 않지만 명령 체이닝을 위한 모든 조건들이 만족될 때 디바이스가 다음 명령의 실행을 체인(chain)하고 스타트(start)하도록 한다. 기본 동작들의 각각에 관해서는 아래에서 기술될 것이다.
리드 명령은 디바이스-투(to)-채널 데이터 전송을 수행하는 디바이스 동작의 실행을 개시한다. 라이트 명령은 채널-투-디바이스 데이터 전송을 수행하는 디바이스 동작의 실행을 개시한다. 컨트롤 명령은 DCW 내에 제공된 컨트롤 데이터를 이용하는 디바이스 동작의 실행을 개시한다. 감지 명령은, 데이터가 리코드 소스(a record source)로부터가 아니라 감지 인디케이터들 (sense indicators)로부터 획득된다는 것을 제외하고는, 리드 명령과 유사하다. 컨트롤 명령들 및 관련 컨트롤 데이터는 I/O 명령의 실행 동안 특정 I/O 디바이스의 관리 및 그 디바이스의 컨트롤을 위해 제공된다. 트랜스포트 명령은 I/O 동작 및 채널 경로를 통한 데이터의 전송을 관리하기 위해 제공되고, 디바이스 특정(device specific)은 아니다. 그러한 명령들은 순환 리던던시 체크(CRC) 데이터와 같은 컨트롤 블록 체킹 데이터의 트랜스포트와 트랜스포트-데이터 IU들 내 추가의 DCW들의 트랜스포트를 관리한다.
컨트롤-데이터(CD) 카운트 필드(208)은 DCW(202)와 관련된 컨트롤 데이터 바이트들의 수를 명시한다. 예를 들어, 워드 0의 바이트 3은 컨트롤 데이터의 길이를, 바이트로, 명시한다. 만일 명령 코드가 컨트롤 데이터를 요구하는 명령을 명시하고 그리고 워드 0의 바이트 3이 그 명령을 위해 요구된 것보다 더 적은 컨트롤-데이터 카운트를 명시한다면, 유닛-체크 조건 혹은 TCCB 컨텐츠 에러가 인지된다. 만일 명령 코드가 컨트롤 데이터를 요구 하는 명령을 명시하고 워드 0의 바이트 3이 0을 보유하거나 혹은 TCA의 끝(end)을 넘어서는(past)(혹은 명시된 TCAX의 끝을 넘어서는) 데이터를 명시하는 값을 보유한다면, 디바이스-검출된-프로그램 체크 조건 혹은 TCCB 컨텐츠 에러가 인지된다.
DCW 데이터 카운트 필드(210)은 현재 DCW(202)를 위해 TCW에 의해서 지정된 데이터(예를 들어, 리드 혹은 라이트 동작을 위해 전송될 데이터, 즉 커스터머 데이터)의 바이트 카운트를 명시한다. 예를 들어, DCW 데이터 카운트는 도 10의 DCW(202)의 워드 1에 포함되고, 이 DCW를 위해 TCW에 의해서 지정된 스토리지 영역 내의 바이트들의 32-비트 부호 없는 정수 카운트를 명시한다. DCW 데이터 카운트 필드(210)은 DCW의 실행 동안 채널과 컨트롤 유닛 사이에서 전송될 바이트들의 수를 표시하며, 이에는 어떠한 패드 혹은 CRC 바이트들도 포함되지 않는다.
도 11을 참조하면, 한 실시 예에서, DCW(202)는 다양한 컨트롤 플래그들(206)을 포함한다. 체인-명령(CC) 플래그(212)는 명령들의 체이닝을 수행할 의도를 명시한다. 현재 디바이스 동작이 정상적으로 완료되고 그 디바이스에서 디바이스의 끝(end)을 인지하고 난 후, 명령들의 체이닝은 TCA(180) 내의 다음 DCW(202)가 실행되도록 한다. CC 플래그(212)는 TCA 내의 최종 DCW에서 0으로 세트 된다. 도 10의 실시 예에서, 워드 0의 비트 9(CC 비트)는, 1일 때, 명령들의 체이닝을 명시한다. 1일 때, 그 비트는 현재 DCW의 정상적인 완료 후에 다음 DCW에 의해서 명시된 동작이 개시되도록 한다. 컨트롤-데이터 카운트가 0일 때, 다음 DCW는 TCA 내의 혹은 TCAX 내의 DCW 바로 다음에 온다. 컨트롤-데이터 카운트가 0이 아닐 때, 다음 DCW는 그 DCW를 위해 명시된, 워드 범위로 반올림된, 컨트롤-데이터 바로 다음에 온다. 체인-명령 플래그가 1일 때, 한 실시 예에서, TCA 내 혹은 TCAX 내의 다음 DCW 위치는 현재 DCW의 위치에 8과 CD 카운트 필드 내의 값을 더하고 그것을 가장 가까운 워드 범위로 반올림(rounding upwards) 함으로써 결정된다. 만일 체인-명령 플래그가 TCA 내의 DCW에서 1이고, 다음 DCW 위치가 TCA의 끝(end)을 넘었으며(past), TCAX가 명시되었다면, 다음 DCW는 명시된 TCAX의 시작에 위치한다.
컨트롤 플래그들 필드는, 한 실시 예에서, 서프레스 길이 표시(SLI) 필드(214)를 포함한다. DCW-부정확한-길이 퍼실리티가 채널(128) 및 컨트롤 유닛(118)에 의해서 지원될 때, 하나의 비트(예를 들어, 비트 2)가 SLI 플래그 필드(214)에 제공되는데, 이는 명령 체이닝이 부정확한-길이 조건에서 일어날 것인지 그리고 부정확한-길이 조건이 컨트롤 유닛(118)에 의해서 검출될 때 부정확한-길이가 컨트롤 유닛에 의해서 트랜스포트-응답 IU 내에 표시될 것인지를 컨트롤한다. 만일 DCW 데이터 카운트가 라이트 DCW를 위해 디바이스에 의해서 요구된 데이터의 양에 매치하지 않는다면 혹은 만일 DCW 데이터 카운트가 리드 DCW를 위해 디바이스에서 이용 가능한 데이터의 양에 매치하지 않는다면 부정확한-길이 조건이 컨트롤 유닛에 의해서 검출된다. DCW-부정확한-길이 퍼실리티가 채널(128) 및 컨트롤 유닛(118)에 의해서 지원되지 않을 때, 비트 2는 유보되고 채널에 의해서 0으로 세트되며 그리고 컨트롤 유닛에 의해서 무시된다.
SLI플래그(214)가 1일 때, 부정확한-길이 표시는 억제된다(suppressed). CC 및 SLI 플래그들이 모두 1들일 때, 명령 체이닝은 부정확한-길이 조건의 존재와 상관없이 일어난다. SLI 플래그(214)가 1이고 부정확한-길이 조건이 현재 DCW에 대해 존재할 때, 명령 체이닝은, 만일 표시된다면, 허용될 것이고 컨트롤 유닛은 다음에 오는 DCW의 실행을 계속할 것이다. 한 실시 예에서, SLI 플래그 비트는 1로 세트 되거나 혹은 그렇지 않으면 부정확한-길이 표시의 억제가 바람직한 모든 DCW들 내에서 활성화되어야 한다.
만일 SLI 플래그가 0이고 부정확한-길이 조건이 DCW에 대해 존재하면, 명령 체이닝은, 만일 표시된다 하더라도, 허용되지 않으며 컨트롤 유닛(118)은 I/O 동작을 중지한다(abort). 채널 서브시스템(114)에서, 만일 SLI 플래그가 0이고 부정확한-길이 조건이 존재한다면, TCA(180)의 처리는 종료되고 서브채널에는 서브채널 상태에 표시된 부정확한 길이로 상태 펜딩이 만들어진다. DCW(202)에 대해 부정확한-길이 조건이 존재하고 DCW 내의 SLI 플래그(214)가 1로 세트될 때, 데이터 전송이 아래에서 설명하는 바와 같이 수행되고, 그렇지 않으면 그 동작은 종료되고 비정상적 종료 상황이 그 동작에 대해 보고될 것이다.
리드 DCW(202)에 대해서는, 만일 DCW 데이터 카운트가 그 명령을 위해 디바이스(116)에서 이용 가능한 데이터의 양보다 크다면, 다음이 적용된다. 만일 CC 플래그(212)가 1이면(체이닝이 표시되었다면), 디바이스(116)에서 이용 가능한 데이터는 채널(128)에 전송되고 패드 바이트들(0으로 세트됨)도 전송되어서 전송된 데이터의 양이 DCW 데이터 카운트와 같게 된다. 패드 바이트들을 포함하여, 전송된 모든 데이터는 그 동작을 위해 요구된 CRC의 모든 계산에 포함된다. 만일 CC플래그(212)가 0이면(체이닝이 표시되지 않았다면), 디바이스에서 이용 가능한 데이터는 채널에 전송되고 추가의 데이터는 전송되지 않거나 혹은 패드 바이트들(0으로 세트됨)이 전송되어서 DCW(202)를 위해 전송된 데이터의 양은 DCW 데이터 카운트와 같게 된다. 전송된 데이터 플러스 모든 패드 바이트들이 동작을 위해 요구된 CRC 계산에 포함될 것이다. 이 경우를 위해 패드 바이트들이 전송될 것인지는 모델에 따라 결정될 것이다. 만일 DCW 데이터 카운트가 명령을 위해 디바이스에서 이용 가능한 데이터 양보다 적다면, 오직 DCW 데이터 카운트와 같은(equal) 데이터 양만 DCW(202)를 위해 채널(128)에 전송된다. 오직 전송된 데이터만이 동작을 위해 요구된 CRC의 계산에 포함될 것이다.
라이트 DCW(202)에 대해서는, 만일 DCW 데이터 카운트가 명령을 위해 디바이스에 의해서 요구된 데이터 양보다 크다면, 다음이 적용된다. 만일 CC 플래그(212)가 1이면(체이닝이 표시됨), DCW 데이터 카운트에 의해서 명시된 데이터 양이 컨트롤 유닛(118)에 전송될 것이다. 전송된 데이터는 동작을 위해 요구된 모든 CRC의 계산에 사용될 것이고, 디바이스(116)에 의해서 요구되지 않는 데이터는 폐기된다(discarded). 만일 CC플래그가 0이면(체이닝이 표시되지 않음), 디바이스(116)에 의해 요구된 데이터의 양이 컨트롤 유닛(118)에 전송된다. 추가의 데이터가 다음 중간 CRC워드까지 혹은 DCW를 위한 데이터 카운트가 소진될 때까지 전송된다. 모든 전송된 데이터는 동작을 위해 요구된 모든 CRC의 계산에 사용된다. 만일 DCW 데이터 카운트가 명령을 위해 디바이스(116)에 의해서 요구된 데이터의 양보다 적으면, DCW 데이터 카운터에 의해서 명시된 데이터의 양이 컨트롤 유닛(118)에 전송된다. 전송된 데이터는 동작을 위해 요구된 모든 CRC의 계산에 사용된다.
DCW 데이터 카운트가 명령을 위해 디바이스(116)에 의해서 요구된 데이터의 양보다 크고 CC 플래그(212)가 0인(체이닝이 표시되지 않음) 라이트DCW(202)를 위해, 디바이스(116)에 의해서 요구된 데이터 양이 전송된다. 그리고 데이터는 다음 CBC가 삽입되도록 명시될 때까지 혹은 전송될 데이터 총량이 DCW 카운트와 같을 때까지 계속 전송된다. 예시적 명령 코드들이 도 12에 도시되며, 이는 6개의 TCW를 도시하고 각각의 명령을 위해 어느 플래그들이 정의되는지를 표시한다. 트랜스포트-명령 DCW는 특정 데이터 전송 명령(즉, 호스트 컴퓨터 명령에 의해서 전송되도록 요청되는 커스터머 데이터)을 명시하지 않지만, 트랜스포트-모드 I/O 동작과 관련된 지원 펑션을 수행하는 트랜스포트 명령을 명시하는 타입의 DCW이다. 트랜스포트-명령 DCW는 컨트롤 데이터를 명시할 수 있고 또한 트랜스포트-명령-메타 정보(TCMI)의 전송을 명시할 수 있다. TCMI는, 디바이스에서의 I/O 동작의 상태(status)와 같은, I/O 동작에서 전송 펑션들, 현재의 TCCB에 적합하지 않거나 혹은 TCCB에 의해서 수용될 수 있는 추가의 DCW들에 관한 정보, 그리고 순환 리던던시 체크(CRC) 데이터와 같은 컨트롤 블록 체킹(CBC) 정보를 컨트롤하기 위해 이용되는 데이터를 포함한다.
트랜스포트-명령 DCW가 TCMI의 디바이스로의 전송을 명시할 때, TCMI는 출력 데이터로서(즉, 트랜스포트-데이터IU로) 전송된다. TCMI의 크기는 명령에 따라 다르며, 예를 들어, 4의 배수이다. TCMI는 4개의 유보된 바이트들에 의해서 확장될 수 있는데, 그 경우는 다음과 같다. TCMI의 크기는 4의 짝수 배수(even multiple)이다, TIDAW들이 출력 스토리지 영역들을 명시하기 위해 사용된다, 삽입-CBC 플래그가 TCMI를 보유하는 스토리지를 명시하기 위해 사용된 최종 TIDAW 내에서 1이다, 체인-명령 비트가 TCMI를 명시하는 트랜스포트 명령 DCW에서 1이다, 그리고 후속의 DCW가 TCMI 혹은 출력 데이터의 전송을 명시한다. 트랜스포트 명령이 TCMI의 디바이스에 대한 전송을 명시하고 위의 모든 조건들이 충족되어서 TCMI가 4개의 유보된 바이트들에 의해서 확장되었을 때, 4개의 유보된 바이트들은 트랜스포트 명령 DCW 내의 데이터-카운트에는 포함되지 않지만, 다음에는 포함됨을 주목한다: TCMI를 보유하는 스토리지를 명시하기 위해 사용된 최종 TIDAW 내의 카운트 값, TCW 내의 출력-카운트 값 그리고 (일방향 데이터 전송들을 위한) 관련 TCCB 내의 트랜스포트-카운트 값(혹은 양방향 전송을 위한 관련 TCCB 내의 라이트-카운트 값).
한 실시 예에서, TCMI는 질의 정보(질의 DCW를 통해서), CBC-오프셋 블록(전송-CBC-오프셋 블록 DCW를 통해서) 그리고 TCA 확장(전송-TCA 확장 DCW를 통해서) 포함한다.
도 13은,TCCB(170)의 TCA(180)에 포함되고 컨트롤 유닛(118)에 전송될 TCA확장(TCAX)(220)을 명시하는, 전송 TCA 확장(TTE) 명령이라 하는, 트랜스포트-명령 DCW의 한 종류에 의해서 명시된 데이터의 한 실시 예를 도시한다. TCAX는 TCA(180)의 논리적 확장으로 간주된다. 일부 디바이스들 (116)을 위해, I/O 동작과 관련된 DCW들(202)의 목록은 TCA(180)에서 수용될 수 있는 DCW들의 수를 초과한다. 그러한 경우에, TTE DCW는 출력 데이터로서 (예를 들어, 데이터-트랜스포트 IU로) 전송되는 TCAX(220)을 명시하는, TCW(140)의 끝에 포함될 수 있다. TTE DCW의 컨텐츠는 전송-TCA 확장 명령(예를 들어, 50 hex의 값)을 포함하는 명령 코드를 포함할 수 있다.
예를 들어, TCA(180)은 길이가 가변이며 최대 크기는 240이고, DCW는 8 바이트이다. 따라서, 이 예에서, 최대 30개의 DCW들이 TCCB(170)에서 전송될 수 있다. 그러나, 컨트롤 데이터를 필요로 하는 컨트롤 명령들을 명시하는 DCW들(202)를 위해, 컨트롤 데이터가 TCCB 내의 각 DCW(202) 바로 다음에 온다. 따라서, 그러한 명령들을 보유하는 TCCB들(170)은 30개의 DCW들보다 더 적게 제한된다. TTE DCW는 TCA(180)에 적합하지 않는 I/O 동작을 위해 요구된 추가의 DCW들을 명시하기 위해 사용될 수 있다.
도 13에 도시한 바와 같이, TCA 확장(TCAX)는 가변-길이 영역이고, 이는 다른 트랜스포트-명령 IU 혹은 TCCB 내 TCA(180)의 논리적 연속이며, DCW들의 목록과 관련 컨트롤 데이터를 포함한다. TCAX는 (초기 TCCB 내의 전송된 것들에 더하여) TCW I/O 동작을 위한 하나 혹은 그 이상의 추가의 DCW들과 그 관련 컨트롤 데이터를 보유하고, I/O 동작을 위해 요구된 DCW들의 목록을 확장하기 위해 다른 TCCB 혹은 트랜스포트-데이터 IU 내에 송신될 수 있다. 한 실시 예에서, TCAX의 길이는 4의 정수배(integral multiple)이다.
도 13에 도시한 바와 같이, 한 실시 예에서, TCAX(220)은 DCW(202) 및/또는 이전의 DCW(202)를 위한 컨트롤 데이터를 포함한다. TCAX(220) 내의 최종 정보가 DCW(202)일 때, 그 DCW(202)의 끝은 TCAX(220) 내의 의미 있는 정보의 끝을 정의한다. TCAX(220) 내의 최종 정보가 컨트롤 데이터 및 4-바이트 범위의 컨트롤 데이터 끝들(ends)일 때, 그 컨트롤 데이터의 끝은 TCAX(220) 내의 의미 있는 정보의 끝을 정의한다. TCAX(220) 내의 최종 정보가 컨트롤 데이터이고 컨트롤 데이터가 4-바이트 범위의 끝이 아닐 때, 4-바이트 범위에 도달하기 위해 패딩 바이트들이 컨트롤 데이터에 추가되며 그 패딩 바이트들의 끝은 TCAX(220) 내의 의미 있는 정보의 끝을 정의한다. 4에 의해서 나누어지는TCAX(220) 내의 의미 있는 정보의 크기가 홀수(an odd number)일 때, 유보된 바이트들은 없으며; 그렇지 않은 경우, TCAX(220) 내의 의미 있는 정보의 바로 다음에 오는 4 바이트들은 유보되고 0들을 보유한다. TCA(180) 내의 최종 DCW(202)를 위한 컨트롤 데이터가 TCAX(220) 내에 보유될 때, 그 컨트롤 데이터는 TCAX(220) 내의 제1 데이터이다.
TCAX(220) 내의 DCW들 및 컨트롤 데이터는 TCA(180)에 대해 정의된 대로 처리된다. 한 실시 예에서, TCOB DCW(아래에서 상세히 설명)이 TCA(180) 내에 존재하지 않을 때, TTE DCW는 TCA(180) 내의 제1 DCW(202)이다. TCOB DCW가 TCA(180) 내에 존재할 때, TTE DCW는 TCA(180) 내의 제2 DCW(202)이다. TTE DCW 데이터 카운트는 TCAX(220)의 길이를 명시하고 4 바이트의 정수배가 될 수 있다. TTE DCW 컨트롤-데이터 카운트는 0이고 TTE DCW 내의 체인 명령 플래그는 1로 세트 된다. TTE DCW 데이터는 TCAX CRC 혹은 TCAX 패드 바이트들을 포함하지 않는다.
TTE 명령(TTE DCW)는 TTE 명령에 대한 지원을 표시하는 디바이스에 송신되어야 하고 그리고 TCA 길이가 특정의 최대 값(예를 들어, 60 워드)을 갖고 TCA 내의 최종 DCW를 위한 컨트롤 데이터가 TCA 내의 최종 바이트를 넘어서 확장될 때, 또는 TCA 길이가, 예를 들어, 58 워드보다 크고 하나 혹은 그 이상의 추가의 DCW들이 I/O 동작을 위해 필요할 때, 송신된다. COB가 라이트 트랜스포트-데이터 IU 내에 제공될 때, TCAX는 COB CRC 다음에 온다. COB가 제공되지 않을 때, TCAX는 I/O 동작의 제1 라이트 트랜스포트-데이터 IU에 송신될 것이다.
DCW의 다른 종류는 전송 CBC-오프셋 블록(TCOB) DCW이고, 이는 CBC 오프셋 블록(COB)을 컨트롤 유닛으로 전송하는 명령이다. CBC 데이터는 컨트롤 블록 체킹 데이터라 하는데, 이는 정확한 양의 입력 혹은 출력 데이터가 I/O 동작에서 전송되고 있음을 검증하기 위해 사용된다. 한 실시 예에서, CBC는 순환 리던던시 체크(CRC) 데이터이고, COB는 CRC 오프셋 블록이며, TCOB DCW는 전송 CRC-오프셋 블록 DCW이다. 일반적으로, 순환 리던던시 체크(CRC)는 에러-검출 코드로서, 이는 채널(128)과 컨트롤 유닛(118) 사이에 송신되는 원 데이터(raw data)에 대한 우발적 변경들(accidental changes)을 검출하도록 구성된다. CRC-인에이블된 디바이스(예를 들어, 채널(128))는 송신되거나 저장될 데이터의 각 블록에 대해서 짧은, 고정된-길이의 2진수 시퀀스를 계산하고 이를 데이터에 덧붙여(append), 코드워드(codeword) 혹은 "CRC 워드"를 형성한다. 예를 들어, CRC 생성이 제공될 때, 채널(128)은 송신된 데이터 상에 CRC를 생성하고 최종 데이터 바이트의 끝에 계산된 값을 삽입한다. CRC 워드가 수신되거나 혹은 리드될 때, 수신 디바이스(예를 들어, 컨트롤 유닛(118))는 자신의 체크 값을 그 데이터 블록으로부터 새롭게(freshly) 계산된 값과 비교하거나, 혹은 전체 코드워드에 관하여 CRC를 수행하고 그 결과 만들어진 체크 값(the resulting check value)을 예상되는 나머지 상수(an expected residue constant)와 비교한다. 만일 체크 값들이 매치(match)하지 않으면, 그 블록은 전송된 데이터 내에 에러를 보유한다. CBC 데이터가 여기 실시 예들에서 CRC 데이터로 기술되었다고 해서, 그것이 그렇게 제한되는 것은 아니다.
한 예시적인 TCOB DCW는 COB가 디바이스에 트랜스포트 됨을 명시한다. 이 예시적 TCOB는 전송 CRC-오프셋 블록 명령(예를 들어, 60 hex의 값)을 보유하는 명령 코드를 갖는다. 체인-명령 플래그는 1이다. TCOB DCW의 CD 카운트(208)이 0이 아닐 때, COB는 TCA(180) 내의 TCOB DCW 바로 다음에 오고 CD 카운트(208)은 4에 의해서 곱해진 COB 내의 CRC 오프셋들의 수를 명시한다. CD 카운트(208)이 0일 때, COB는 출력 데이터 내의 TCMI로서 명시되고 COB의 위치는 TCW 내의 출력-데이터-주소-필드(146)에 의해서 명시되며, 카운트 필드는 4에 의해서 곱해진 COB 내의 CRC 오프셋들의 수를 명시한다.
도 14에서 도시한 바와 같이, COB(222)는 리드 혹은 라이트 데이터 전송을 위한 트랜스포트 데이터 내의(예를 들어, 트랜스포트-데이터 IU 내의) 중간 CRC 워드들의 위치를 명시한다. 한 실시 예에서, COB는 TCA(180) 내의 제1 DCW(202)가 TCOB 명령을 보유할 때, 즉 TCOB DCW일 때, 제공된다. 중간 CRC 오프셋들은 데이터 전송 IU 내의 데이터 사이에 위치하고 상기 IU의 끝 전에 위치하는 CRC 워드들이다. COB(222)는, CRC 오프셋들(224)라고 하는, 1-워드 값들을 보유하고, 이들 각각은 트랜스포트 데이터 내의 각 중간 CRC 워드의 바이트 오프셋을 식별한다. 예를 들어, COB는 가변-길이 컨트롤 블록이고, 이는 4-바이트 엔트리들의 목록을 포함하며, 이들 각각은 출력 데이터 내에 삽입될 TIDAW에 의해서 명시되는 CRC의 오프셋을 식별한다.
도 14에 도시한 실시 예에서, COB(222)는 중간-CRC 오프셋들의 1에서 N+1까지의 워드들(1 to N+1 words)(CRC 오프셋 워드들(224))을 포함한다. 만일 COB(222)가 트랜스포트-데이터 IU에 제공된다면, COB는 또한 패드 바이트들의 0 혹은 1 워드들과 CRC의 1 워드를 포함할 수 있다. 패드 바이트들은 CRC를 보유하는 워드가 더블워드 범위가 아닌 한 워드 범위에 있도록 제공될 수 있다. COB의 최종 워드는, 0에서 N까지의 중간 CRC 오프셋들과, 만일 존재한다면, 패드 워드들을 커버하는 CRC를 보유할 것이다. 만일 COB가 TCOB DCW를 위한 컨트롤 데이터로서 제공된다면, COB 패딩 혹은 CRC는 없을 것이며 컨트롤-데이터 카운트는 COB 내의 중간-CRC-오프셋 필드들의 수의 4배와 같을 것이다.
라이트 동작들을 위해, TCOB DCW는 COB가 디바이스(116)에 트랜스포트됨을 명시한다. TCOB DCW 명령 코드는, 예를 들어, 60 hex의 값인 TCOB 명령을 포함한다. COB의 위치는 컨트롤-데이터 카운트에 의해서 결정되고 I/O 동작의 제1 라이트 트랜스포트-데이터 IU에 혹은 I/O 동작의 TCOB DCW 다음에 오는 컨트롤 데이터로서 제공될 수 있다. 예를 들어, TCOB DCW의 CD 카운트가 0이 아닐 때, COB(222)는 TCA(180) 내의 TCOB DCW 바로 다음에 오고 CD 카운트는 4에 의해서 곱해진 COB 내의 CRC 오프셋들의 수를 명시한다. CD 카운트가 0일 때, COB(222)는 출력 데이터와 함께 전송되는 TCMI로서 명시되고, COB의 위치는 TCW(140) 내의 출력-데이터-주소 필드(144)에 의해서 명시된다.
COB(222) 내의 각 중간-CRC 오프셋은 트랜스포트-데이터 IU 내 데이터의 제1 바이트로부터 상대적인 오프셋(relative offset)을, 바이트로, 표시한다. 만일 COB(222)가 트랜스포트-데이터 IU에 제공된다면, 라이트 전송을 위한 데이터의 제1 바이트는 TCAX(220)이 제공되지 않는 경우 COB CRC 다음에 오는 제1 바이트이거나 혹은 TCAX가 제공되는 경우 TCAX CRC 다음에 오는 제1 바이트이다. 만일 COB가 DCW컨트롤 데이터로서 TCA(180)에 제공된다면, 라이트 전송을 위한 데이터의 제1 바이트는 TCAX(220)이 제공되지 않을 경우 트랜스포트-데이터 IU 내의 제1 바이트이거나 혹은 TCAX(220)이 제공될 경우 TCAX CRC 다음에 오는 제1 바이트이다. 트랜스포트-데이터 IU에 제공될 때, COB는 I/O 동작의 제1 라이트 트랜스포트-데이터 IU에 제공된다.
트랜스포트-명령 DCW의 또 다른 종류는 질의(interrogate) DCW이고, 이는 디바이스(116)에서 TCW I/O 동작의 상태를 결정하기 위해 사용된다. 질의 명령은 디바이스(116)에서 동작을 개시하지도 않고, 디바이스(116)의 상태에도 영향을 주지 않으며, 디바이스(116)과 관련된 전속상태들(allegiances) 및 관련 논리적 경로를 리세트 하지도 않는다. 예시적 질의 DCW는 질의 명령 코드(예를 들어, 40 hex의 값을 보유한다)를 포함한다. 명령 코드의 예외들이 있으면, SLI 플래그, 카운트 및 CD-카운트 필드들, DCW 내의 모든 다른 필드들은 0을 보유하며, 그렇지 않은 경우, 디바이스-검출된 프로그램-체크 조건을 보유한다. 만일 질의 DCW의 CD 카운트가 0보다 크면, 질의 데이터는 명시된다.
디바이스(116)에서 동작의 상태에 관한 정보를 획득하기 위해서 진행중인 TCW I/O 동작을 갖는 논리적 경로와 디바이스(116)에 관해 질의 동작이 수행된다. 한 실시 예에서, 질의 동작을 위한 TCCB(170)은 질의 디바이스 명령 코드(예를 들어, X'40)을 갖는 단일의 DCW를 포함한다. 질의 동작을 위한 TCAH(178)은 그 동작을 위한 리드 데이터 전송을 명시하기 위해 1로 세트된 R 비트를 보유할 수 있다. 질의 동작은 컨트롤 유닛(118)이 질의 명령을 명시하는 트랜스포트-명령 IU를 수용할 때 컨트롤 유닛(118)에서 인지된다. 질의 동작이 컨트롤 유닛(118)에서 인지되고 컨트롤 유닛(118)이 성공적으로 질의 명령을 수행할 수 있을 때, 컨트롤 유닛(118)은 트랜스포트-응답 IU 내에 상태를 제공할 수 있는데, 이는 논리적 경로의 상태를 기술하는 질의 확장된 상태(interrogate extended status)와 질의 트랜스포트-명령 IU에 의해서 명시되는 디바이스 주소를 포함한다.
도 15를 참조하면, 트랜스포트 모드 I/O 동작(300)을 수행하는 방법이 도시된다. 상기 방법은 하나 혹은 그 이상의 단계들(301-305)를 포함한다. 한 실시 예에서, 상기 방법은 기술된 순서로 단계들(301-305)를 실행하는 것을 포함한다. 그러나, 특정 단계들은 생략되거나, 단계들이 추가되거나, 혹은 단계들의 순서가 변경될 수 있다.
단계(301)에서, 호스트 컴퓨터(예를 들어, OS(110))은 하나의 명령(예를 들어, START SUBCHANNEL)을 실행하면, 이는, TCW(140)을 명시하는, 채널 서브시스템(114)에 ORB가 전송되도록 한다. 한 실시 예에서, TCCB(170)을 I/O 디바이스(116)에 트랜스포트할 것인지를 결정하기 위해서 상태(status)를 캡처하는 것 및 명시된 TCCB (170)을 트랜스포트 하는 것에 특정된(specific) TCW 필드들의 유효성과 관련된 프로그램-체크 조건들이 채널 서브시스템(114)에 의해서 체크 된다. 만일 그러한 프로그램-체크 조건이 존재하면, TCCB(170)은 트랜스포트 되지 않고 그 프로그램-체크 조건이 인지된다. 예를 들어, TCCB-주소 필드(148)는 그것이 이용 가능한 스토리지 위치를 지정하고 있는지 체크 된다. 만일 TCCB 플래그가 1이면, TCCB-주소 필드(148)는 또한 그것이 쿼드워드(quadword) 범위의 주소를 지정하는지 체크 된다. 추가의 프로그램 체크 조건들은 아래에서 더 상세히 기술된다.
단계(302)에서, 채널(128)이, 트랜스포트-명령-컨트롤 블록(TCCB)(170)과 같은, 컨트롤 블록과 TCW(140)을 위한 관련 컨트롤 정보를 포함하는 트랜스포트-명령 IU를 선택된 디바이스(116)에 전송할 때 TCW I/O 동작이 I/O 디바이스에 개시된다(예를 들어, 컨트롤 유닛(118)을 통해서). 한 실시 예에서, I/O 동작의 실행 및 디바이스 동작과 관련된 정보(예를 들어, 명령들, 입력 데이터 및 출력 데이터)는 채널(128)과 컨트롤 유닛(118) 사이에서 정보 유닛들(IU들)로서 전송된다. 한 실시 예에서, 상기 IU들은 SB-4 정보 유닛들(IU들)의 형식으로 되어 있다.
한 실시 예에서, IU들 혹은 다른 메시지들은 하나 혹은 그 이상의 교환들(exchanges)을 통해서 채널과 컨트롤 유닛 사이에 송신된다. 두 개의 일방향 교환들로 구성되는 교환 쌍은, 채널(128)에 의해서 IU들을 송신하기 위해 하나가 사용되고, 컨트롤 유닛(118)에 의해서 IU들을 송신하기 위해 다른 하나가 사용되며, 이 쌍은 모든 SB-4 링크-컨트롤 펑션들을 위해서 그리고 명령 모드에서 실행되는 모든 SB-4 디바이스-레벨 펑션들을 위해서 요구된다. 단일의 양방향 교환은, 트랜스포트 교환이라 하며, 트랜스포트 모드에서 실행되는 디바이스-레벨 펑션들을 위해 사용된다. SB-4 링크-컨트롤 펑션을 실행하는 동안 혹은 명령모드에서 SB-4 디바이스-레벨 펑션을 실행하는 동안 채널(128)이 송신하는 IU들은 한 교환에 한정되고(restricted), 그 동작 동안 채널이 수신하는 IU들은 다른 교환에 한정된다. 채널(128)이 IU들을 송신하는 교환은 아웃바운드 교환(outbound exchange)이라 하고, 채널(128)이 IU들을 수신하는 교환은 인바운드 교환(inbound exchange)이라 한다. 동일 링크-레벨 혹은 디바이스-레벨 펑션의 실행을 위해 아웃바운드 교환과 인바운드 교환이 모두 동시에 채널(128)과 컨트롤 유닛(118) 사이에 존재할 때, 교환 쌍이 존재한다고 하고, 컨트롤 유닛(118)이 채널(128)에 연결되었다고 한다. 단일 연결에서 실행되는 채널 프로그램은 오직 하나의 교환 쌍만을 사용한다. 만일 채널 프로그램 동안 교환들의 클로징(closing)에 의해서 상기 연결이 제거된다면, 그 채널 프로그램을 완료하기 위해 새로운 교환 쌍이 생성된다. 채널(128)은 새로운 교환을 오픈(open)하는 IU를 자발적 명령(unsolicited command) 혹은 자발적 컨트롤 정보 카테고리(category)로서 송신함으로써 교환 쌍을 개시할 수 있다. 컨트롤 유닛(118)은 개시(initiation) IU를 자발적 컨트롤 혹은 자발적 데이터 정보 카테고리로서 송신함으로써 교환 쌍을 개시할 수 있다.
트랜스포트 모드에서 수행되는 I/O 동작의 실행 동안 채널과 컨트롤 유닛이 송신하는, IU들은 트랜스포트 교환이라 하는 단일의, 양방향 교환으로 한정된다. 채널(128)은 트랜스포트-명령IU를 자발적 명령 카테고리(개시 IU)로서 송신함으로써 트랜스포트 교환을 오픈 할 수 있다. 채널(128)은 다수의 트랜스포트 교환들을 오픈할 수 있는데, 이들 각각은 다른 디바이스(116)을 위해서 혹은 다른 논리적 경로들 상의 동일 디바이스(116)을 위해서 그렇게 할 수 있다. 새로운 트랜스포트 교환이 논리적 경로 상의 특정 디바이스를 위해 오픈될 수 있는데, 질의 동작을 수행하기 위해서 그 디바이스와 논리적 경로를 위한 트랜스포트 교환이 이미 존재할 때 그렇게 될 수 있다; 만일 그렇지 않으면 그 논리적 경로 상의 디바이스를 위한 새로운 트랜스포트 교환을 개시하기 전에 채널(128)은 기존의 트랜스포트 교환 혹은 교환 쌍이 클로즈 되기를 기다린다.
단계(303)에서, 컨트롤 유닛(118)은 TCCB(170) 및 트랜스포트-명령 IU(172)를 수신하고(receive), 특정 조건들이 충족되면 TCCB(170)을 수용할 수 있다(accept). 트랜스포트-명령 IU(172)가 수용되었을 때, 컨트롤 유닛(118)에서 TCCB(170)의 실행이 완료되었다고 간주될 때까지 TCCB(170)은 컨트롤 유닛(118)에서 진행중(current)으로 간주된다. 만일 에러 조건 때문에 트랜스포트-명령 IU(172)가 수용되지 않는다면, 트랜스포트-응답 IU는 채널(128)로 복귀되고(returned) 초기 상태 플래그(an initial status flag)는 1로 세트되어 디바이스(116)에서 TCCB(170)의 실행을 개시하기 전에 에러가 발생하였음을 표시한다. 컨트롤 유닛(118)은 에러 정보를 트랜스포트-응답 IU(아래에서 설명함) 내의 상태 필드 및 I/O 확장된 상태 필드들에 제공할 수 있는데, 이는 트랜스포트-명령 IU 에러를 식별하기 위해서이다. 한 실시 예에서, 트랜스포트-명령 IU(172)가 컨트롤 유닛(118)에서 수용되도록 하기 위해서 아래에 설명하는 예시적 조건들이 만족되어야 한다.
1) 트랜스포트-명령 IU는 다음의 무결성 체크들(integrity checks)을 충족한다:
a) 양방향 동작들을 지원하지 않는 컨트롤 유닛들을 위해, TCH 내의 L1필드 플러스 8은 트랜스포트-명령 IU를 위해 컨트롤 유닛에 의해서 수신된 데이터의 양과 같은 데이터의 양을 명시해야 한다, 그렇지 않으면, 데이터 카운터 에러 때문에 트랜스포트-명령 IU 무결성 에러가 인지될 것이다;
b) 양방향 동작들을 지원하는 컨트롤 유닛들을 위해, TCH 내의 LI필드 플러스 8 혹은 9는 트랜스포트-명령 IU를 위해 컨트롤 유닛에 의해서 수신된 데이터의 양과 같은 데이터의 양을 명시해야 한다, 그렇지 않으면, 데이터 카운터 에러 때문에 트랜스포트-명령 IU 무결성 에러가 인지될 것이다; 그리고
c) TCCB에서 LRC 필드는 유효할 것이다, 그렇지 않으면 무효의 LRC 에러 때문에 트랜스포트-명령 IU 무결성 에러가 인지될 것이다
2) 명시된 논리적 경로가 설정될 것이다, 그렇지 않으면, 논리적-경로가-설정되지-않았다는 에러(a logical-path-not-established error)가 인지될 것이다;
3) 디바이스가 설치되고 준비될 것을 요구하는 명령들을 위해, 디바이스 주소가 설치되고 준비된 디바이스를 명시할 것이다, 그렇지 않으면, 주소-예외 조건이 인지될 것이다;
4) 만일 양방향 데이터 전송이 컨트롤 유닛에 의해서 지원되지 않거나 혹은 트랜스포트-명령 IU가 BRDL 필드를 보유하지 않는다면 R 및 W 비트들은 TCH 내에서 모두 1로 세트 되지는 않을 것이다; 그렇지 않으면 TCH 컨텐츠 에러가 인지될 것이다;
5) 트랜스포트-명령 IU 내의 TCCB는 아래의 모든 조건들을 충족할 것이다, 그렇지 않으면, TCCB 컨텐츠 에러가 인지될 것이다:
a) L2 필드는 L1 필드보다 큰 정확히 8 바이트인 길이를 명시하고 그리고 적어도 20 바이트이며 252 바이트는 넘지 않는 값을 보유할 것이다;
b) TCAH의 워드 0의 바이트 1은 0이 될 것이다;
c) TCAH 내의 포맷 컨트롤 필드는 hex'7F'와 같을 것이다;
d) TCAH 내의 서비스-액션 코드는 유효한 값을 보유할 것이다(8.13.4.4 참조)
e) 만일 R 및 W 비트들이 모두 0으로 세트 되었다면, 데이터-길이(DL) 필드는 0이 될 것이다; 그리고
6) 만일 다른 TCW I/O 동작이 트랜스포트-명령 IU에 명시된 논리적 경로 및 디바이스 주소를 위해 진행 중이면, 서비스-액션 코드는 hex'1FFF'를 명시하고 TCA의 제1 DCW 내의 명령 코드는 질의 명령 코드를 명시할 것이다, 그렇지 않으면 비-질의-제2-동작 에러(a non-interrogate-second-operation error)가 인지될 것이다.
한 실시 예에서, 채널(128)은 트랜스포트-명령 IU(172)가 송신될 때 연결이 존재하는 것으로 간주하고, 컨트롤 유닛(118)은 트랜스포트-명령 IU(172)가 수신될 때 연결이 존재하는 것으로 간주한다. 따라서, I/O 동작이 컨트롤 유닛(118)에 의해서 트랜스포트-응답 IU로 종료될 때까지 채널(128)은 컨트롤 유닛(118)이 TCCB(170)을 수신했는지에 관하여 혹은 디바이스(116)에서 I/O 동작의 진전에 관하여 알지 못한다. 한 실시 예에서, 채널(128)은 컨트롤 유닛으로부터 응답을 수신하기 위해 타임 윈도(a time window)를 세트 할 수 있고, 그렇게 해서 만일 채널이 그 윈도 내에 트랜스포트-응답 IU를 수신하지 않으면, 채널은 트랜스포트 명령 타임아웃(a transport command timeout)을 인지한다.
단계(304)에서, TCCB(170)을 수신했을 때, 컨트롤 유닛(118)은 TCA(180)을 처리하고 각각의 DCW(202)를 실행한다. DCW(202)가 트랜스포트 모드 프로그램의 제1 DCW(즉, TCCB 내의 제1 DCW)이고 실행을 위해 I/O 디바이스(116)에 의해서 선택되었을 때 혹은, 명령 체이닝 동안, 후속 DCW(202)가 I/O 동작의 컨트롤을 접수(take over)했을 때 DCW(202)는 진행중(current)이 된다. 실행될 제1 DCW는 TCCB(170) 내의 TCA(180)의 오프셋 0에 위치한다고 간주될 수 있다. 채널 프로그램 내 각각의 추가의 DCW는 TCA(180) 내에(혹은 TCAX(220) 내에) 위치하고 DCW가 I/O 디바이스(116)에 의해서 필요할 때 사용된다.
명령 체이닝은 DCW 내의 DCW 체인 명령(CC) 플래그에 의해서 컨트롤 된다. 이 플래그는 현재 DCW의 소진(exhaustion)에 따라 취해질 액션을 명시한다. 체이닝(chaining)은 TCA 내의 연속(successive) DCW들 사이에서 일어난다. TCAX가 명시되었을 때, 체이닝은 또한 TCA 내의 최종 DCW와 TCAX 내의 제1 DCW 사이에서, 그리고 TCAX 내의 연속 DCW들 사이에서 일어난다. 만일 현재 DCW가 명령 체이닝을 명시하고 동작 동안 비정상적 조건들이 검출되지 않았다면, 현재 DCW의 완료는 다음 DCW를 현재 DCW가 되게하고 디바이스에 의해 실행되게 한다. 만일 TCAX가 명시되고 다음 DCW의 오프셋이 TCA의 끝을 지나면, 체이닝은 TCAX의 제1 DCW에서 계속되고 TCAX 오프셋은 TCA 길이를 상기 계산된 오프셋에서 차감함으로써 결정된다. 따라서, 명령 체이닝은 TCA 오프셋들의 오름 순(ascending order)으로, 그리고 그 다음 TCAX가 명시되었을 때, TCAX 오프셋들의 오름 순으로 진행된다. 만일 어텐션(attention), 유닛 체크, 유닛 예외 혹은 부정확한 길이와 같은, 조건이 발생하였다면(DCW 내의 SLI 필드(214)가 활성화되지 않는 한), 동작들의 순서는 완료되고, 현재 동작과 관련된 상태는 인터럽션 조건이 생성되게 한다. 이 경우에 새로운 DCW는 실행되지 않는다.
I/O 동작을 통해서 전송되도록 요청된 데이터는 TCCB(170) 내 DCW들(202)의 처리 동안 하나 혹은 그 이상의 트랜스포트-데이터 IU들을 통해서 채널(128)과 컨트롤(118) 사이에 송신된다. 리드 동작은 오직 리드 데이터 전송만을 수행하고, 라이트 동작은 오직 라이트 데이터 전송만을 수행하며, 양방향 동작은 리드 및 라이트 데이터 전송 모두를 수행할 수 있다.
도 16을 참조하면, 라이트 혹은 양방향 동작을 위해서, 채널(128)은 하나 혹은 그 이상의 트랜스포트-데이터 IU들(310)을 컨트롤 유닛(118)로 송신하는데, 이는 그 동작을 위한 라이트 데이터(312)를 전송하기 위함이다. 리드 혹은 양방향 동작을 위해서, 컨트롤 유닛(118)은 적어도 하나의 트랜스포트-데이터 IU(314)를 채널(128)로 송신하는데, 이는 그 동작을 위해 명시된 리드 데이터(316)을 전송하기 위함이다. 패드 바이트들(318)은 CRC가 계산되는 데이터 영역의 최종 워드 내에 포함되고 커버될 데이터 영역이 데이터 워드들의 진정수(integral number)가 아닌 때 다음 워드 범위로 데이터 영역을 패드하기 위해 사용된다. 이것은 COB, 중간 및 최종 CRC에 의해서 커버될 데이터 영역들에 대해 적용한다. 패드 바이트를 위해 사용된 값은 모델에 따라 다르다.
최종 CRC 필드(320)은 트랜스포트-데이터 IU(310,314)가 TCW I/O 동작을 위해 채널(128) 혹은 컨트롤 유닛(118)에 의해서 송신된 최종 트랜스포트-데이터 IU일 때 그 트랜스포트-데이터 IU(310, 314) 내에 포함된다. 한 실시 예에서, 최종-CRC 필드(320)은 워드-정렬된(word-aligned) 32-비트 리던던시-체크 코드를 포함한다. 리드 혹은 라이트 동작들을 위해, TCCB(170) 내 DL 필드는 동작 동안 전송될 데이터의 양을 명시하는데, 이에는 모든 요구된 패드 및 CRC 바이트들이 포함될 수 있다. 양방향 동작들을 위해서, TCCB(170) 내 DL 필드는 그 동작의 라이트 데이터 전송 부분을 위해 전송될 데이터의 양을 명시하고 BRDL 필드는 그 동작의 리드 데이터 전송 부분을 위해 전송될 데이터의 양을 명시한다. 이 양은 모든 요구되는 패드 및 CRC 바이트들을 포함할 수 있다.
라이트 데이터 전송 동안, 데이터는 하나 혹은 그 이상의 트랜스포트-데이터 IU들(310)에서 TCW I/O 동작과 관련된 트랜스포트 교환 중의 컨트롤 유닛(118)로 전송된다. 한 실시 예에서, 동작의 제1 라이트 트랜스포트-데이터 IU(310)을 제외하고, 채널(128)은 각 트랜스포트-데이터 IU(310)을 송신하기 전에 컨트롤 유닛(118)로부터 전송-준비된 IU(a transfer-ready IU)를 요구한다. 컨트롤 유닛(118)은 라이트 동작을 위해 TCCB(170)의 DL 필드(186)에 의해서 명시된 모든 데이터를 요청하는 것이 완료될 때까지 추가의 전송-준비된 IU들을 송신함으로써 추가의 데이터를 요청할 수 있다. 라이트 동작을 위해, TCCB(170) 내의 DL 필드(186)에 의해서 명시된 데이터 전송의 완료 다음에 컨트롤 유닛(118)에 의해서 송신된 다음 IU는 트랜스포트-응답 IU이다. 양방향 동작을 위해, TCCB 내의 DL 필드(186)에 의해서 명시된 데이터 전송의 완료 다음에 컨트롤 유닛(118)에 의해서 송신된 다음 IU는 트랜스포트-데이터 IU 혹은 트랜스포트-응답 IU일 수 있다.
리드 데이터 전송 동안, 데이터는 하나 혹은 그 이상의 트랜스포트-데이터 IU들(310)에서 TCW I/O 동작과 관련된 트랜스포트 교환 중의 채널(128)로 전송된다. 각 트랜스포트-데이터 IU 내 송신된 데이터의 양은 컨트롤 유닛(118)에 의해서 결정되고 그리고 그 동작을 위해 모든 트랜스포트-데이터 IU들 내 전송된 데이터의 총량이 DL 필드(186) 내의 값을 혹은, 양방향 동작들을 위해, BRDL 필드(188) 내의 값을 초과하지 않는 한 어떠한 값으로든지 세트될 수 있다. 리드 동작들을 위해, 만일 컨트롤 유닛에 의해서 송신된 데이터의 양이 TCCB 내의 DL 필드보다 적다면, 트랜스포트-응답 IU에서 DL 나머지 카운트(DL residual count)는 CU에 의해서 송신된 데이터 양과 TCCB 내의 DL 필드 사이의 차(difference)가 될 것이다. 만일 트랜스포트-응답 IU에 컨트롤 유닛에 의해서 제공된 나머지 카운트가 DL과 채널에 의해서 실제로 수신된 바이트들의 수 사이의 차와 매치하지 않는다면 채널은 디바이스-레벨 프로토콜 에러를 인지한다. 양방향 동작들을 위해, 만일 컨트롤 유닛에 의해서 송신된 데이터의 양이 TCCB 내의 BRDL 필드보다 적다면, 트랜스포트-응답 IU 내의 BRDL-나머지 카운트는 CU에 의해서 송신된 데이터의 양과 TCCB 내의 BRDL 필드 사이의 차가 될 것이다. 만일 트랜스포트-응답 IU에 컨트롤 유닛에 의해서 제공된 나머지 카운트가 BRDL과 채널에 의해서 실제로 수신된 바이트들의 수 사이의 차와 매치하지 않는다면 채널은 디바이스-레벨 프로토콜 에러를 인지한다.
도 16에서 도시한 바와 같이, 하나 혹은 그 이상의 중간 CRC 워드들(320)은 채널(128)에 의해서 송신된 트랜스포트-데이터 IU 내에 존재할 수 있다. 중간 CRC 워드들(320)은 TCA(180)에 의해서 명시된 전체 데이터 영역의 전송 전에 데이터 영역들의 CRC 체킹을 제공한다. COB CRC 워드(322)는 COB(222)가 트랜스포트-데이터 IU(310)에 전송될 때 트랜스포트-데이터 IU(310) 내에 존재할 수 있다.
도 15를 다시 참조하면, 단계(305)에서, TCW I/O 동작은 채널(128) 혹은 컨트롤 유닛(118)에 의해서 종료된다. 채널(128)은 비정상적(abnormal) 조건의 결과로서 혹은 프로그램-개시된 종료로서 TCW I/O 동작의 종료를 개시할 수 있다. 컨트롤 유닛(118)은 동작 실행 완료의 결과로서 혹은 명령 실행 동안 검출된 비정상 조건의 결과로서 그 동작의 종료를 개시할 수 있다. 컨트롤 유닛(118)은 트랜스포트-응답 IU을 송신함으로써 혹은, 특정 에러들의 경우에, 그 교환을 폐기함으로써 TCW I/O 동작의 종료를 개시할 수 있다. 한 실시 예에서, 컨트롤 유닛(118)은 다음의 환경들 중 어느 것이라도 그러한 환경 하에서는 TCW I/O 동작의 종료를 개시할 수 있다: TCA(180)(그리고 명시되었다면 TCAX) 내의 모든 DCW들(202)가 실행되었을 것; DCW-부정확한 길이 퍼실리티가 지원되고 SLI 플래그(214)가 0으로 세트 되었을 때 부정확한-길이 조건이 DCW에 대해 검출 되었을 것; 유닛 체크 조건이 검출되었을 것; 트랜스포트 에러와 같은 비정상 조건이 있을 것; 혹은 교환을 폐기하도록 요구하는 다른 에러가 인지되었을 것.
도 17을 참조하면, 한 실시 예에서, START SUBCHANNEL의 실행에 의해서 개시된 I/O 동작 혹은 I/O 동작들의 시퀀스가 종료되었을 때, 채널 서브시스템과 디바이스는 상태 조건들을 생성한다. 이들 조건들의 생성은 I/O 인터럽션에 의해서 혹은 TEST PENDING INTERRUPTION 명령의 실행에 의해서 프로그램의 어텐션(the attention of the program)을 가져올 수 있다. 주소와 동작 시퀀스의 범위를 표시하는 카운트뿐만 아니라, 상태 조건들도 서브채널-상태 워드(SCSW)(400)의 형식으로 프로그램에 제출된다. SCSW(400)은 TEST SUBCHANNEL 명령의 실행 동안 인터럽션-응답 블록(IRB)(402)에 저장된다. 트랜스포트-모드 IRB가 저장될 때, 그 동작의 상태를 기술하는 추가의 정보도 또한 트랜스포트-상태 블록에 저장된다.
디바이스가 1차 인터럽션 상태를 알릴(signal) 때까지 I/O 동작은 정상적으로 수행된다. 1차 인터럽션 상태는 I/O 동작의 개시 동안 혹은 그 후에 알려질 수 있다(signaled). 채널 서브시스템이 장치의 오동작, 프로그램 체크, 체이닝 체크, 보호 체크, 혹은 부정확한-길이 조건을 검출하였을 때 클리어(clear) 혹은 홀트(halt) 펑션을 수행함으로써, 혹은 CLEAR SUBCHANNEL, HALT SUBCHANNEL, 또는 RESET CHANNEL PATH 명령들을, 각각, 수행한 결과로서 클리어(clear), 홀트(halt) 또는 채널-경로-리세트 펑션을 수행함으로써 I/O 동작은 종료될 수 있다. I/O 인터럽션들은 I/O 디바이스들 혹은 서브채널들에서 일어나는 조건들에 응답하여 CPU가 자신의 상태를 변경할 수 있는 수단을 제공한다. 이들 조건들은 프로그램에 의해서, 채널 서브시스템에 의해서, 혹은 디바이스에서의 외부 이벤트에 의해서 일어날 수 있다.
I/O 인터럽션들에 대한 요청들이 개시되도록 하는 조건들을 I/O-인터럽션 조건들이라 부른다. 채널 서브시스템에 의해서 인터럽션 조건이 인지되었을 때, 그것은 적절한 서브채널에 표시된다. 그러면 그 서브채널은 상태 펜딩(status pending)이라 한다. 상태 펜딩이 되는 서브채널은 채널 서브시스템이 I/O 인터럽션 요청을 생성하게 한다. I/O 인터럽션 요청은 그것이 구성 내의 CPU에 의해서 수용될 때까지 펜딩으로 남아 있다가, 채널 서브시스템에 의해서 철회되거나, 혹은 TEST PENDING INTERRUPTION, TEST SUBCHANNEL, 또는 CLEAR SUBCHANNEL 명령의 실행에 의해서 또는 서브시스템 리셋에 의해서 클리어 된다. CPU가 인터럽션 요청을 수용하고 관련 인터럽션 코드를 저장하면, 그 인터럽션 요청은 클리어된다. TEST PENDING INTERRUPTION의 실행에 의해서 펜딩 인터럽션이 클리어되면, TEST SUBCHANNEL 혹은 CLEAR SUBCHANNEL이 실행될 때 또는 서브채널이 리셋될 때 관련 인터럽션 조건이 클리어 될 때까지 서브채널은 상태 펜딩(status pending)으로 남는다.
TEST SUBCHANNEL의 실행에 의해서 I/O-인터럽션 조건은 정상적으로 클리어 된다. 만일 TEST SUBCHANNEL이 실행되어 I/O-인터럽션 요청을 갖고 있는 서브채널을 펜딩으로 지정하면, 서브채널에서 인터럽션 요청과 인터럽션 조건은 모두 클리어된다. 인터럽션 요청과 인터럽션 조건은 또한 CLEAR SUBCHANNEL 에 의해서도 클리어될 수 있다. I/O 디바이스에 의해서 생성되고 스타트 펑션(a start function)의 최종 I/O 동작의 결론(conclusion)을 따라 제출되는 디바이스-종료 상태 조건(device-end status condition)은, 서브채널이 현재 스타트 펜딩이고 상태가 디바이스 종료를 단독으로 혹은 컨트롤 유닛 종료를 동반하여 보유하는 경우, I/O-인터럽션 조건 혹은 I/O-인터럽션 요청을 생성함이 없이 채널 서브시스템에 의해 서브채널에서 리셋된다. 만약 다른 상태 비트들이 디바이스-종료 상태 비트를 동반한다면, 채널 서브시스템은 유예된 조건 코드 1이 표시된 채로 I/O-인터럽션 요청을 생성한다. 명령-개시 시퀀스 동안 채널 서브시스템에 의해서 검출된 비정상적인 조건 때문에 I/O 동작이 종료되면, 그 인터럽션 조건을 기술하는 상태가 서브채널에 제공되고(placed), 이는 그 서브채널이 상태 펜딩이 되게 한다. 만일 비정상적인 조건이 디바이스에 의해서 검출된다면, 관련된 SCSW의 디바이스-상태 필드는 그 조건을 식별한다. 명령 체이닝이 일어나면, 디바이스에 의한 상태의 생성은 인터럽션을 일으키지 않고, 그 상태는 프로그램에 이용 가능하지 않게 된다.
채널 서브시스템이 다음 인터럽션 조건들 중 어느 하나라도 검출하면, 그것은 디바이스와 반드시 통신할 필요 없이, 혹은 디바이스로부터 상태 바이트를 수신하지 않고서도 I/O 인터럽션을 위한 요청을 개시한다:
1) START SUBCHANNEL의 이전(previous) 실행에 의해서 서브채널에 보내진 ORB의 컨텐츠와 관련된 프로그래밍 에러;
2) 페치된 제1 CCW 내에서 서스펜드 플래그(suspend flag)가 1로 세트됨, 이는 START SUBCHANNEL 또는 RESUME SUBCHANNEL을 위한 CCW 채널 프로그램 실행을 개시하고, 명령-모드 ORB에 명시되지 않은 서스펜드된(suspended) 인터럽션을 억제함; 또는
3) 제1 CCW, TCW, TIDAW, TCCB 페치, 데이터 페치, IDAW, 혹은 MIDAW와 관련된 프로그래밍 에러.
서스펜드된 조건을 제외하고, 서브채널로부터의 이들 인터럽션 조건들은 다른 서브채널-상태 표시들에 의해서 동반될 수 있지만, 디바이스-상태 표시들은 모두 0들로 저장된다.
유닛 체크를 보유하는 상태가 디스에이블된 서브채널에 대하여 제출될 때 또는 디바이스가 어떠한 서브채널과도 관련되지 않을 때 채널 서브시스템은 클리어 신호를 디바이스에 발행한다. 그러나, 만일 제출된 상태가 유닛 체크를 보유하고 있지 않다면, 그 상태는 채널 서브시스템에 의해서 수용되고 서브채널을 상태 펜딩으로 되게 하지 않고 폐기된다.
서브채널-상태 워드(SCSW)(400)은 서브채널과 관련된 디바이스의 상태를 기술하는 표시들을 프로그램에 제공한다. 트랜스포트 모드 IRB(402)가 저장될 때, 동작 및 관련된 디바이스의 상태를 기술하는 추가의 정보도 또한 그 동작과 관련된 트랜스포트-상태 블록 내에 저장될 수 있다. 만일 홀트(halt), 리쥼(resume), 혹은 스타트 펑션의 수행이 일어났다면, SCSW는 그 동작이 종료된 조건들을 기술할 수 있다.
한 실시 예에서, TEST SUBCHANNEL 이 실행되고 지정된 서브채널이 동작 중일 때 SCSW는 저장된다. SCSW는 TEST SUBCHANNEL의 오퍼랜드로서 지정된 IRB의 워드 0-2에 저장된다. STORE SUBCHANNEL이 실행될 때, SCSW는 서브채널-정보 블록의 워드 7-9에 저장된다.
SCSW는, 유예된 조건 코드(Deferred Condition Code(CC))와 같은, 다양한 필드들을 포함한다. 유예된 조건 코드는, 만일 0이 아니면, 서브채널이 스타트 펜딩 혹은 서스펜드된(suspended) 동안 서브채널이 서브채널 및 디바이스 활성화가 되는 것을 배제하는 조건들이 일어났는지를 표시하기 위해 사용된다. 한 실시 예에서, 유예된 조건 코드 1이 세트 되고, 2차-상태 비트는 1이며, 그리고 1차-상태 비트가 0일 때, 현재 상태(the status present)는 명령-모드 채널 프로그램에 관련될 수 있고, 명령-모드 채널 프로그램이 START SUBCHANNEL 명령에 의해서 명시되며(혹은 RESUME SUBCHANNEL 명령에 의해서 암시되며), 이는 트랜스포트-모드 채널 프로그램을 명시한 가장 최근에 실행된 START SUBCHANNEL을 앞선다. 그러한 경우를 위해, 상태 수정자(status modifier)도 또한 디바이스-상태 필드에서 1이 될 수 있다.
서브채널-상태 필드는 SCSW(400) 내에 포함되고 채널 서브시스템에 의해서 서브채널-상태 조건들을 표시하기 위해 사용된다. 예를 들어, 서브채널-상태 필드는 SCSW의 워드 2의 비트 위치 8-15 내에 보유된다. 서브채널-상태 조건들은 채널 서브시스템에 의해서 SCSW 내에서 검출되고 표시된다. 장치 오작동에 의해 야기된 조건들을 제외하고, 오직 채널 서브시스템이 홀트 혹은 스타트 펑션의 수행에 개입되어 있는 동안 그러한 조건들이 일어날 수 있다. 서브채널-상태 필드는 서브채널이 1차, 2차, 중간, 혹은 경보(alert) 상태의 모든 조합으로 상태 펜딩일 때마다 의미가 있다. 서브채널이 상태 펜딩이고 유예된 조건 코드 3이 표시되었을 때, 서브채널-상태 필드의 컨텐츠는 의미가 없다.
한 예시적 서브채널 상태 조건은 부정확한 길이 조건이고, 이는 I/O 동작을 위해 할당된 스토리지 영역들 내에 보유된 바이트들의 수가 I/O 디바이스에 의해 요청된 혹은 제안된 바이트들의 수와 같지 않을 때 일어난다. FCX-부정확한-길이-표시 퍼실리티가 설치되지 않고 부정확한-길이 조건이 검출되었을 때, 트랜스포트-모드 채널 프로그램의 처리는 프로그램-체크 상태로 종료된다. FCX-부정확한-길이-표시 퍼실리티가 설치되고, 디바이스가 부정확한-길이 표시를 지원하며, 부정확한-길이-표시는 억제되지 않고, 부정확한-길이 조건이 검출되었을 때, 부정확한 길이는 다음 이유들 중 하나를 위해 표시된다:
1) 입력 상의 긴 블록(Long Block on Input): 리드 혹은 감지(sense) 동작 동안, 할당된 메인 스토리지 영역들이 채워진 후 디바이스가 하나 혹은 그 이상의 바이트들을 메인 스토리지에 전송하려 했거나, 혹은 디바이스가 카운트가 더 컸다면 (larger), 더 많은 데이터가 전송될 수 있었다고 표시하였다. 여분의 바이트들은 메인 스토리지에 저장되지 못했다. TSB 헤더(TSH) 내의 카운트는 0이다.
2) 출력 상의 긴 블록(Long Block on Output): 라이트 동작 동안, 디바이스는 할당된 메인 스토리지 영역들이 소진된 후 채널 서브시스템으로부터 하나 혹은 그 이상의 바이트들을 요청하였거나, 혹은 디바이스는 카운트가 더 컸다면 (larger), 더 많은 데이터가 전송될 수 있었다고 표시하였다. TSH 내의 카운트는 0이다.
3) 입력 상의 짧은 블록(Short Block on Input): 리드 혹은 감지 동작 동안 전송된 바이트들의 수는 그 동작에 할당된 메인-스토리지 영역들을 채우기에 불충분하다. TSH 내의 카운트는 0이 아니다.
4) 출력 상의 짧은 블록(Short Block on Output): 할당된 메인-스토리지 영역들 내에 보유된 모든 정보가 디바이스에 전송되기 전에 디바이스가 라이트를 종료했다. TSH 내의 카운트는 0이 아니다.
현재 DCW가 1로 세트된 SLI 플래그를 가질 때 부정확한-길이 표시는 억제된다. TSH의 카운트 필드가 의미 있는 것이 아닐 때 부정확한-길이 표시는 의미 있는 것이 아니다. 부정확한-길이 조건의 존재는 DCW 내의 SLI플래그가 1이 되지 않는 한 명령 체이닝을 억제한다.
서브채널-확장된-상태 필드가 SCSW(400)내에(예를 들어, SCSW의 워드 2의 비트 위치 24-31 내에) 포함된다. 서브채널-상태 내에 표시되었을 때, 이 필드는 아래의 모든 조건들을 위한 이유에 더 정당성을 부여(further qualify)하기 위해 사용되는 정보를 보유할 수 있다: 인터페이스-컨트롤 체크, 채널-컨트롤 체크, 채널-데이터 체크, 프로그램 체크, 및 보호 체크. 만일 이들 비트들 중 어느 것도 서브채널-상태 바이트 내에서 활성(active)이 아니면, 서브채널-확장된-상태의 필드들은 의미 있는 정보를 보유하지 않는다. 하나 이상의 조건이 표시되었을 때, 인터페이스-컨트롤 체크는 다른 조건들보다 우선한다.
서브채널-확장된-상태 필드는 또한 질의 실패한(F) 동작 비트(예를 들어 비트 24에)를 포함할 수 있다. 1로 세트 되었을 때, F 비트는 질의 동작이 프로그램 체크, 채널-컨트롤 체크 혹은 인터페이스-컨트롤 체크 때문에 실패하였음을 표시한다.
서브채널-확장된-상태 필드는 또한 서브채널-확장된-상태-한정자(a Subchannel-Extended-Status Qualifier)(SESQ)(예를 들어 비트 25-31)를 포함할 수 있다. 서브채널-상태 필드가 프로그램 체크, 인터페이스-컨트롤 체크, 실패한 채널-서브시스템 재시도, 보호 체크, 데이터 체크, 혹은 채널-컨트롤 체크를 표시할 때, 이 필드는 추가의 정보를 보유할 수 있다. 예시적 SESQ 값들 및 그들의 관련된 의미들이 도 18a-(18b+18c+18d)에 도시되어 있다.
도 19-20은 컨트롤 유닛(118)에 의해서 송신될 수 있는 예시적 트랜스포트 응답 IU(330)을 도시한다. 트랜스포트 응답 IU(330)은 TCW I/O 동작을 위한 상태를 제공하는데, 이는 정상 종료 상태(normal ending status)를 포함하거나 또는, 비정상 조건(abnormal condition)이 검출되었을 때, 그 동작의 비정상 종료에 대한 원인을 표시하는 종료 상태(termination status)를 포함할 수 있다. 트랜스포트 응답 IU(330)은 또한 확장된 상태 필드를 포함할 수 있는데, 이는 동작을 위한 상태를 더 제공한다. 트랜스포트 응답 IU는 트랜스포트 교환을 클로즈(close) 할 수도 하지 않을 수도 있다. 한 실시 예에서, 트랜스포트 응답 IU에 의해서 트랜스포트 교환이 클로즈 되었는지 아닌지는 FC-FS-3 헤더 내에 표시된다. 만일 트랜스포트 교환이 트랜스포트 응답 IU에 의해서 클로즈 되지 않았다면, 채널은 트랜스포트-확인 IU를 송신할 수 있는데, 이는 트랜스포트 응답 IU를 수신한 후 트랜스포트 교환을 클로즈 한다.
한 실시 예에서, 트랜스포트-응답 IU(330)은 SB-4 헤더(332)와 그 다음에 오는 상태 필드(334), 상태 LRC(344), 및, 예를 들어 32-64 바이트들로부터 보유하는 선택적 확장된-상태 필드(346)을 포함한다. 확장된 상태(extended status: ES)가 제공되면, 4-바이트 확장된-상태 LRC 필드(340)이 트랜스포트-응답 IU(330)의 최종 워드로서 제공될 수 있다. 만일 확장된-상태 바이트들이 워드 범위에 있지 않으면 패드 바이트들이 다음 워드 범위로 반올림(round)하기 위해 확장된-상태에 추가된다. SB-4 헤더(332)는 트랜스포트 명령 IU의 포맷과 유사한 포맷을 가지고 있고 이 교환을 위해 트랜스포트 명령 IU 내 SB-4 헤더와 같게 세트 된다.
도 20을 참조하면, 상태 영역(334)의 한 실시 예는, 예를 들어 20 바이트이고 TCW I/O 동작에 관한 정보를 보유한다. "상태 플래그들 1" 필드(336)은 하나 혹은 그 이상의 예외 코드들을 포함하고, 이들은 TCW I/O 동작 동안 검출된 비정상 조건을 보고하기 위해 컨트롤 유닛(118)에 의해서 세트된다. 예시적 코드들은 다음을 포함한다:
0 - 주소-예외 조건으로 인한 디바이스-레벨 예외(device-level exception);
2 - 논리적-경로가-설정되지-않은 조건으로 인한 링크-레벨 거절(link-level reject);
3 - 리세팅 이벤트 통지(resetting event notification) - 리세팅 이벤트는 논리적 경로 및 트랜스포트-명령 IU와 관련된 디바이스 상에서 발생한다. 이 코드가 트랜스포트-응답 IU 내에서 세트될 때, 컨트롤 유닛은 그 상태를 위한 상태 확인(status confirmation)을 요청한다. 만일 상태 확인이 수신되면, 리세팅 이벤트 조건은 그 논리적 경로를 위해 디바이스에서 리셋되고; 그렇지 않으면, 리세팅-이벤트 조건은 펜딩으로 남는다;
4 - 디바이스-검출된 프로그램 체크/IFCC - 컨트롤 유닛은 보고될 프로그램 체크 혹은 IFCC를 초래할 수 있는 조건을 검출한다. 이 카테고리에 해당하는 에러들은 오염된 상태(a corrupted state)(예를 들어, TCCB 무결성 에러)에 도달한 트랜스포트-명령 IU, 라이트 데이터를 위해 검출된 무효의 CRC, 및 질의 동작이 아닌 논리적 경로와 디바이스 주소를 위한 제2 I/O 동작의 수신을 표시하는 에러들을 포함한다.
5 - 디바이스-검출된 프로그램 체크 - 컨트롤 유닛은 TCH의 컨텐츠 내의 에러를 검출한다.
한 실시 예에서, 상태 플래그들 1(336)은 부정확한 길이(IL) 플래그(338)을 포함한다. DCW-부정확한-길이 퍼실리티가 채널 및 컨트롤 유닛에 의해서 지원될 때, 비트 0은 IL 플래그이고 그리고, 1로 세트될 때, TCW I/O 동작이 DCW 오프셋에 의해서 표시된 DCW를 위한 부정확한-길이 조건 때문에 종료되었음을 표시한다. 만일 DCW 데이터 카운트가 라이트 DCW를 위해 디바이스에 의해서 요구된 데이터의 양과 매치하지 않는다면 혹은 만일 DCW 데이터 카운트가 리드 DCW를 위해 디바이스에서 이용 가능한 데이터의 양과 매치하지 않는다면 부정확한 길이가 컨트롤 유닛(118)에 의해서 검출된다.
한 실시 예에서, 만일 DCW(202)가 SLI 플래그(214)를 포함한다면, SLI 플래그(214)가 0이고 디바이스 상태가 유닛-체크 상태 없이 채널-종료 상태를 포함할 때만 IL 플래그(338)은 1로 세트 된다. IL 플래그(338)이 트랜스포트-응답 IU 내에서 1로 세트될 때, DCW 오프셋은 부정확한-길이 조건을 보유하는 DCW를 식별하고 DCW 나머지 카운트는, 만일 있다면, 부정확한-길이 DCW를 위해 전송된 데이터 전송의 양을 표시한다. TCA 내 부정확한-길이 DCW를 앞서는 DCW들을 위한 데이터 전송은, 만일 있다면, 아래에서 기술한 대로 수행되었을 것이다.
부정확한-길이 조건을 보유하는 DCW가 리드 DCW일 때, 채널에 송신된 최종 트랜스포트-데이터 IU는 TCW I/O 동작 동안 채널에 전송된 모든 리드 데이터를 위한 CRC를 포함한다. 만일 라이트 DCW들이 TCA 내의 부정확한-길이 리드 DCW를 앞섰다면(preceded), 그 라이트 DCW들을 위한 데이터는 컨트롤 유닛에 의해서 수신되었을 것이고 CRC 체킹이 그 데이터에 관해 수행되었을 것이다. 부정확한-길이 리드 DCW 다음에 오는 TCA 내의 라이트 DCW들을 위한 데이터는 라이트 데이터를 위한 CRC를 획득하고 CRC 체킹을 수행하기 위해 필요하다면 컨트롤 유닛에 전송될 것이다.
부정확한-길이 퍼실리티가 채널 및 컨트롤 유닛에 의해서 지원되는지에 상관없이 부정확한-길이 조건은 질의 명령, 전송-CRC-오프셋 명령 혹은 TTE 명령에 의해서 인지되지 않는다.
트랜스포트 응답 IU(330)도 또한 데이터 길이 나머지 카운트(DLRC) 필드(a Data Length Residual Count (DLRC) field)(340)을 포함할 수 있다. 라이트 및 양방향 동작들을 위해, DL-나머지 카운트(DL-residual count)는 32-비트의, 부호 없는 2진 정수이며, 이는 트랜스포트-명령 IU 내의 DL 필드와 채널로부터 실제로 수신된 바이트들의 수 사이의 차(difference)를 명시한다. 리드 동작들을 위해, DL-나머지 카운트는 32-비트의, 부호 없는 2진 정수이며, 이는 트랜스포트-명령 IU 내의 DL 필드와 채널에 실제로 송신된 바이트들의 수 사이의 차를 명시한다.
양방향 동작들을 위해, BRDL 나머지 카운트 필드(a BRDL residual count field)(342)도 또한 트랜스포트-응답 IU(330)에 포함될 수 있다. 양방향 동작들을 위해, BRDL 나머지 카운트는 32-비트의, 부호 없는 2진 정수이며, 이는 트랜스포트-명령 IU 내의 BRDL 필드와 채널에 실제로 송신된 바이트들의 수 사이의 차를 명시한다.
상태 플래그들 3 필드(Status Flags 3 field)(344)는 관련된 트랜스포트-모드 동작에 관한 추가의 정보를 제공하기 위해 컨트롤 유닛(118)에 의해서 사용될 수 있다. 이 필드는, 가능한 감지 데이터(possible sense data)를 포함하는, 확장된 상태가 트랜스포트-응답 IU에 송신되었음을 표시하기 위해서 확장된 상태 송신된(ESS) 비트(an Extended Status Sent (ESS) bit)를 포함할 수 있다. 확장된 상태는 확장된 상태(ES) 플래그들(extended status (ES) Flags)을 포함하는데, 이는 ES 타입 코드 필드(an ES Type Code field)같은 필드들을 포함한다. 타입 코드들은 I/O 상태(확장된-상태 영역은 트랜스포트-모드 I/O 동작을 위한 유효한 종료 상태(valid ending status)를 보유한다), I/O 예외(확장된-상태 영역은 예외 조건으로 인한 트랜스포트-모드 I/O 동작의 종료에 관한 정보를 보유한다), 및 질의 상태(확장된-상태 영역은 질의 동작을 위한 상태를 보유한다)를 포함한다.
ES 플래그들 내의 ES-타입 코드가 I/O 예외 일 때, 그 ES는 이유 코드들(reason codes: RC)을 포함한다. 예시적 이유 코드들은 다음을 포함한다:
1 - TCCB 무결성 에러: 컨트롤 유닛은 TCCB가 오염된 상태로 도달했음을 결정했다(단 예외 코드4가 상태 플래그들 1 필드 내에 표시되었을 때 제공된다);
2 - 무효의 CRC 검출됨: 무효의 CRC가 수신된 데이터 상에서 검출되었다(단 예외 코드 4가 상태 플래그들 1 필드 내에 표시되었을 때 제공된다);
3 - 부정확한 TCCB 길이 명시(specification) (단 예외 코드 5가 상태 플래그들 1 필드 내에 표시되었을 때 제공된다);
4 - TCAH 명시 에러(TCAH specification error)(단 예외 코드 5가 상태 플래그들 1 필드 내에 표시되었을 때 제공된다);
5 - DCW 명시 에러: 확장된 상태 내의 DCW-오프셋에 의해서 지정된 DCW에 에러가 존재한다(단 예외 코드 5가 상태 플래그들 1 필드 내에 표시되었을 때 제공된다);
6 - 전송-방향 명시 에러: 확장된 상태 내의 DCW-오프셋 필드에 의해서 지정된 DCW에 의해서 명시된 명령은 TCH 내에 명시된 전송 방향과 일치하지 않는 데이터 전송의 방향을 명시하거나 혹은 R 및 W 비트들이 모두 TCH 내에 1로 세트되고 양방향 데이터 전송은 컨트롤 유닛에 의해서 지원되지 않는다(단 예외 코드 5가 상태 플래그들 1 필드 내에 표시되었을 때 제공된다);
7 - 트랜스포트-카운트 명시 에러(예외 코드 5가 상태 플래그들 1 필드 내에 표시되었을 때 제공된다);
8 - 두 개의 I/O 동작들이 활성임(active): I/O 동작이 디바이스에서 활성인 동안 제2 비-질의 TCCB는 실행을 위해 디바이스에 트랜스포트 되었다. RCQ 필드는 의미를 갖지 않는다. 이 이유 코드는 예외 코드 4가 상태 플래그들 1 필드 내에 표시되었을 때 제공된다; 그리고
9 - CRC-오프셋 블록 내의 하나 혹은 그 이상의 엔트리들은 중간 CRC가 디바이스 및/또는 실행될 명령을 위해 적절한 위치에 존재하지 않음을 표시한다 단 예외 코드 4가 상태 플래그들 1 필드 내에 표시되었을 때 제공된다
확장된 상태는 또한 이유 코드 한정자(a Reason Code Qualifier: RCQ)를 제공할 수 있는데, 이는 I/O 예외를 위한 이유(들)에 관한 추가의 정보를 제공한다. 다른 이유 코드 한정자 타입들이 TCCB 무결성 에러들, 출력 데이터 CRC 에러들, 부정확한 TCCB 길이 명시들, TCAH 명시 에러들 및 DCW 명시 에러들과 같은 여러 타입들의 에러들을 위해 사용될 수 있다. TCCB 무결성 에러를 위한 예시적 RCQ들은 다음을 포함한다:
0 - 추가의 정보가 없음;
1 - 데이터 카운트 에러 - 트랜스포트 명령 IU를 위해 전송된 데이터의 양은 양방향 동작들을 지원하지 않는 컨트롤 유닛들을 위한 TCH 내의 L1 필드 플러스 8에 의해서 명시된 데이터의 양과 같지(equivalent) 않거나 혹은 양방향 동작들을 지원하는 컨트롤 유닛들을 위한 TCH 내의 L1 필드 플러스 8 혹은 9에 의해서 명시된 데이터의 양과 같지 않다; 그리고
2 LRC 에러 - 트랜스포트-명령 IU 상의 LRC는 무효이다.
DCW 명시 에러를 위한 예시적 RCQ들은 다음을 포함한다:
1 - 유보된(Reserved)-필드 명시 에러: 0들을 보유하도록 요구된 DCW 내의 유보된 필드가 0이 아닌 값을 보유한다;
2 - 플래그들-필드 명령-체이닝 명시 에러: 명령-체이닝 비트는 1이고 다음 DCW의 오프셋은 다음 DCW의 전부 혹은 일부가 TCA의 끝을 넘어 확장하거나, 또는 명령-체이닝 비트가 0이고 3 이상의 사용되지 않은 바이트들은 TCA 내에 남아있도록 한다.
3 - 컨트롤-데이터 카운트 명시 에러: CD 카운트는 TCA의 끝을 넘는 컨트롤 데이터를 명시한다.
4 - TCOB DCW 위치 에러: 제1 TCOB DCW는 TCA 내의 제1 DCW가 아니다;
5 - TCOB DCW 중복(duplication) 에러: 하나 이상의 TCOB DCW가 TCA 내에 명시된다;
6 - TCOB DCW 다수-카운트(multiple-count) 명시 에러: CD 카운트 및 DCW 카운트는 모두 0이거나 혹은 0이 아니다;
7 - TCOB DCW 방향 에러: TCOB DCW는 TCA 내에 명시되고 TCH 내의 W 비트는 0이다;
8 - TCOB DCW 체이닝 에러: TCOB DCW 내의 체인-명령 비트는 0이다, 즉 TCOB DCW는 TCA 내의 유일한 DCW이다;
9 - TCOB 카운트-명시 에러: TCOB DCW는 0이 아닌 CD 카운트 혹은 4의 배수가 아닌 데이터 카운트를 갖는다;
10 - TTE DCW 위치 에러: TCOB DCW는 명시되지 않았고 TCA에서 제1 DCW가 아닌 TTE DCW를 만났거나 또는 TCOB DCW는 명시되었고 만났던 제1 TTE DCW는 TCA 내의 제2 DCW가 아니었다;
11 - TTE DCW 중복 에러: 하나 이상의 TTE DCW를 TCA에서 만났다;
12 - TTE DCW CD-카운트 명시 에러: TTE DCW 내의 컨트롤-데이터 카운트는 0이 아닌 값을 명시한다;
13 - TTE DCW 데이터-카운트 명시 에러: TTE DCW 내의 데이터 카운트는 8보다 적은 값 또는 4의 배수가 아닌 값을 명시한다;
14 - TTE DCW 방향 에러: TTE DCW는 명시되고 TCH 내의 W 비트는 0이다;
15 - TTE DCW 체이닝 에러: TTE DCW 내의 체인-명령 비트는 0이다; 그리고
16 - TCAX 명시 에러: TTE DCW 명시되고 다음 중 어느 것은 참(true)이다:
TCA의 길이는 58 워드 혹은 그 이하이거나, 또는
TCA의 길이는 59 워드이고, TCA 내의 최종 DCW는 컨트롤 데이터를 명시하며, 그리고 컨트롤 데이터의 길이는 59 워드를 넘어서 확장하거나, 또는
TCA의 길이는 60 워드의 최대 길이이고 TCA 내의 최종 워드는 DCW의 제1 워드를 보유한다.
전송-방향 명시 에러를 위한 예시적 RCQ들은 다음을 포함한다:
1 - 리드-방향 명시 에러: DCW는 입력 동작을 명시하고 TCH 내의 R 비트는 0이다;
2 - 라이트-방향 명시 에러: DCW는 출력 동작을 명시하고 TCH 내의 W 비트는 0이다. 주목할 것은 - DCW의 명시는 TCOB 혹은 TTE DCW가 명시되고 TCH 내의 W 비트가 0일 때 인지된다;
3 - 리드-라이트 충돌(conflict): TCH 내의 R 및 W 비트들 모두 1이고 컨트롤 유닛은 양방향 동작들을 지원하지 않는다 또는 컨트롤 유닛은 양방향을 지원하지만 트랜스포트-명령 IU는 BRDL 필드를 보유하지 않는다 또는 R 및 W 비트들 모두가 1이 아니고 트랜스포트-명령 IU는 BRDL 필드를 보유한다;
트랜스포트-카운트 명시 에러를 위한 예시적 RCQ들은 다음을 포함한다:
1 - 리드-카운트 명시 에러: 리드 동작들을 위해, TCCB 내의 DL 필드는 TCA 내의 DCW들 플러스 패드 바이트들 및 CRC에 의해서 명시된 데이터 바이트들의 총 카운트와 같지 않은 값을 명시한다; 양방향 동작들을 위해, TCCB 내의BRDL 필드는 TCA 내의 리드 DCW들 플러스 패드 바이트들 및 CRC에 의해서 명시된 데이터 바이트들의 총 카운트와 같지 않은 값을 명시한다;
2 - 라이트-카운트 명시 에러: TCCB 내의 DL 필드는 TCA 내의 라이트 DCW들 플러스 중간 패드 바이트들, 중간 CRC, 최종 패드 바이트들 및 최종 CRC 바이트들에 의해서 명시된 데이터 바이트들의 총 카운트와 같지 않은 값을 명시하고; 만일 COB가 라이트 데이터 전송의 제1 트랜스포트-데이터 IU 내에 포함된다면, 카운트는 COB, 모든 COB 패드 바이트들 및 COB CRC 바이트들을 포함한다. 만일 TTE DCW가 TCA 내에 존재하면, 카운트는 또한 TCAX 및 TCAX CRC 바이트들을 포함한다.
프로그램 체크는 채널 서브시스템에 의해서 프로그래밍 에러들이 검출될 때 일어난다. 트랜스포트 모드 동작을 위해, 프로그래밍 에러들도 또한 I/O 디바이스(116)에 의해서 검출될 수 있고 프로그램 체크들로서 보고된다. 프로그램 체크 조건은 다음 이유들 중 어느 것 때문일 수 있다:
무효의 TCW 명시(Invalid TCW Specification): 다음 조건들 중 어느 것이 검출될 때, 무효의 TCW 명시가 인지된다:
1. TCW 내에서 0들을 위해 체크되는 유보된 필드는 0들을 보유하지 않는다.
2. 0이 아닌 값이 TCW 포맷 필드 내에 명시된다.
3. TCW 내의 리드 및 라이트 비트들은 모두 1이고, TCW 플래그들 필드의 비트 10은 0이며, FCX-양방향-데이터-전송 퍼실리티는 설치되지 않았거나 혹은 명시된 디바이스는 양방향 데이터 전송들을 지원하지 않는다.
4. TCW 플래그들 필드의 비트 10은 0이고 TCW 내의 TCCB-길이 필드는 12보다 적거나 혹은 244보다 큰 길이를 명시한다.
5. TCW 플래그들 필드의 비트 10은 1이고 TCW 의 라이트 동작들(W) 비트는 0이며, TCW의 리드 동작들(R) 비트는 0이거나 혹은 둘 모두 0이다.
6. TCW 플래그들 필드의 비트 10은 1이고 지정된 서브채널은 트랜스포트 파이버-채널-서비스 요청들에 대해 구성되었던 컨트롤 유닛과 관련이 없다.
TTE DCW가 사용될 때, 디바이스-검출된 프로그램 체크는 다음 조건들 중 어느 하나가 존재할 때 인지된다:
1. TCOB DCW가 명시되지 않았을 때, TTE DCW는 TCA에서 제1 DCW가 아니다. TCOB DCW가 명시되었을 때, TTE DCW는 TCA에서 제2 DCW가 아니다.
2. TTE DCW가 명시되었고 라이트 동작은 명시되지 않았다(즉, TCW 내의 W 비트는 0이다).
3. TTE DCW 내의 체인-명령 플래그는 0이다.
4. 1 이상의 TTE DCW가 명시된다.
5. TTE DCW 내의 컨트롤-데이터-카운트 필드는 0을 보유하지 않는다.
6. 카운트 필드는 8 이하 혹은 4의 배수가 아닌 값을 보유한다.
7. 아래의 것은 어느 것이든지 TCA를 위해 참(true)이다:
TCA는 트랜스포트-명령 DCW가 아닌 DCW는 적어도 하나조차 보유하지 않는다.
TCA는 트랜스포트-명령 DCW들이 아닌 하나 혹은 그 이상의 DCW들을 보유하고 TCA의 최종 DCW 내의 체인-명령 플래그는 0이다.
TTE DCW가 사용되고 추가의 TCMI 및/또는 출력 데이터가 TCAX 다음에 올 때, 다음은 참이 되어야 한다; 그렇지 않으면, 디바이스-검출된 프로그램 체크가 인지될 수 있다:
TCW 내의 출력-TIDA 플래그(플래그들 비트 7)는 1이어야 한다; 또는
TIDW들이 TCAX의 전송을 위해서 그리고 데이터의 전송을 위해서 사용되었을 때, 삽입-CBC컨트롤은 TCAX를 전송하기 위해 사용된 최종의 혹은 유일한 TIDAW 내에서 1로 세트 되어야 한다. TIDW들이 유일한 TCAX의 전송을 위해서 사용되었을 때, 삽입-CBC컨트롤이 최종의 혹은 유일한 TIDAW 내에서 반드시 세트될 필요는 없다.
TCA의 처리 동안, 다음 조건들 중 어느 하나가 검출되었을 때 TCCB 컨텐츠 에러가 인지될 수 있다:
1. 만난 제1 TCOB DCW는 TCA 내의 제1 DCW가 아니다;
2. 제2 TCOB DCW가 TCA에 나타난다.
3. TCAH 내의 W 비트가 0일 때 TCOB DCW가 TCA에 나타난다.
4. TCOB DCW는 체이닝 플래그 세트를 갖지 않는다;
5. CD 카운트와 데이터 카운트가 모두 0이면 TCOB DCW가 나타난다;
6. CD 카운트와 데이터 카운트가 모두 0이 아니면 TCOB DCW가 나타난다;
7. CD카운트가 0이고 데이터 카운트가 4의 배수가 아니면 TCOB DCW가 나타난다;
8. 데이터 카운트가 0이고 CD 카운트가 4의 배수가 아니면 TCOB DCW가 나타난다;
9. TCOB DCW는 명시되지 않았고 TTE DCW는 TCA에서 제1 DCW가 아니다 또는 TCOB DCW는 명시되었고 TTE DCW는 TCA에서 제2 DCW가 아니다;
10. TCAH 내의 W 비트가 0일 때 TTE DCW는 TCA에서 나타난다;
11. TTE DCW는 체이닝 플래그 세트를 갖고 있지 않다;
12. 제2 TTE DCW는 TCA에서 나타난다;
13. TTE DCW는 CD 카운트가 0이 아닐 때 나타난다;
14. TTE DCW는 데이터 카운트가 0이거나 혹은 4의 배수가 아닌 때 나타난다;
15. TTE DCW가 명시되면 다음 중 어느 것도 참이다: TCA의 길이는 58 워드 혹은 그보다 적다; TCA의 길이는 59 워드이고, TCA 내의 최종 DCW는 컨트롤 데이터를 명시하며 그리고 컨트롤 데이터의 길이는 59 워드를 초과하여 확장된다; 또는 TCA의 길이는 최대 길이가 60 워드이고 그리고 TCA 내의 최종 워드는 DCW의 제1 워드를 보유한다;
16. DCW는 컨트롤 데이터를 요구하는 명령을 보유하고 CD 카운트 필드는 0이거나 혹은 TCA의 끝을 넘는 데이터를 명시하는 값을 보유한다;
17. DCW는 0이 아닌 CD카운트 필드를 보유하고 명령은 컨트롤 데이터가 제공되지 않도록 한다;
18. 라이트 동작 동안, 디바이스는 리드 데이터 전송을 수행하도록 시도한 TCA 내의 명령을 만났다;
19. 리드 동작 동안, 디바이스는 라이트 데이터 전송을 수행하도록 시도한 TCA 내의 명령을 만났다;
20. CC 비트는 DCW에서 0이고 3개 이상의 사용되지 않은 바이트들이 TCA에 남는다;
21. CC 비트는 DCW에서 1이고 다음 DCW 위치는 TCA 표시의 끝으로부터 8 바이트보다 적게 되도록 결정되며 그리고 TCAX는 제공되지 않았다. 또는 TCAX는 제공 되었고; 다음 DCW 위치는 TCAX의 끝으로부터 8 바이트보다 적게 되도록 결정된다;
22. 리드 혹은 양방향 동작을 위해, TCA 내의 리드 DCW가 진행중(current)일 때, 모든 이전의 리드 DCW들 및 현재의 DCW 플러스 모든 패드와 CRC 바이트들을 위한 데이터 카운트들의 합계는 TCCB 내의 DL 필드를 초과하거나 혹은, 양방향 동작들을 위해, TCCB 내의 BRDL 필드를 초과한다;
23. 리드 혹은 양방향 동작을 위해, TCA 내의 최종 DCW가 진행중(current)일 때, 모든 리드 DCW들 플러스 모든 패드와 CRC 바이트들을 위한 데이터 카운트들의 합계는 TCCB 내의 DL 필드와 같지 않거나 혹은, 양방향 동작들을 위해, TCCB 내의 BRDL 필드와 같지 않다;
24. 라이트 혹은 양방향 동작을 위해, TCA 내의 DCW가 진행중(current)일 때, 모든 라이트 DCW들 플러스 모든 패드와 CRC 바이트들(모든 중간 패드와 CRC 바이트들을 포함), 그리고 만일 COB가 트랜스포트-데이터 IU에 포함된다면, COB, COB패드 및 COB CRC 바이트들, 그리고 만일 TCAX가 존재한다면, TCAX, TCAX 패드 및 TCAX CRC 바이트들을 위한 데이터 카운트들의 합계는 TCCB 내의 DL 필드를 초과한다; 또는
25. 라이트 혹은 양방향 동작을 위해, TCA 내의 DCW가 진행중(current)일 때, 모든 라이트 DCW들 플러스 모든 패드와 CRC 바이트들(모든 중간 패드와 CRC 바이트들을 포함), 그리고 만일 COB가 트랜스포트-데이터 IU에 포함된다면, COB, COB패드 및 COB CRC 바이트들, 그리고 만일 TCAX가 존재한다면, TCAX, TCAX 패드 및 TCAX CRC 바이트들을 위한 데이터 카운트들의 합계는 TCCB 내의 DL 필드와 같지 않다.
한 실시 예에서, 명령 모드 혹은 트랜스포트 모드 동작을 수행하기 전에, 채널 서브시스템(114)와 컨트롤 유닛들(118) 및/또는 디바이스들(116) 사이에 링크들이 설정된다. 하나 혹은 그 이상의 컨트롤 유닛들과 물리적 연결을 갖는 I/O 시스템 내의 각 채널(128)은 고유의 식별자를 갖는 "N 포트"(a "N Port ID")라 할 수 있다. 마찬가지로, 각각의 컨트롤 유닛(118)도 또한 관련된 N 포트 ID를 갖는 N 포트라 할 수 있다. 채널(128)과 컨트롤 유닛(118) 모두는, 각각, 다수의 채널 이미지들(channel images) 혹은 컨트롤 유닛 이미지들을 포함할 수 있다. 각각의 N 포트는 초기화와 로그인 절차의 수행 동안 할당되는 주소 식별자를 포함한다. 명시적 N 포트 로그인(Explicit N Port login)이 초기화 프로세스 동안 N 포트 로그인(PLOGI) 확장된 링크 서비스에 의해서 수행될 수 있다. N 포트가 또 다른 N 포트와 함께 N 포트 로그인을 수행했을 때, 그 N 포트는 다른 N 포트와 함께 로그인 된다고 말할 수 있다.
한 실시 예에서, 채널 서브시스템과 컨트롤 유닛들 사이의 링크 초기화가 프로세스 로그인(PRLI) 확장된 링크 서비스(ELS) 프로토콜을 사용하여 수행된다. PRLI ELS 요청 및 응답의 포맷을 포함하는, PRLI ELS의 일반적인 실시 예들은 아래 섹션들에서 정의된 FC-SB-4를 위한 특정 세팅들(specific settings)과 함께 FC-LS-2에 주어진다.
PRLI 절차 동안, PRLI를 지원하는 채널(128)은 한 요청을 프로세스 로그인 ELS를 또한 지원하는 자신의 구성 내에 있는 각각의 컨트롤 유닛(118)에 송신하는데, 이는 컨트롤 유닛(118)이 트랜스포트-모드 동작들을 지원하는지를 결정하기 위함이다. 한 실시 예에서, PRLI 요청이 논리적 경로들이 설정되기 전 채널 초기화 동안 송신되고 또한 프로세스 로그아웃(PRLO)의 결과로서 송신될 수도 있다. PRLI ELS는 채널(128)과 컨트롤 유닛(118) 사이에 프로세스 로그인 서비스 파라미터들을 교환하기 위해 사용된다. 파라미터들은 채널과 컨트롤 유닛 사이에서 PRLI 요청과 PRLI 응답을 통해서 교환될 수 있다.
PRLI 요청은 서비스 파라미터 페이지를 포함하고, 이는 FC-4 프로토콜을 식별하는(예를 들어, SB-4 프로토콜을 표시하기 위해 hex'IB'에 세트되는) 타입 코드 필드를 포함할 수 있다. FC-SB-4 플래그들(예를 들어, PRLI 요청 페이지의 워드 3의 바이트 3)은 아래에서 기술되는 하나 혹은 그 이상의 플래그들을 포함한다:
0 - 트랜스포트 모드 지원됨. 비트 0이 0으로 세트될 때, 채널은 트랜스포트-모드 동작들을 지원하지 않는다. 비트 0이 1로 세트될 때, 채널은 트랜스포트-모드 동작들을 지원한다.
1 - 유보됨.
2 - DCW 부정확한 길이(IL) 퍼실리티 지원됨. 예를 들어, IL 플래그가 활성(active) 일 때(예를 들어, 비트 2가 1로 세트될 때), DCW IL 퍼실리티는 채널(128)에 의해서 지원된다. 비트 2가 0으로 세트될 때, DCW IL 퍼실리티는 채널(128)에 의해서 지원되지 않는다. DCW IL 퍼실리티는 서프레스-길이-표시자(SLI) 플래그(214) 및 부정확한-길이 플래그(338)을 위한 지원을 포함한다. 트랜스포트 모드-지원된 비트(비트0)가 0일 때, 비트 2는 0으로 세트될 것이다.
5 - 양방향 데이터 전송 지원됨. 양방향 전송 표시가 활성일 때(예를 들어, 비트 5가 1로 세트될 때), 양방향 데이터 전송이 채널(128)에 의해서 지원된다. 비트 5가 0으로 세트될 때, 양방향 데이터 전송이 채널에 의해서 지원되지 않는다. 이 비트는 트랜스포트 모드-지원된 비트가 1일 때 오직 의미를 갖는다.
7 - 제1 전송 준비 디스에이블 지원됨(First Transfer Ready Disabled Supported). 비트 7이 1로 세트될 때, 제1-전송-준비-디스에이블된 동작이 채널에 의해서 지원된다. 비트 7이 0으로 세트될 때, 제1-전송-준비-디스에이블된 동작이 채널에 의해서 지원되지 않는다. 트랜스포트-모드-지원된 비트(비트0)가 0일 때 비트 7은 0으로 세트될 것이다.
한 실시 예에서, PRLI 응답은 PRLI 수용 서비스 파라미터 페이지(a PRLI Accept Service Parameter Page)를 포함하고, 이는 FC-4 프로토콜을 식별하는(예를 들어, SB-4프로토콜을 표시하기 위해 hex'IB'로 세트 되는) 타입 코드 필드, 및 아래에서 정의되는 하나 혹은 그 이상의 플래그들을 포함하는 FC-SB-4 플래그들 필드(예를 들어, 워드 3의 바이트 3)를 포함할 수 있다:
0 - 트랜스포트 모드 지원됨. 비트 0이 0으로 세트될 때, 컨트롤 유닛(118)은 트랜스포트-모드 동작들을 지원하지 않는다. 비트 0이 1로 세트될 때, 컨트롤 유닛(118)은 트랜스포트-모드 동작들을 지원한다.
2 - DCW 부정확한 길이(IL) 퍼실리티 지원됨. 비트 2가 1로 세트될 때, DCW 부정확한 길이(IL) 퍼실리티는 컨트롤 유닛(118)에 의해서 지원된다. 비트 2가 0으로 세트될 때, DCW IL 퍼실리티는 컨트롤 유닛(118)에 의해서 지원되지 않는다. DCW 부정확한 길이(IL) 퍼실리티는 SLI 플래그(214) 및 부정확한-길이 플래그(338)을 위한 지원을 포함한다. 트랜스포트-모드-지원된 비트(비트0)가 0일 때, 비트 2는 0으로 세트될 것이다.
5 - 양방향 데이터 전송 지원됨. 양방향 전송 표시가 활성일 때(예를 들어, 비트 5가 1로 세트될 때), 양방향 데이터 전송이 컨트롤 유닛(118)에 의해서 지원된다. 비트 5가 0으로 세트될 때, 양방향 데이터 전송이 컨트롤 유닛(118)에 의해서 지원되지 않는다. 이 비트는 트랜스포트 모드-지원된 비트가 1일 때 오직 의미를 갖는다.
7 - 제1 전송 준비 디스에이블 지원됨(First Transfer Ready Disabled Supported). 비트 7이 1로 세트될 때, 제1-전송-준비-디스에이블된 동작이 컨트롤 유닛에 의해서 지원된다. 비트 7이 0으로 세트될 때, 제1-전송-준비-디스에이블된 동작이 컨트롤 유닛에 의해서 지원되지 않는다. 트랜스포트-모드-지원된 비트(비트0)가 0일 때 비트 7은 0으로 세트될 것이다.
예시적 실시 예들의 기술적 효과들 및 장점들은, TCCB에 위치하는 I/O 명령들 및 디바이스 지원 데이터에 더하여, 추가의 명령들뿐만 아니라 트랜스포트 지원 데이터를 컨트롤 유닛에 전송하는 능력을 포함한다. 기술적 효과들은 또한, 부정확한 길이 조건의 검출에도 불구하고, DCW들의 처리를 계속하는 능력을 포함하는데, 이는 컨트롤 유닛이 I/O 동작을 종료시킬 필요 없이 I/O 명령들을 계속 처리할 수 있게 해 준다. 다른 기술적 효과들은 단일의 I/O 동작 동안 채널과 컨트롤 유닛 사이에서 입력 및 출력 데이터 모두를 트랜스포트할 능력을 포함한다.
여기서 사용된 용어는 특정 실시 예들을 기술할 목적으로만 사용된 것이며 발명의 범위를 제한하려 의도된 것이 아니다. 여기에서 사용된 바와 같이, 단수 형식들은, 달리 문맥상 명백하게 표시하지 않는 한, 복수의 형식들도 또한 포함하도록 의도되었다. "포함하다" 및/또는 "포함하는" 이라는 용어들은, 이 명세서에서 사용되었을 때, 진술된 특징들, 정수들, 단계들, 동작들, 엘리먼트들, 및/또는 컴포넌트들의 존재를 명시하지만, 하나 혹은 그 이상의 다른 특징들, 정수들, 단계들, 동작들, 엘리먼트들, 컴포넌트들 및/또는 그들의 그룹들의 존재 혹은 추가를 배제하는 것이 아님을 이해하여야 한다.
아래 청구항들 내의 대응 구조들, 재료들, 동작들, 및 모든 수단들 혹은 단계 플러스 펑션 엘리먼트들의 균등물들은 명시적으로 청구된 다른 엘리먼트들과 조합하여 펑션을 수행하기 위한 모든 구조, 재료, 혹은 동작을 포함하도록 의도된다. 본 발명의 상세한 설명은 예시와 설명의 목적으로 제공되었지만, 개시된 형식 내의 발명이 전부라거나 혹은 한정되도록 의도되지 않았다. 본 발명의 범위와 정신을 벗어남이 없이 많은 수정들과 변경들이 당업자들에게 명백히 가능하다. 실시 예는 본 발명의 원리들과 실용적 응용을 최선으로 설명하기 위해서, 그리고 당업자들이 고려된 특정 사용에 적합한 다양한 수정들을 갖는 다양한 실시 예들에 대해 본 발명을 이해할 수 있도록 하기 위해서 선택되고 기술되었다.
당업자들이 이해할 수 있듯이, 본 발명은 시스템, 방법 혹은 컴퓨터 프로그램 제품으로 구현될 수 있다. 따라서, 본 발명의 실시 예들은 전적으로 하드웨어 실시 예, 전적으로 소프트웨어 실시 예(펌웨어, 상주 소프트웨어, 마이크로 코드 등을 포함하는), 혹은 일반적으로 여기서 "회로", "모듈" 또는 "시스템"으로 불릴 수 있는 소프트웨어 및 하드웨어 형태들을 조합하는 실시 예의 형식을 취할 수 있다. 더 나아가서, 본 발명의 실시 예들은 그 안에 컴퓨터 판독가능 프로그램 코드를 갖는 하나 혹은 그 이상의 컴퓨터 판독가능 매체(들) 내에 구현된 컴퓨터 프로그램 제품의 형식을 취할 수도 있다.
하나 혹은 그 이상의 컴퓨터 판독 가능 매체(들)의 모든 조합이 이용될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터 판독 가능 신호 매체 혹은 컴퓨터 판독 가능 스토리지 매체일 수 있다. 컴퓨터 판독 가능 스토리지 매체는, 예를 들어, 전자, 자기, 광, 전자기, 적외선, 혹은 반도체 시스템, 장치, 혹은 디바이스, 혹은 모든 이들의 적절한 조합이 될 수 있으며, 이에 한정되지 않는다. 컴퓨터 판독 가능 스토리지 매체의 더 구체적인 예들은 다음을 포함할 수 있다: 하나 혹은 그 이상의 배선들을 갖는 전기적 연결, 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독-전용 메모리(ROM), 지울 수 있고 프로그램 가능한 판독-전용 메모리(EPROM 혹은 플래시 메모리), 광 파이버, 휴대용 콤팩트 디스크 판독-전용 메모리(CD-ROM), 광 스토리지 디바이스, 자기 스토리지 디바이스, 혹은 이들의 모든 적절한 조합. 이 명세서에서, 컴퓨터 판독 가능 스토리지 매체는 명령 실행 시스템, 장치 혹은 디바이스와 결합하여 혹은 그에 의하여 사용되는 프로그램을 보유 혹은 저장할 수 있는 모든 유형의 매체일 수 있다.
컴퓨터 판독 가능 신호 매체는, 예를 들어, 베이스 밴드 내 혹은 반송파의 일부로서, 그 안에 구현된 컴퓨터 판독가능 프로그램 코드를 갖는 전파된 데이터 신호를 포함할 수 있다. 그러한 전파된 신호는 전자-자기, 광, 혹은 그들의 모든 적절한 조합을 포함하는, 하지만 이것에 한정되지 않는, 모든 다양한 형태를 취할 수 있다. 컴퓨터 판독 가능 신호 매체는 컴퓨터 판독 가능 스토리지 매체가 아니고 명령 실행 시스템, 장치 혹은 디바이스와 결합하여 혹은 그에 의하여 사용되는 프로그램을 통신하고, 전파하고, 혹은 트랜스포트할 수 있는 모든 컴퓨터 판독 가능 매체일 수 있다.
컴퓨터 판독 가능 매체 상에 구현된 프로그램 코드는, 무선, 유선, 광 파이버 케이블, RF 등, 혹은 이들의 모든 적절한 조합을 포함하는, 그러나 이에 한정되지는 않는, 모든 적절한 매체를 사용하여 전송될 수 있다.
본 발명의 실시 예들의 동작을 수행하는 컴퓨터 프로그램 코드는 하나 혹은 그 이상의 프로그래밍 언어들의 모든 조합으로 작성될 수 있으며, 이들 언어들은 Java, Smalltalk, C++ 혹은 이와 유사한 것과 같은 객체 지향 프로그래밍 언어와, "C" 프로그래밍 언어 혹은 유사한 프로그래밍 언어들과 같은 종래의 절차적 프로그래밍 언어들을 포함한다. 프로그램 코드는 전적으로 유저의 컴퓨터 상에서, 부분적으로 유저의 컴퓨터 상에서, 독립형 소프트웨어 패키지로서, 실행될 수 있고, 부분적으로 유저의 컴퓨터 상에서 그리고 부분적으로 원격 컴퓨터 상에서 또는 전적으로 원격 컴퓨터 혹은 서버 상에서 실행될 수 있다. 후자의 시나리오에서, 원격 컴퓨터는 유저의 컴퓨터와 연결될 수 있는데, 이는 모든 종류의 네트워크를 통해서 할 수 있으며, 이들 네트워크는 근거리 네트워크(LAN) 혹은 광역 네트워크(WAN)를 포함한다. 또는 연결은, 예를 들어 인터넷 서비스 제공자를 사용하는 인터넷을 통해서, 외부 컴퓨터로 이루어질 수 있다.
본 발명의 여러 측면들이 본 발명의 실시 예들에 따른 방법들, 장치(시스템들) 및 컴퓨터 프로그램 제품들의 아래 플로차트 예시들 및/또는 블록 다이어그램들을 참조하여 기술되었다. 플로차트 예시들 및/또는 블록 다이어그램들의 각 블록 및, 플로차트 예시들 및/또는 블록 다이어그램들 내의 블록들의 조합들은 컴퓨터 프로그램 명령들에 의해서 구현될 수 있음을 이해하여야 한다. 이들 컴퓨터 프로그램 명령들은 범용 컴퓨터, 특별 컴퓨터, 혹은 프로그램 가능 데이터 처리 장치의 프로세서에 제공되어, 컴퓨터 혹은 기타 프로그램 가능 데이터 처리 장치의 프로세서를 통해서 실행하는, 명령들이 플로차트 및/또는 블록 다이어그램 블록 또는 블록들 내에 명시된 펑션들/동작들을 구현하는 수단들을 생성하도록 머신을 생산할 수 있다.
이들 컴퓨터 프로그램 명령들은 또한, 컴퓨터 판독가능 매체 내에 저장된 명령들이 플로차트 및/또는 블록 다이어그램 블록 또는 블록들 내에 명시된 펑션/동작을 구현하는 명령들을 포함하는 제품을 생산하도록, 컴퓨터, 기타 프로그램 가능 데이터 처리 장치, 혹은 기타 디바이스들을 특정 방식으로 기능을 수행하도록 지시할 수 있는 컴퓨터 판독가능 매체 내에 저장될 수 있다.
컴퓨터 프로그램 명령들은 또한 컴퓨터, 기타 프로그램 가능 데이터 처리 장치, 혹은 기타 디바이스들에 로드되어 컴퓨터, 기타 프로그램 가능 데이터 처리 장치, 혹은 기타 디바이스들 상에서 실행하는 명령들이 플로차트 및/또는 블록 다이어그램 블록 또는 블록들 내에 명시된 펑션들/동작들을 구현하는 프로세스들을 제공하도록 컴퓨터 구현 프로세스를 생산하기 위해서 컴퓨터, 기타 프로그램 가능 데이터 처리 장치, 혹은 기타 디바이스들 상에서 일련의 동작 단계들이 수행되게 할 수 있다.
여기서 도시된 플로 다이어 그램들은 단지 하나의 예이다. 본 발명의 범위를 벗어남이 없이 여기서 기술된 이 다어그램 혹은 단계들(혹은 동작들)에 대하여 많은 변경들이 가능하다. 예를 들어, 단계들은 다른 순서로 수행될 수 있고 또는 단계들은 추가되거나, 삭제되거나 혹은 수정될 수 있다. 이 모든 변경들이 청구된 발명의 일부로 간주된다.
본 발명에 대한 바람직한 실시 예가 기술되었지만, 현재 및 미래의, 당업자들은 다음에 오는 청구항들의 범위 내에 포함되면서 다양하게 개선하고 향상시킬 수 있음을 이해하여야 한다. 이들 청구항들은 처음 기술된 본 발명에 대한 정당한 보호를 유지하도록 해석되어야 한다.

Claims (25)

  1. 컴퓨터 판독가능 매체에 있어서,
    상기 컴퓨터 판독가능 매체는, 컨트롤 유닛 - 상기 컨트롤 유닛은 하나 혹은 그 이상의 디바이스들과 통신함 - 과 통신하도록 구성된 호스트 컴퓨터 시스템에서 입력/출력(I/O) 동작 명령에 의해서 개시된 I/O 동작을 수행하기 위한 컴퓨터 프로그램을 포함하고,
    상기 컴퓨터 프로그램은:
    상기 호스트 컴퓨터 시스템의 채널 서브시스템에 의한 I/O 동작을 명시하는 적어도 하나의 명령 메시지를 생성하는 단계 - 상기 적어도 하나의 명령 메시지는 하나 혹은 그 이상의 디바이스 명령 워드들(DCWs)을 포함하고, 각각의 DCW는 I/O 명령과 관련되며, 상기 하나 혹은 그 이상의 DCW들 중 적어도 하나의 DCW는 데이터 카운트와 서프레스-길이-표시(SLI)를 포함하고, 상기 SLI는 컨트롤 유닛이 부정확한 길이 조건을 검출하는 것에 응답하여 상기 I/O 동작을 계속 수행할 것인지를 상기 컨트롤 유닛에 지시하도록 구성되며, 상기 부정확한 길이 조건은 상기 데이터 카운트가 상기 I/O 동작 명령을 수행하는데 요구된 데이터 양에 매칭하지 않는 것에 응답하여 검출되고, 상기 요구된 데이터는 리드(read) 동작 명령을 위해 상기 컨트롤 유닛에서 이용 가능한 데이터와 라이트(write) 동작 명령을 위해 상기 컨트롤 유닛에 의해서 요구된 데이터 중 하나임 -;
    상기 컨트롤 유닛에 상기 적어도 하나의 명령 메시지를 포워딩하는 단계;
    상기 컨트롤 유닛으로부터 부정확한 길이(IL) 값을 수신하는 단계 - 상기 IL 값은 상기 SLI가 제1 SLI 값인 것과 상기 데이터 카운트가 상기 요구된 데이터 양에 매칭하지 않는 것에 응답하여 제1 IL 값이 되고, 상기 IL 값은 상기 SLI가 제2 SLI 값인 것과 상기 데이터 카운트가 상기 요구된 데이터 양에 매칭하지 않는 것에 응답하여 제2 IL 값이 됨 -; 및
    상기 컨트롤 유닛으로부터 상기 IL 값을 수신하는 것에 응답하여, 서브채널 상태 워드(a subchannel-status word) 내에 IL 인디케이터를 저장하는 단계 - 상기 IL 인디케이터는 상기 IL 값을 나타냄 - 를 포함하는 방법을 처리하기 위해 처리 회로(a processing circuit)에 의하여 판독 가능하고 상기 처리 회로에 의한 실행을 위한 명령들을 포함하는
    컴퓨터 판독가능 매체.
  2. 제1항에 있어서, 상기 적어도 하나의 명령 메시지는 그 안에 복수의 DCW들을 보유하는 TCCB를 포함하고, 상기 적어도 하나의 명령 메시지를 생성하는 단계는 호스트 시스템 메모리 내에 저장된 트랜스포트 명령 워드(TCW)의 TCCB 주소 필드에 명시된 하나 혹은 그 이상의 위치들로부터 TCCB를 수집하는 단계(gathering)를 포함하는
    컴퓨터 판독가능 매체.
  3. 제1항에 있어서, 상기 적어도 하나의 DCW는 상기 컨트롤 유닛이 상기 적어도 하나의 DCW를 실행한 후 후속 DCW가 상기 적어도 하나의 DCW에 논리적으로 연결되고 상기 컨트롤 유닛에 의해서 수행될 것임을 표시하는 명령 체이닝 플래그를 포함하는
    컴퓨터 판독가능 매체.
  4. 제3항에 있어서, 상기 SLI는 상기 컨트롤 유닛이 상기 부정확한 길이 조건을 검출하는 것에 응답하여 상기 컨트롤 유닛을 지시하여 명령 체이닝을 계속하게 하고 상기 후속의 DCW를 실행하게 하는
    컴퓨터 판독가능 매체.
  5. 제1항에 있어서, 상기 SLI는 상기 적어도 하나의 DCW 내의 SLI 필드 내의 값이고, 상기 부정확한 길이 조건이 검출되었을 때 상기 값이 1(one)이면 상기 컨트롤 유닛을 지시하여 상기 I/O 동작을 계속하도록 하고, 그리고 상기 부정확한 길이 조건이 검출되었을 때 상기 값이 0(zero)이면 상기 컨트롤 유닛을 지시하여 상기 I/O 동작을 종료하도록 하는
    컴퓨터 판독가능 매체.
  6. 제1항에 있어서, 상기 채널 서브시스템은 상기 컨트롤 유닛이 부정확한 길이 조건을 검출하는 것에 응답하여 그리고 상기 SLI가 상기 제1 값이고 라이트 DCW를 위해 디바이스에 의해 요구된 데이터의 양에 매칭하지 않는 상기 적어도 하나의 DCW의 데이터 카운트 필드 내의 데이터 카운트 값과 리드 DCW를 위해 디바이스에 이용 가능한 데이터의 양에 매칭하지 않는 데이터 카운트 값 중 적어도 하나인 것에 응답하여 상기 IL 값을 수신하도록 구성되는
    컴퓨터 판독가능 매체.
  7. 제5항에 있어서, 상기 SLI 필드는 1(one)의 값을 포함하고, 상기 적어도 하나의 DCW는 리드 DCW이며, 그리고 상기 컴퓨터 프로그램은:
    명령 체이닝 플래그가 명령 체이닝이 상기 리드 DCW를 위해 사용됨을 표시하는 것과 그리고 상기 데이터 카운트 값이 상기 디바이스에서 이용 가능한 데이터 양보다 크다는 것에 응답하여, 상기 채널 서브시스템에서 상기 컨트롤 유닛으로부터 데이터 전송 중인 데이터의 양을 수신하는 단계 - 상기 DCW를 위해 전송된 데이터의 양이 상기 데이터 카운트 값과 같게(equal) 되도록 상기 데이터 전송은 하나 혹은 그 이상의 패드(pad) 바이트들을 상기 데이터 전송 내에 포함함 -;
    명령 체이닝 플래그가 명령 체이닝이 상기 리드 DCW를 위해 사용되지 않음을 표시하는 것과 그리고 상기 데이터 카운트 값이 상기 디바이스에서 이용 가능한 데이터 양보다 크다는 것에 응답하여, 상기 DCW를 위해 전송된 데이터의 양이 상기 데이터 카운트 값과 같게(equal) 되도록 하나 혹은 그 이상의 패드 바이트들을 갖는 데이터의 양만(only the amount of data)을 혹은 데이터 양을 수신하는 단계; 그리고
    상기 데이터 카운트 값이 상기 디바이스에서 이용 가능한 데이터의 양보다 적은 것에 응답하여, 상기 채널 서브시스템에서 상기 데이터 카운트 값과 같은(equal) 데이터의 양을 수신하는 단계를 수행하기 위한 명령들을 더 포함하는
    컴퓨터 판독가능 매체.
  8. 제5항에 있어서, 상기 SLI 필드는 1(one)의 값을 포함하고, 상기 적어도 하나의 DCW는 라이트 DCW이며, 그리고 상기 컴퓨터 프로그램은:
    명령 체이닝 플래그가 명령 체이닝이 상기 라이트 DCW를 위해 사용됨을 표시하는 것과 그리고 상기 데이터 카운트 값이 상기 디바이스에 의해서 요구된 데이터 양보다 크다는 것에 응답하여, 상기 디바이스에 의해서 요구된 데이터의 양과 같은 데이터의 양을 상기 채널 서브시스템에 의해서 상기 컨트롤 유닛으로 전송하고 그리고 나머지 데이터는 폐기하는 단계;
    명령 체이닝 플래그가 명령 체이닝이 상기 라이트 DCW를 위해 사용되지 않음을 표시하는 것과 그리고 상기 데이터 카운트 값이 상기 디바이스에 의해서 요구된 데이터 양보다 크다는 것에 응답하여, 상기 디바이스에 의해서 요구된 데이터의 양을 전송하고 상기 데이터 카운트 값이 소진될(exhausted) 때까지 추가의 데이터를 전송하는 단계; 그리고
    상기 데이터 카운트 값이 상기 디바이스에 의해서 요구된 데이터 양보다 적은 것에 응답하여, 상기 데이터 카운트 값과 같은 데이터 양을 상기 컨트롤 유닛에 전송하는 단계를 수행하기 위한 명령들을 더 포함하는
    컴퓨터 판독가능 매체.
  9. 제1항에 있어서, 상기 적어도 하나의 DCW는 상기 SLI가 제2 SLI 값인 것에 응답하여 1(one)의 값을 갖고 상기 SLI가 제1 SLI 값인 것에 응답하여 0(zero)의 값을 갖는 SLI 필드를 포함하는 상기 SLI를 포함하고, 그리고 상기 채널 서브시스템은 상기 I/O 동작을 실행하는 것 혹은 종료하는 것에 응답하여 상기 컨트롤 유닛으로부터 회신된(returned) 트랜스포트 응답 메시지를 수신하도록 구성되는 - 상기 트랜스포트 응답 메시지는 상기 부정확한 길이 조건 때문에 상기 I/O 동작이 종료되었는지를 표시하는 부정확한 길이(IL) 필드 내에 IL 값을 포함하고, 상기 SLI가 상기 제1 SLI 값인 것과 상기 데이터 카운트가 상기 요구된 데이터의 양에 매칭하지 않는 것에 응답하여 상기 IL 필드는 1(one)의 값을 가지며, 상기 SLI가 상기 제2 SLI 값인 것과 상기 데이터 카운트가 상기 요구된 데이터의 양에 매칭하는 것 중 적어도 하나에 응답하여 상기 IL 필드는 0(zero)의 값을 가짐 -
    컴퓨터 판독가능 매체.
  10. 제9항에 있어서, 상기 트랜스포트 응답 메시지는 복수의 DCW들 중 어느 것이 상기 부정확한 길이 조건이 검출되도록 하였는지를 표시하는 DCW 오프셋 필드를 포함하는
    컴퓨터 판독가능 매체.
  11. 제1항에 있어서, 상기 채널 서브시스템은:
    상기 컨트롤 유닛에 프로세스 로그인(PRLI) 요청 메시지를 송신하는 단계 - 상기 PRLI 요청 메시지는 상기 채널 서브시스템과 상기 컨트롤 유닛 사이의 링크(a link)를 초기화하도록(initialize) 구성되고, 상기 PRLI 요청 메시지는 상기 채널 서브시스템이 상기 SLI의 사용을 지원하는지를 표시하는 값을 갖는 헤더(a header)를 포함함 -; 및
    상기 컨트롤 유닛으로부터 (PRLI) 응답 메시지를 수신하는 단계 - 상기 PRLI 응답 메시지는 상기 컨트롤 유닛이 상기 SLI의 사용을 지원하는지를 표시하는 값을 갖는 헤더를 포함함- 를 수행하도록 구성되는
    컴퓨터 판독가능 매체.
  12. 입력/출력(I/O) 동작 명령에 의해서 개시된 I/O 동작을 수행하기 위한 호스트 컴퓨터 시스템에 있어서,
    상기 호스트 시스템은 컨트롤 유닛 - 상기 컨트롤 유닛은 하나 혹은 그 이상의 디바이스들과 통신함 - 과 통신하도록 구성되고,
    상기 호스트 컴퓨터 시스템은:
    상기 호스트 컴퓨터 시스템의 채널 서브시스템에 의한 I/O 동작을 명시하는 적어도 하나의 명령 메시지를 생성하는 단계 - 상기 적어도 하나의 명령 메시지는 하나 혹은 그 이상의 디바이스 명령 워드들(DCWs)을 포함하고, 각각의 DCW는 I/O 명령과 관련되며, 상기 하나 혹은 그 이상의 DCW들 중 적어도 하나의 DCW는 데이터 카운트와 서프레스-길이-표시(SLI)를 포함하고, 상기 SLI는 컨트롤 유닛이 부정확한 길이 조건을 검출하는 것에 응답하여 상기 I/O 동작을 계속 수행할 것인지를 상기 컨트롤 유닛에 지시하도록 구성되며, 상기 부정확한 길이 조건은 상기 데이터 카운트가 상기 I/O 동작 명령을 수행하는데 요구된 데이터 양에 매칭하지 않는 것에 응답하여 검출되고, 상기 요구된 데이터는 리드 동작 명령을 위해 상기 컨트롤 유닛에서 이용 가능한 데이터와 라이트 동작 명령을 위해 상기 컨트롤 유닛에 의해서 요구된 데이터 중 하나임 -;
    상기 컨트롤 유닛에 상기 적어도 하나의 명령 메시지를 포워딩하는 단계;
    상기 컨트롤 유닛으로부터 부정확한 길이(IL) 값을 수신하는 단계 - 상기 IL 값은 상기 SLI가 제1 SLI 값인 것과 상기 데이터 카운트가 상기 요구된 데이터 양에 매칭하지 않는 것에 응답하여 제1 IL 값이 되고, 상기 IL 값은 상기 SLI가 제2 SLI 값인 것과 상기 데이터 카운트가 상기 요구된 데이터 양에 매칭하지 않는 것에 응답하여 제2 IL 값이 됨 -; 및
    상기 컨트롤 유닛으로부터 상기 IL 값을 수신하는 것에 응답하여, 서브채널 상태 워드(a subchannel-status word) 내에 IL 인디케이터를 저장하는 단계 - 상기 IL 인디케이터는 상기 IL 값을 나타냄 - 를 수행하기 위해 구성되는
    호스트 컴퓨터 시스템.
  13. 제12항에 있어서, 상기 적어도 하나의 DCW는 상기 컨트롤 유닛이 상기 적어도 하나의 DCW를 실행한 후 후속 DCW가 상기 적어도 하나의 DCW에 논리적으로 연결되고 상기 컨트롤 유닛에 의해서 수행될 것임을 표시하는 명령 체이닝 플래그를 포함하고, 그리고 상기 SLI는 상기 컨트롤 유닛이 상기 부정확한 길이 조건을 검출하는 것에 응답하여 상기 컨트롤 유닛을 지시하여 명령 체이닝을 계속하게 하고 상기 후속의 DCW를 실행하게 하는
    호스트 컴퓨터 시스템.
  14. 제12항에 있어서, 상기 SLI는 상기 적어도 하나의 DCW 내의 SLI 필드 내의 값이고, 상기 부정확한 길이 조건이 검출되었을 때 상기 값이 1(one)이면 상기 컨트롤 유닛을 지시하여 상기 I/O 동작을 계속하도록 하고, 그리고 상기 부정확한 길이 조건이 검출되었을 때 상기 값이 0(zero)이면 상기 컨트롤 유닛을 지시하여 상기 I/O 동작을 종료하도록 하는
    호스트 컴퓨터 시스템.
  15. 제14항에 있어서, 상기 SLI 필드는 1(one)의 값을 포함하고, 상기 적어도 하나의 DCW는 리드 DCW이며, 그리고 상기 호스트 컴퓨터 시스템은:
    명령 체이닝 플래그가 명령 체이닝이 상기 리드 DCW를 위해 사용됨을 표시하는 것과 그리고 상기 데이터 카운트 값이 상기 디바이스에서 이용 가능한 데이터 양보다 크다는 것에 응답하여, 상기 채널 서브시스템에서 상기 컨트롤 유닛으로부터 데이터 전송 중인 데이터의 양을 수신하는 단계 - 상기 DCW를 위해 전송된 데이터의 양이 상기 데이터 카운트 값과 같게(equal) 되도록 상기 데이터 전송은 하나 혹은 그 이상의 패드(pad) 바이트들을 상기 데이터 전송 내에 포함함 -;
    명령 체이닝 플래그가 명령 체이닝이 상기 리드 DCW를 위해 사용되지 않음을 표시하는 것과 그리고 상기 데이터 카운트 값이 상기 디바이스에서 이용 가능한 데이터 양보다 크다는 것에 응답하여, 상기 DCW를 위해 전송된 데이터의 양이 상기 데이터 카운트 값과 같게(equal) 되도록 하나 혹은 그 이상의 패드 바이트들을 갖는 데이터의 양만(only the amount of data)을 혹은 데이터의 양을 수신하는 단계; 그리고
    상기 데이터 카운트 값이 상기 디바이스에서 이용 가능한 데이터의 양보다 적은 것에 응답하여, 상기 채널 서브시스템에서 상기 데이터 카운트 값과 같은(equal) 데이터의 양을 수신하는 단계를 수행하도록 구성되는
    호스트 컴퓨터 시스템.
  16. 제14항에 있어서, 상기 SLI 필드는 1(one)의 값을 포함하고, 상기 적어도 하나의 DCW는 라이트 DCW이며, 그리고 상기 호스트 컴퓨터 시스템은:
    명령 체이닝 플래그가 명령 체이닝이 상기 라이트 DCW를 위해 사용됨을 표시하는 것과 그리고 상기 데이터 카운트 값이 상기 디바이스에 의해서 요구된 데이터 양보다 크다는 것에 응답하여, 상기 디바이스에 의해서 요구된 데이터의 양과 같은 데이터 양을 상기 채널 서브시스템에 의해서 상기 컨트롤 유닛으로 전송하고 그리고 나머지 데이터는 폐기하는 단계;
    명령 체이닝 플래그가 명령 체이닝이 상기 라이트 DCW를 위해 사용되지 않음을 표시하는 것과 그리고 상기 데이터 카운트 값이 상기 디바이스에 의해서 요구된 데이터 양보다 크다는 것에 응답하여, 상기 디바이스에 의해서 요구된 데이터의 양을 전송하고 상기 데이터 카운트 값이 소진될(exhausted) 때까지 추가의 데이터를 전송하는 단계; 그리고
    상기 데이터 카운트 값이 상기 디바이스에 의해서 요구된 데이터 양보다 적은 것에 응답하여, 상기 데이터 카운트 값과 같은 데이터 양을 상기 컨트롤 유닛에 전송하는 단계를 수행하도록 구성되는
    호스트 컴퓨터 시스템.
  17. 제12항에 있어서, 상기 적어도 하나의 DCW는 상기 SLI가 제2 SLI 값인 것에 응답하여 1(one)의 값을 갖고 상기 SLI가 제1 SLI 값인 것에 응답하여 0(zero)의 값을 갖는 SLI 필드를 포함하는 상기 SLI를 포함하고, 그리고 상기 채널 서브시스템은 상기 I/O 동작을 실행하는 것 혹은 종료하는 것에 응답하여 상기 컨트롤 유닛으로부터 회신된(returned) 트랜스포트 응답 메시지를 수신하도록 구성되는 - 상기 트랜스포트 응답 메시지는 상기 부정확한 길이 조건 때문에 상기 I/O 동작이 종료되었는지를 표시하는 부정확한 길이(IL) 필드 내에 IL 값을 포함하고, 상기 SLI가 상기 제1 SLI 값인 것과 상기 데이터 카운트가 상기 요구된 데이터의 양에 매칭하지 않는 것에 응답하여 상기 IL 필드는 1(one)의 값을 가지며, 상기 SLI가 상기 제2 SLI 값인 것과 그리고 상기 데이터 카운트가 상기 요구된 데이터의 양에 매칭하는 것 중 적어도 하나에 응답하여 상기 IL 필드는 0(zero)의 값을 가짐 -
    호스트 컴퓨터 시스템.
  18. 제 17항에 있어서, 상기 트랜스포트 응답 메시지는 복수의 DCW들 중 어느 것이 상기 부정확한 길이 조건이 검출되도록 하였는지를 표시하는 DCW 오프셋 필드를 포함하는
    호스트 컴퓨터 시스템.
  19. 제 12항에 있어서, 상기 채널 서브시스템은:
    상기 컨트롤 유닛에 프로세스 로그인(PRLI) 요청 메시지를 송신하는 단계 - 상기 PRLI 요청 메시지는 상기 채널 서브시스템과 상기 컨트롤 유닛 사이의 링크(a link)를 초기화하도록(initialize) 구성되고, 상기 PRLI 요청 메시지는 상기 채널 서브시스템이 상기 SLI의 사용을 지원하는지를 표시하는 값을 갖는 헤더(a header)를 포함함 -; 및
    상기 컨트롤 유닛으로부터 (PRLI) 응답 메시지를 수신하는 단계 - 상기 PRLI 응답 메시지는 상기 컨트롤 유닛이 상기 SLI의 사용을 지원하는지를 표시하는 값을 갖는 헤더를 포함함 - 를 수행하도록 구성되는
    호스트 컴퓨터 시스템.
  20. 컨트롤 유닛 - 상기 컨트롤 유닛은 하나 혹은 그 이상의 디바이스들과 통신함 - 과 통신하도록 구성된 호스트 컴퓨터 시스템에서 입력/출력(I/O) 동작 명령에 의해서 개시된 I/O 동작을 수행하는 방법에 있어서, 상기 방법은:
    상기 호스트 컴퓨터 시스템의 채널 서브시스템에 의한 I/O 동작을 명시하는 적어도 하나의 명령 메시지를 생성하는 단계 - 상기 적어도 하나의 명령 메시지는 하나 혹은 그 이상의 디바이스 명령 워드들(DCWs)을 포함하고, 각각의 DCW는 I/O 명령과 관련되며, 상기 하나 혹은 그 이상의 DCW들 중 적어도 하나의 DCW는 데이터 카운트와 서프레스-길이-표시(SLI)를 포함하고, 상기 SLI는 컨트롤 유닛이 부정확한 길이 조건을 검출하는 것에 응답하여 상기 I/O 동작을 계속 수행할 것인지를 상기 컨트롤 유닛에 지시하도록 구성되며, 상기 부정확한 길이 조건은 상기 데이터 카운트가 상기 I/O 동작 명령을 수행하는데 요구된 데이터 양에 매칭하지 않는 것에 응답하여 검출되고, 상기 요구된 데이터는 리드 동작 명령을 위해 상기 컨트롤 유닛에서 이용 가능한 데이터와 라이트 동작 명령을 위해 상기 컨트롤 유닛에 의해서 요구된 데이터 중 하나임 -;
    상기 컨트롤 유닛에 상기 적어도 하나의 명령 메시지를 포워딩하는 단계;
    상기 컨트롤 유닛으로부터 부정확한 길이(IL) 값을 수신하는 단계 - 상기 IL 값은 상기 SLI가 제1 SLI 값인 것과 그리고 상기 데이터 카운트가 상기 요구된 데이터 양에 매칭하지 않는 것에 응답하여 제1 IL 값이 되고, 상기 IL 값은 상기 SLI가 제2 SLI 값인 것과 그리고 상기 데이터 카운트가 상기 요구된 데이터 양에 매칭하지 않는 것에 응답하여 제2 IL 값이 됨 -; 및
    상기 컨트롤 유닛으로부터 상기 IL 값을 수신하는 것에 응답하여, 서브채널 상태 워드(a subchannel-status word) 내에 IL 인디케이터를 저장하는 단계 - 상기 IL 인디케이터는 상기 IL 값을 나타냄 - 를 포함하는
    방법.
  21. 제20항에 있어서, 상기 적어도 하나의 DCW는 상기 컨트롤 유닛이 상기 적어도 하나의 DCW를 실행한 후 후속 DCW가 상기 적어도 하나의 DCW에 논리적으로 연결되고 상기 컨트롤 유닛에 의해서 수행될 것임을 표시하는 명령 체이닝 플래그를 포함하고, 그리고 상기 SLI는 상기 컨트롤 유닛이 상기 부정확한 길이 조건을 검출하는 것에 응답하여 상기 컨트롤 유닛을 지시하여 명령 체이닝을 계속하게 하고 상기 후속의 DCW를 실행하게 하는
    방법.
  22. 제20항에 있어서, 상기 SLI는 상기 적어도 하나의 DCW 내의 SLI 필드 내의 값이고, 상기 부정확한 길이 조건이 검출되었을 때 상기 값이 1(one)이면 상기 컨트롤 유닛을 지시하여 상기 I/O 동작을 계속하도록 하고, 그리고 상기 부정확한 길이 조건이 검출되었을 때 상기 값이 0(zero)이면 상기 컨트롤 유닛을 지시하여 상기 I/O 동작을 종료하도록 하는
    방법.
  23. 제20항에 있어서, 상기 적어도 하나의 DCW는 상기 SLI가 제2 SLI 값인 것에 응답하여 1(one)의 값을 갖고 상기 SLI가 제1 SLI 값인 것에 응답하여 0(zero)의 값을 갖는 SLI 필드를 포함하는 상기 SLI를 포함하고, 그리고 상기 채널 서브시스템은 상기 I/O 동작을 실행하는 것 혹은 종료하는 것에 응답하여 상기 컨트롤 유닛으로부터 회신된(returned) 트랜스포트 응답 메시지를 수신하도록 구성되는 - 상기 트랜스포트 응답 메시지는 상기 부정확한 길이 조건 때문에 상기 I/O 동작이 종료되었는지를 표시하는 부정확한 길이(IL) 필드 내에 IL 값을 포함하고, 상기 SLI가 상기 제1 SLI 값인 것과 그리고 상기 데이터 카운트가 상기 요구된 데이터의 양에 매칭하지 않는 것에 응답하여 상기 IL 필드는 1(one)의 값을 가지며, 상기 SLI가 상기 제2 SLI 값인 것과 그리고 상기 데이터 카운트가 상기 요구된 데이터의 양에 매칭하는 것 중 적어도 하나에 응답하여 상기 IL 필드는 0(zero)의 값을 가짐 -
    방법.
  24. 제23항에 있어서, 상기 트랜스포트 응답 메시지는 복수의 DCW들 중 어느 것이 상기 부정확한 길이 조건이 검출되도록 하였는지를 표시하는 DCW 오프셋 필드를 포함하는
    방법.
  25. 제20항에 있어서, 상기 방법은:
    상기 컨트롤 유닛에 프로세스 로그인(PRLI) 요청 메시지를 송신하는 단계 - 상기 PRLI 요청 메시지는 상기 채널 서브시스템과 상기 컨트롤 유닛 사이의 링크(a link)를 초기화하도록(initialize) 구성되고, 상기 PRLI 요청 메시지는 상기 채널 서브시스템이 상기 SLI의 사용을 지원하는지를 표시하는 값을 갖는 헤더(a header)를 포함함 -; 및
    상기 컨트롤 유닛으로부터 (PRLI) 응답 메시지를 수신하는 단계 - 상기 PRLI 응답 메시지는 상기 컨트롤 유닛이 상기 SLI 표시의 사용을 지원하는지를 표시하는 값을 갖는 헤더를 포함함 - 를 더 포함하는
    방법.
KR1020137011599A 2011-06-30 2012-05-03 채널 서브시스템과 입력/출력 디바이스들 사이에 트랜스포트 모드 입력/출력 동작들을 용이하게 하는 방법, 장치 및 컴퓨터 프로그램 제품 KR101476073B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/173,754 US8473641B2 (en) 2011-06-30 2011-06-30 Facilitating transport mode input/output operations between a channel subsystem and input/output devices
US13/173,754 2011-06-30
PCT/EP2012/058104 WO2013000603A1 (en) 2011-06-30 2012-05-03 Facilitating transport mode input/output operations between a channel subsystem and input/output devices

Publications (2)

Publication Number Publication Date
KR20130101538A KR20130101538A (ko) 2013-09-13
KR101476073B1 true KR101476073B1 (ko) 2014-12-23

Family

ID=

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008505511A (ja) 2004-07-01 2008-02-21 日本電気株式会社 物理チャネル内の多数の多重化されたトランスポート・チャネルの間で無線リソースを割り当てるプロセス

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008505511A (ja) 2004-07-01 2008-02-21 日本電気株式会社 物理チャネル内の多数の多重化されたトランスポート・チャネルの間で無線リソースを割り当てるプロセス

Similar Documents

Publication Publication Date Title
US8095847B2 (en) Exception condition handling at a channel subsystem in an I/O processing system
US20120311390A1 (en) Fibre channel input/output data routing system and method
US8549185B2 (en) Facilitating transport mode input/output operations between a channel subsystem and input/output devices
US8631175B2 (en) Facilitating transport mode input/output operations between a channel subsystem and input/output devices
US8918542B2 (en) Facilitating transport mode data transfer between a channel subsystem and input/output devices
WO2012164428A1 (en) Fibre channel input/output data routing system and method
KR101476073B1 (ko) 채널 서브시스템과 입력/출력 디바이스들 사이에 트랜스포트 모드 입력/출력 동작들을 용이하게 하는 방법, 장치 및 컴퓨터 프로그램 제품
CA2819159C (en) Facilitating transport mode input/output operations between a channel subsystem and input/output devices
US8346978B1 (en) Facilitating transport mode input/output operations between a channel subsystem and input/output devices
KR101476075B1 (ko) 채널 서브시스템과 입력/출력 디바이스들 사이에 트랜스포트 모드 입력/출력 동작들을 용이하게 하는 방법, 장치 및 컴퓨터 프로그램 제품