VME버스

VMEbus(Versa Module Eurocard 버스)는 물리적으로 유로카드 크기에 기반을 둔 컴퓨터 버스 표준이다.

 역사 
1979년 모토로라 68000 CPU를 개발하던 중, 소속 엔지니어인 잭 키스터(Jack Kister)는 68000 기반 시스템을 위한 표준화된 버스 시스템을 만들기로 결심했다. 모토로라 팀은 며칠 동안 브레인스토밍을 거쳐 VERSAbus라는 이름을 선정했다. VERSAbus 카드는  크기로 컸으며, 에지 커넥터를 사용했다. IBM 시스템 9000 기기 컨트롤러와 오토매틱스(Automatix) 로봇 및 머신 비전 시스템을 포함해 소수의 제품만이 이를 채택했다.

섬네일|left|VERSAbus 메모리 카드
나중에 존 블랙(John Black)이 키스터와 합류하여 사양을 다듬고 VERSAmodule 제품 개념을 만들었다. 블랙 밑에서 일하던 젊은 엔지니어 줄리 케이히(Julie Keahey)는 기존 카드를 새로운 VERSAbus에서 실행하는 데 사용되는 최초의 VERSAmodule 카드인 VERSAbus 어댑터 모듈을 설계했다. 모토로라 유럽의 스벤 라우(Sven Rau)와 맥스 로젤(Max Loesel)은 당시 표준화 과정 후반부에 있었던 유로카드 표준에 기반하여 시스템에 기계적 사양을 추가했다. 그 결과는 처음에는 VERSAbus-E로 알려졌으나 나중에 VERSAmodule Eurocard 버스의 약자인 VMEbus로 이름이 변경되었다(일부에서는 Versa Module Europa라고 부르기도 한다).

이 시점에서 시그네틱스(Signetics), 필립스(Philips), 톰슨(Thomson), 모스텍(Mostek)을 포함하여 68000 생태계에 참여한 여러 다른 회사들이 이 표준을 사용하기로 합의했다. 곧이어 IEC에 의해 IEC 821 VMEbus로, ANSI 및 IEEE에 의해 ANSI/IEEE 1014-1987로 공식 표준화되었다.

원래 표준은 기존의 유로카드 DIN 커넥터에 맞도록 설계된 16비트 버스였다. 그러나 더 넓은 버스 폭을 허용하기 위해 시스템에 몇 차례 업데이트가 있었다. 현재의 VME64는 6U 크기 카드에서 완전한 64비트 버스를, 3U 카드에서 32비트를 지원한다. VME64 프로토콜은 전형적으로 40 MB/s의 성능을 낸다. 다른 관련 표준들은 VME64x에서의 핫스와핑(플러그 앤 플레이), 단일 VMEbus 카드에 꽂는 더 작은 'IP' 카드, 그리고 VME 시스템들을 서로 연결하기 위한 다양한 상호 연결 표준들을 추가했다.

1990년대 후반에는 동기식 프로토콜이 유리한 것으로 입증되었다. 이 연구 프로젝트는 VME320이라 불렸다. VITA 표준 기구는 수정되지 않은 VME32/64 백플레인을 위한 새로운 표준을 요구했다. 새로운 2eSST 프로토콜은 1999년 ANSI/VITA 1.5에서 승인되었다.

수년에 걸쳐 VME 인터페이스에는 많은 확장 기능이 추가되어 VME 자체와 병렬로 통신하는 '사이드밴드' 채널을 제공했다. 몇 가지 예로는 IP 모듈, RACEway 인터링크, SCSA, VME64x 백플레인상의 기가비트 이더넷, PCI 익스프레스, RapidIO, StarFabric 및 인피니밴드가 있다.

VMEbus는 또한 밀접하게 관련된 표준인 VXIbus 및 VPX를 개발하는 데 사용되었다.
VMEbus는 STEbus와 같은 많은 후기 컴퓨터 버스에 강한 영향을 미쳤다.

 VME 초기 시절 
VMEbus의 아키텍처 개념은 1970년대 후반 모토로라에서 개발한 VERSAbus에 기반을 두고 있다. 이는 나중에 당시 모토로라 마이크로시스템즈 운영 부사장이었던 라이먼(림) 헤블(Lyman (Lym) Hevle)에 의해 Versa Module European의 약자인 "VME"로 이름이 바뀌었다. (그는 나중에 VME 마케팅 그룹의 설립자가 되었으며, 이 그룹은 이후 VME 국제 무역 협회 또는 VITA로 명칭이 변경되었다.)

모토로라의 존 블랙, 모스텍의 크레이그 매케나(Craig MacKenna), 시그네틱스의 세실 카플린스키(Cecil Kaplinsky)가 VMEbus 사양의 첫 번째 초안을 개발했다. 1981년 10월 서독 뮌헨에서 열린 System '81 전시회에서 모토로라, 모스텍, 시그네틱스/필립스, 톰슨 CSF는 VMEbus에 대한 공동 지원을 발표했다. 그들은 또한 사양의 개정판 A(Revision A)를 퍼블릭 도메인으로 공개했다.

1985년 에이텍(Aitech)은 미국 육군 TACOM의 계약에 따라 최초의 전도 냉각 방식 6U VMEbus 보드를 개발했다. 전기적으로는 호환되는 VMEbus 프로토콜 인터페이스를 제공했지만, 기계적으로 이 보드는 공랭식 실험실용 VMEbus 개발 섀시에서 교체하여 사용할 수 없었다.

1987년 말, 데일 영(Dale Young, DY4 Systems)과 더그 패터슨(Doug Patterson, Plessey Microsystems, 이후 Radstone Technology)이 공동 의장을 맡아 IEEE의 지시 아래 VITA 산하에 기술 위원회가 구성되었으며, 전기 및 기계적으로 완전히 호환되는 최초의 군용 전도 냉각 6U× 160mm VMEbus 보드를 제작했다. ANSI/IEEE-1101.2-1992는 이후 1992년에 비준 및 발표되었으며 모든 6U VMEbus 제품에 대한 전도 냉각 국제 표준으로 유지되고 있다.

1989년 퍼포먼스 테크놀로지스(Performance Technologies Inc.)의 존 피터스(John Peters)는 VMEbus에서 주소와 데이터 라인을 멀티플렉싱(A64/D64)하는 VME64의 초기 개념을 개발했다. 이 개념은 같은 해에 시연되었으며, 1990년 VMEbus 사양의 성능 향상안으로 VITA 기술 위원회에 제출되었다.

1993년에는 입출력 상호 연결 및 데이터 이동 하위 시스템으로 사용하기 위한 고속 직렬 및 병렬 하위 버스의 구현을 포함하는 기본 VME 아키텍처에 대한 새로운 활동이 시작되었다. 이러한 아키텍처는 메시지 스위치, 라우터 및 소규모 멀티프로세서 병렬 아키텍처로 사용될 수 있다.

1993년 6월 VITA의 ANSI 공인 표준 개발 기관 인정 신청이 승인되었다. 메자닌(mezzanine), P2 및 직렬 버스 표준을 포함한 수많은 다른 문서들이 이러한 기술의 퍼블릭 도메인 관리자인 VITA에 기탁되었다.

+ VME의 진화 토폴로지 연도 버스 사이클 최대 속도 (MB/s) VMEbus32 병렬 버스 Rev. A 1981  40 VMEbus IEEE-1014 1987  40 VME64 1994  80 VME64x 1997 2eVME 160 VME320 1997 2eSST 320

 설명 
여러 면에서 VMEbus는 68000의 핀들을 백플레인으로 뽑아낸 것과 동등하거나 유사하다.

그러나 68000의 핵심 기능 중 하나는 메모리 세그먼테이션이나 다른 "반기능(anti-features)"이 없는 플랫 32비트 메모리 모델이라는 점이다. 그 결과 VME는 68000과 매우 유사하지만, 68000 자체가 충분히 범용적이어서 대부분의 경우 이것이 문제가 되지 않는다.

68000과 마찬가지로 VME는 별도의 32비트 데이터 및 주소 버스를 사용한다. 68000 주소 버스는 실제로는 24비트이고 데이터 버스는 16비트이지만(내부적으로는 32/32임), 설계자들은 이미 완전한 32비트 구현을 고려하고 있었다.

두 가지 버스 폭을 모두 허용하기 위해 VME는 P1과 P2라는 두 개의 서로 다른 유로카드 커넥터를 사용한다. P1은 각각 32개의 핀으로 구성된 3개의 행을 포함하며, 처음 24개의 주소 비트, 16개의 데이터 비트 및 모든 제어 신호를 구현한다. P2는 주소 비트의 나머지 8비트와 데이터 비트 16비트를 포함하는 한 행을 더 포함한다.

블록 전송 프로토콜을 사용하면 단일 주소 사이클로 여러 번의 버스 전송이 발생할 수 있다. 블록 전송 모드에서 첫 번째 전송에는 주소 사이클이 포함되고 후속 전송에는 데이터 사이클만 필요하다. 슬레이브는 이러한 전송이 연속적인 주소를 사용하도록 보장할 책임이 있다.

버스 마스터는 두 가지 방식으로 버스를 해제할 수 있다. 완료 시 해제(Release When Done, RWD) 방식에서 마스터는 전송을 완료하면 버스를 해제하며, 이후의 모든 전송 전에 버스 중재를 다시 거쳐야 한다. 요청 시 해제(Release On Request, ROR) 방식에서 마스터는 전송 사이에 BBSY*를 계속 활성화하여 버스 점유를 유지한다. ROR을 통해 마스터는 버스 중재를 원하는 다른 마스터에 의해 버스 클리어(BCLR*) 신호가 활성화될 때까지 버스 제어권을 유지할 수 있다. 따라서 대량의 트래픽을 생성하는 마스터는 각 버스트의 첫 번째 전송에서만 버스 중재를 거침으로써 성능을 최적화할 수 있다. 이러한 전송 지연 시간의 감소는 다른 마스터들의 전송 지연 시간이 다소 높아지는 대가를 치른다.

주소 수식어(Address modifier)는 VME 버스 주소 공간을 여러 개의 뚜렷한 하위 공간으로 나누는 데 사용된다. 주소 수식어는 백플레인 상의 6비트 폭 신호 세트이다. 주소 수식어는 유효한 주소 비트 수, 권한 모드(프로세서가 사용자 수준 또는 시스템 수준 소프트웨어에 의한 버스 액세스를 구별할 수 있게 함), 그리고 전송이 블록 전송인지 여부를 지정한다.
아래는 주소 수식어의 일부 목록이다:

 16진수 코드 기능 설명 3f 표준 관리자 블록 전송 A24 블록 전송, 권한 있음 3e 표준 관리자 프로그램 액세스 A24 명령 액세스, 권한 있음 3d 표준 관리자 데이터 액세스 A24 데이터 액세, 권한 있음 3b 표준 비권한 블록 전송 일반 프로그램을 위한 A24 블록 전송 3a 표준 비권한 프로그램 액세스 A24 명령 액세스, 권한 없음 39 표준 비권한 데이터 액세스 A24 데이터 액세스, 권한 없음 2d 단기 관리자 액세스 A16 권한 액세스 29 단기 비권한 액세스 A16 권한 없음 액세스 0f 확장 관리자 블록 전송 A32 권한 블록 전송 0e 확장 관리자 프로그램 액세스 A32 권한 명령 액세스 0d 확장 관리자 데이터 액세스 A32 권한 데이터 액세스 0b 확장 비권한 블록 전송 A32 권한 없음 블록 전송 0a 확장 비권한 프로그램 액세스 A32 권한 없음 명령 액세스 09 확장 비권한 데이터 액세스 A32 권한 없음 데이터 액세스참고A16, A24, A32에서 An은 주소의 폭을 나타냄

VME 버스에서 모든 전송은 DMA이며 모든 카드는 마스터 또는 슬레이브가 된다. 대부분의 버스 표준에서는 다양한 전송 유형과 마스터/슬레이브 선택을 지원하기 위해 상당한 복잡성이 추가된다. 예를 들어 ISA 버스의 경우, 모든 통신이 호스트 CPU에 의해 처리되는 기존 "채널" 모델과 함께 이러한 두 가지 기능을 추가해야 했다. 이로 인해 VME는 각 카드에 더 복잡한 컨트롤러가 필요하지만 개념적 수준에서는 훨씬 간단하면서도 더 강력하다.

 개발 도구 
VME 버스를 개발하거나 문제 해결을 할 때 하드웨어 신호를 조사하는 것이 매우 중요할 수 있다. 로직 분석기와 버스 분석기는 신호를 수집, 분석, 디코딩 및 저장하여 사람들이 고속 파형을 여유 있게 볼 수 있도록 하는 도구이다.

VITA는 VME 시스템의 프런트엔드 설계 및 개발을 돕기 위해 종합적인 FAQ를 제공한다.

 VMEbus를 사용하는 컴퓨터 
VMEbus를 사용하는 컴퓨터는 다음과 같다:
 HP 743/744 PA-RISC 단일 보드 컴퓨터
 Sun-2부터 Sun-4까지
 HP 9000 산업용 워크스테이션
 아타리 TT030 및 Atari MEGA STE
 모토로라 MVME
 심볼릭스
 Advanced Numerical Research and Analysis Group의 PACE
 ETAS ES1000 고속 프로토타이핑 시스템
 여러 모토로라 88000 기반 데이터 제너럴 AViiON 컴퓨터
 Professional IRIS, Personal IRIS, Power Series 및 Onyx 시스템을 포함한 초기 실리콘 그래픽스 MIPS 기반 시스템
 Convergent Technologies MightyFrame

 핀 배열 

백플레인 소켓을 바라본 모습.From Table 7 - 1 J1/P1 Pin Assignments, ANSI/VITA 1-1994 (R2002)From Table 7 - 2 J2/P2 Pin Assignments, ANSI/VITA 1-1994 (R2002)

P1

 핀 a b c 1 D00 BBSY* D08 2 D01 BCLR* D09 3 D02 ACFAIL* D10 4 D03 BG0IN* D11 5 D04 BG0OUT* D12 6 D05 BG1IN* D13 7 D06 BG1OUT* D14 8 D07 BG2IN* D15 9 GND BG2OUT* GND 10 SYSCLK BG3IN* SYSFAIL* 11 GND BG3OUT* BERR* 12 DS1* BR0* SYSRESET* 13 DS0* BR1* LWORD* 14 WRITE* BR2* AM5 15 GND BR3* A23 16 DTACK* AM0 A22 17 GND AM1 A21 18 AS* AM2 A20 19 GND AM3 A19 20 IACK* GND A18 21 IACKIN* SERCLK A17 22 IACKOUT* SERDAT* A16 23 AM4 GND A15 24 A07 IRQ7* A14 25 A06 IRQ6* A13 26 A05 IRQ5* A12 27 A04 IRQ4* A11 28 A03 IRQ3* A10 29 A02 IRQ2* A09 30 A01 IRQ1* A08 31 −12V +5VSTDBY +12V 32 +5V +5V +5V

P2

 핀 a b c 1 사용자 정의 +5V 사용자 정의 2 사용자 정의 GND 사용자 정의 3 사용자 정의 예약됨(RESERVED) 사용자 정의 4 사용자 정의 A24 사용자 정의 5 사용자 정의 A25 사용자 정의 6 사용자 정의 A26 사용자 정의 7 사용자 정의 A27 사용자 정의 8 사용자 정의 A28 사용자 정의 9 사용자 정의 A29 사용자 정의 10 사용자 정의 A30 사용자 정의 11 사용자 정의 A31 사용자 정의 12 사용자 정의 GND 사용자 정의 13 사용자 정의 +5V 사용자 정의 14 사용자 정의 D16 사용자 정의 15 사용자 정의 D17 사용자 정의 16 사용자 정의 D18 사용자 정의 17 사용자 정의 D19 사용자 정의 18 사용자 정의 D20 사용자 정의 19 사용자 정의 D21 사용자 정의 20 사용자 정의 D22 사용자 정의 21 사용자 정의 D23 사용자 정의 22 사용자 정의 GND 사용자 정의 23 사용자 정의 D24 사용자 정의 24 사용자 정의 D25 사용자 정의 25 사용자 정의 D26 사용자 정의 26 사용자 정의 D27 사용자 정의 27 사용자 정의 D28 사용자 정의 28 사용자 정의 D29 사용자 정의 29 사용자 정의 D30 사용자 정의 30 사용자 정의 D31 사용자 정의 31 사용자 정의 GND 사용자 정의 32 사용자 정의 +5V 사용자 정의

P2의 a행과 c행은 보조 버스(예: STEbus)용으로 사용될 수 있다.

 각주 

분류:컴퓨터 버스
분류:실험입자물리학
분류:IEEE 표준
분류:68k 아키텍처