본문 바로가기

IT/papers

SCSI Overview

SCSI Overview - 1

scsi는 다양한 주변기기와 호스트 컴퓨터의 연결을 허용하는 프로토콜이며 병렬 I/O버스이다. 디스크 드라이브, 테이프 드라이브, 모뎀, 프린터, 스캐너, 광디바이스들이 이에 포함된다. SCSI버스로의 연결은 호스트 어답터와 주변장치 컨트롤러로 인해 이루어 진다.

note
주변장치 컨트롤러는 주변장치의 한 부분이기 때문에 각 주변장치 제어기에대한 상세한 하드웨어 세부사항은 각각의 주변장치 그 자체를 살펴보는 것 만으로도 알 수 있다. 호스트 시스템은 하드드라이브가 얼마나 많은 head를 갖고있는지, 테이프 디바이스에 몇개의 트랙이 있는지 고려하지 않는다.

병렬 스카시는 멀티 드롭 버스로 통신한다. 각각의 디바이스는 호스트 어답터와 직접 통신한다. 호스트 어답터와 디바이스 사이의 전송률은 각각의 디바이스에 달려있다.

(1) SCSI BUS communication

1) Targets and Initiators

 스카시 디바이스가 통신할 때 한 디바이스는 initiator 다른 디바이스는 target으로 작동한다. initiator는 작업을 초기화하는 스카시 디바이스 케이블, 호스트 컴퓨터의 어답터나 컨트롤러를 뜻하고, target은 작동하는 scsi디바이스를 의미한다. scsi 스토리지 장치는 target으로서의 특정 rule을 갖고 있는데 SCSI 버스의 information transfer는 언제나 두개의 SCSI 디바이스 사이에서만 허용된다는 것이 그 중 하나이다.


2) Arbitration Technique for Bus control
 SCSI는 버스를 제어하기 위해 arbitration같은 기술을 사용한다. arbitration은 SCSI버스의 통신에서 가장 높은 우선순위의 SCSI 디바이스를 결정하기 위한 우선순위 시스템이다.

 SCSI로 bus master priority는 각각의 디바이스들이 bus를 중재하는 방식으로 이루어진다. initiator가 bus가 통신을 하고 있지 않다는 것을 감지하면 bus busy signal과 그 디바이스 고유의 ID를 BUS에 전송한다.

 일정시간의 arbitration delay 후 initiator는 데이터버스를 체크하고, 만약 더 높은 우선순위를 가진 디바이스가 있다면 작업을 멈춘다.


3) Typical Transcton Process
스카시 버스 동작은 initiator와 target에게 할당된다. 아래는 특정 스카시 버스 트랜젝션 과정이다.

1. initiator는 SCSI 버스를 탐색하고 특정 target을 선택한다.
2. target은 명령, 데이터, 상태와 다른 정보들을 bus에게 전송하고, 때때로 이러한 탐색 작업을 통해 initiator를 재선택하기도 한다.


4) SCSI BUS Phases

 SCSI 버스에서의 모든 작업은 8단계의 SCSI 버스 단계로 발생한다. 버스단계는 전송의 방향과 데이터 라인에 위치한 정보의 타입으로 결정된다.

처음 세 단계는 Negotiation 단계라고 알려져있다. SCSI 버스를 사용하기 위한 퍼미션 획득을 위한 단계이기 때문이다. 마지막 네 단계는 Information Transfer단계로 불리는데 이는 데이터나 컨트롤 정보를 전송하는 단계이기 때문이다.

Note
SCSI bus 단계는 한 번에 한 단계씩만 수행된다.

5) Bus phase Description

1. Bus free
Bus free단계는 어떤 SCSI 디바이스도 버스를 사용하고 있지 않다는 것을 나타낸다. SCSI 디바이스가 arbitration 단계를 시작하기 위해선 SCSI bus는 Bus Free 상태여야 한다.

2. Arbitration
(이 단계는 SCSI 디바이스에게 bus의 제어권을 넘겨주어Initiator나 Target를 정할 수 있도록하기 위한 단계인데) initiator가 bus가 Bus free상태라는 것을 감지하면 BSY신호와 자신의 고유 ID를 보낸다. 특정 시간 delay 후 initiator는 다시 한 번 bus를 체크한 후 더 높은 식별자를 가진 SCSI 디바이스가 있다면 요청을 clear한다. 자신보다 더 높은 식별자를 가진 SCSI 디바이스가 없다면 해당 SCSI device가 제어권을 획득한다. 

3. selection
 arbitration 단계를 통해 SCSI 제어권을 얻으면 이 단계에서는 initiator는 읽기명령이나 쓰기명령을 수행하는 target을 선택하게 된다. Initiator는 SEL line, 예상 target의 ID와 data bus, 그리고 자신이 가진 고유의 initiator ID를 전송한다.

4. Reselection
 SCSI장치는 요청을 처리하는 도중에 연결을 끊을 수 있다. 그 후 대상은 전송 시작자를 다시 선택 할 수 있다. (모든 SCSI 장치가 이 상태를 지원하는 것은 아니다.)

5.Commnd
 initiator에서 Target으로의 전송을 위한 커맨드 정보를 요청한다. 커맨드 정보는 CDB(command Descriptor Block)이라 불리는 바이트의 단위로 이루어 진다.

6. Data
Data In - target에서 initiator으로의 데이터 전송을 요청
Data Out -initiator에서 target으로의 데이터 전송을 요청

7. Status
이 단계는 타겟이 initiator로 전송되는 상태정보를 요청하는 단계이다. target은 명령이 성공적으로 처리되었는지 initiator에게 상태정보를 전송한다.

8. Message
message out : initiator가 target의 어떤 부분이 해당 명령을 처리할 것인지 전송
message in : target이 initiator에게 에러정보 등을 전송



(2) SCSI cable and Bus Termination
 1) termination
 SCSI 버스 특성 상 특정 신호가 SCSI 케이블의 끝에 도달 했을 때 그 신호가 선을 때라 반사되어 돌아오는데 이러한 반사는 실제 데이터의 전송을 방해하여 신호가 손실되거나 데이터가 유실되는 상황을 초래한다. 이러한 유실을 막기 위해 각각의 scsi bus는 termainator를 갖고있다.

버스의 끝에 도달하는 신호를 잡아 반사되지 않도록 하기 위해 여러 특별 장치가 쓰이고 있다.

note
스카시 버스에는 두개의 termitator가 존재하는데 그 이하도 그 이상도 존재할 수 없다.(상단, 하단)

 1. passive termination
 수동터미네이션은 SCSI-1의 사양으로 정의된 가장 구식의 터미네이션 방법이다. 수동 터미네이터는 기본적으로 케이블 종단의 반사를 최소화 하기 위해 버스에 위치한다. 수동 터미네이터는 터미네이션용 전원을 조정하기 위해 어떠한 작업도 하지 않으며 인터페이스 카드에 의존하여 지속적인 공급을 유지하고, 케이블에 저항갑에 가까운 저항값을 공급할 뿐이다.

 2. active termination
 능동 터미네이션은 인터페이스 카드에 의해 공급되는 전언을 제어할 뿐 아니라 전압 조정기를 사용하여 SCSI버스 종단의 저항값을 제어한다.

 3. forced perfact termination
 FPT(forced perfect termination)은 터미네이터에 적용된 전원을 단순히 안정화시키는 기능 이상의 임무를 수행하는 가장 복잡한 터미네이터이다. 다이오드 클램프를 이용하여 자체 저항값을 실제로 전환함으로써 여러 케이블, 장치, 터미네이터의 다양한저항값을 평준화한다.


2) Terminator Power

 터미네이터는 적절하게 작동하기위해 파워가 필요하다. 스카시버스에서는 라인이 그 목적을 위해 사용된다. TERMPWR 는 터미네이션을 위한 5V signal이다. 컨트롤러는 주로 이 Voltage를 전송한다. 각각의 디바이스는 통합 터미네이터 소켓을 통해 고유한 터미네이터 파워를 공급한다. Compaq 장치를 이용한다면 TEMRPWR 점퍼는 언제나 TRMPWR=IFF로 되어있다.
http://link.allblog.net/2810166/http://blog.naver.com/jerid/34430269

note
디바이스가 통합 터미네이터 파워가 꺼져있다면 터미네이션이 이루어 지지 않는다.


3) termination signal

  Signaling TypeSCSI 에서 사용중인 전기적인 신호는 크게 sigle ended, defferential signaling으로 나뉜다.
Single Ended, HVD, LVD 가 있다.

1. Single Ended : 가장 보편적인 형태로 TTL 레벨을 사용하며 Ground 는 0, +는 1 로 인식이 되는 형태이다.
SCSI 는 고속의 병렬 버스인데 Single Ended 의 단순한 신호로는 인터페이스, 거리에 따른 신호 손실, Cross Talk 현상을 가져오게 되어 거리에 제한이 있게 된다.

2. Differential signal : 이런 단점을 보안하기 위해 나온 것이 Differential(차동) Signaling 이다. Two wire 를 사용하게 되는데 예를 들면 0 을 보낼 때는 각 선에 0 Volt 가 가게 되고 1 이 가게 될땐 한선에는 +5volt의 신호가 다른 한선에는 -5volt신호가 가게 된다.

이런 방식으로 먼저 등장한 것이 HVD(High Voltage Differential)이다. HVD 는 높은 가격과 기존의 SE 와 전기 신호 레벨의 차이로 인한 호환성 문제로 널리 쓰이지는 않게 된다.

Ultra SCSI2 와 같이 등장한 것이 LVD(Low Voltage Differential)인데 SE 와 LVD 는 전기적인 호환성으로 인해Multi Mode 가 지원되는 장비에서는 LVD 와 SE 를 같이 사용하게 된다. 또한 사용가능한 케이블또한 16m 까지 연장된다. 단 이때 발생하는 문제는 Ultra 160 을 지원하는 HDD 들을 사용하는 SCSI chain 에 SE 장비가 들어가게 되면 Ultra 속도밖에 안나오게 되고 최대 케이블 길이 또한 줄어들게 된다.