http://kin.naver.com/detail/detail.php?d1id=11&dir_id=110209&eid=MenypOSuiyr0hbrXrsIBBd+yj/bIMg7M&qb=QnVzIE11eA==&pid=feENEwoi5UhsscYqO2Gsss--480039&sid=SRmcHtdJGUkAAHvxSTs



VME는 어떤 기계 이름이 아니고 PCI나 VESA 등과 같이 컴퓨터(마이크로프로세서)의 인터페이스 버스 규격의 일종입니다.
VME 버스를 사용하여 구축한 시스템을 VME 기기라고 하고요.


일반규격사양은 http://www.focusi.com/back64.htm 를 참조하시고요.
아래는 http://www.autocontrol.co.kr/magazine/0010/011-015.htm 에서 발췌한 내용입니다.


----------------------- 발췌 ----------------------


VME란 무엇인가


Versa Module Eurocard의 약자로 보드규격인 Versa 보드를 유럽규격에 외형만 맞춘 것이 VME가 된 것이다. 이 당시 다른 계열의 Bus 체계로는 멀티 Bus I, II 등이 있었으나 우수한 아키텍처임에도 ISA Bus 위력에 눌려 사장됐다.
68K CPU에 잘 매치되는 Bus 체계이지만 잘 정의되고 쉬운 인터페이스로 인텔계열을 포함한 기타 CPU와 매치한 보드도 자주 볼 수 있다. 초기 규격 어드레스 24비트/데이터 16비트 표준 어드레스에서 A32bit/D32bit 확장 어드레스를 거쳐 현재 A64/D64 규격까지 확장되었다. 표 1은 VME 규격표의 일반적인 사양이다.


왜 VME를 사용하는가


VME를 사용하는 사용자중 대부분은 VME 규격 자체의 우수성 때문에 VME를 사용하기보다는 시스템 개발의 편이성 때문에 사용하는 경향이 있는 것 같다. 표 2에서는 이유들을 정리해보았다.
200여 개의 메이커에 생산된 보드를 사용하여 H/W 개발 없이 S/W 개발만으로 System 개발을 하게 됨으로, CPU 보드 개발부터 I/O 보드까지 개발하는 방법보다는 좀더 빨리 쉽게 개발을 할 수 있게 된다.
또한 Bus 구조이기 때문에 기존의 개발된 보드를 재사용하거나 추가, 변경이 기능별로 이루어지게 되어 인력 소모를 최소화 할 수 있다. 또 32bit~64bit급의 CPU 보드를 고신뢰성 있는 제품으로 만들기까지는 설계, 생산, 사후관리 등 단계를 수차례 반복해야 하는데 System 개발자 입장에서는 주목적이 System이지 CPU보드가 아니기 때문에 보드 단위로 이런 것을 구할 수 있는 VME를 쓰게 되는 것이다. 그리고 대형 System이 되면 독자적인 형태의 통신체계나 OS체계, Bus 체계보다는 공업표준에 의거한 제품일수록 최종소비자에 신뢰감을 줄 수 있고, 혹 이것을 생산한 회사가 없어지더라도 연속적 증설 및 유지보수가 가능하다는 안심을 줄 수 있다. 뿐만 아니라 DIN(유럽규격)의 RACK과 커넥터 등의 진동이나 분진 가스 등에 강한 내환경성을 가지므로 System 고장의 상당한 원인인 접촉불량을 원천적으로 줄일 수가 있기 때문에 기계 내에 내장하는 컨트롤러로의 사용도 가능하다. 실제 많은 수의 PLC 업체에서 확장 커넥터를 DIN 커넥터로 쓰고 있다.
마지막으로 VME 본연의 기능에 와서 멀티프로세서 기능인데, 멀티프로세서가 백 프레인 최대 슬롯수인 21개까지 가능하므로 많은 수의 S/O를 제어할 때, 필요한 다중 프로세서에 의한 전담 I/O 컨트롤이 가능해진다.
필자의 사견으로도 첫 번째 개발시간 단축, 이 이유만으로도 VME Bus 체계를 사용해야 한다고 생각한다. 그러면 반드시 VME Bus만이 개발 시간이 단축되는 것이 아니라 다른 방법들 즉, 흔히 할 수 있는 PC 또는 워크스테이션과 PLC 방법으로도 가능하다고 반문할 독자도 있을 것이다.
이럴 때는 다른 여러 일들도 타당하지만 LAN이 아닌 Bus 레벨의 다중 프로세서 System 설계는 다른 차원의 설계 방법이고 결과도 틀리다고 말할 수 있다. 즉, PC와 PLC가 Bus 레벨로 결합된 설비는 없으며, 만약 있다면 단순히 Serial이나 LAN으로 연결된 System과는 상당히 다른 일을 할 수 있다. 가령 데이터 로거(수집장치)를 겸할 때 LAN 속도 이상의 데이터가 발생하는 동작불능 상태가 되거나 응답속도 개별 장치들의 성능을 상회하는 System 설계는 처음부터 다시 설계하여야 한다.


VME Bus의 특징


VME Bus의 구조는 표 3과 같이 크게 네 개의 Bus 신호군으로 나눌 수 있다.
데이터 전송은 마스터/슬레이브 보드간의 읽기/쓰기 동작 때 필요한 신호선들로 어드레스/데이터 라인 및 기타 컨트롤 신호선들로 되어 있다. 표 1의 규격과 같이 어드레스 신호의 데이터 신호를 혼합하지(MUX) 않는다. 그림 1에서와 같이 MUX와 개별 Bus 신호와 차이를 보이고 있다.
VME에서는 A16/D16, A24/D32, A32/D32까지는 개별 BUS 체계를 쓰고 있어 총 64개선이 사용되지만 64확장일 때는 개별로 사용하면 128개 선이 필요하게 되고 물리적으로 선간 거리가 멀어지게 되어 지연이 생기고 외형이 바뀌어야만 커넥터를 수용할수 있다. 그래서 기존의 64개선에 어드레스/데이터를 MUX하게 되고 이것을 제어하는 타이밍 조절회로가 부가되어 64bit가 구현되어 있다.
32bit까지는 개별 Bus체계인데 이것을 8bit 시절의 회로설계 개념을 32bit까지 확장한 셈이므로 쉽게 모드설계에 접근할 수 있도록 해준다. 데이터 전송시 모든 보드는 마스터/슬레이브 관계에 있게 되는데 VME에서 마스터는 CPU를 의미하고 슬레이브는 메모리 또는 I/O보드를 의미한다.
데이터 전송방식은 컴퓨터와 프린터 사이에서 사용하고 있는 핸드쉐이크방식을 사용해 다소 느려도 가장 신뢰성 있게 Bus 타이밍을 맞추게 해준다(그림 2). 이 방식은 도선의 길이가 길어지더라도 그 도선 지연시간만큼 Bus 사이클이 더해지므로 마스터 보드의 CPU 속도와 무관하게 데이터 전송이 가능하다(그림 3).
또 데이터 전송 에크 신호(DTACK)에 의해서만 전송사이클이 종료하게 됨으로, 혹 슬레이브 중에 그 어드레스를 디코드 해주는 슬레이브가 없으면 마스터는 그 사이클을 종료하지 못하게 영원히 어드레스/데이터를 유지하게 된다. 이것을 응용하여 간단한 매뉴얼 DTACK 신호 발생기를 만들어 싱글 스텝 디버거로 사용하기도 한다. 또한 마스터에서는 이럴 경우가 데드락과 유사하므로 BUS 신호 감지기를 붙여 어드레스 신호가 500μs~1ms 이상 지속하게 되면 CPU의 ‘BUS ERROR’신호로 예외 처리를 할 수 있게 준비해야 한다.
데이터 전송시 마스터에서는 AM코드라는 것이 어드레스 신호와 함께 슬레이브로 전송되고, 슬레이브 어드레스 신호와 함께 이것을 디코트하여 칩 셀렉터 신호를 만들어내야 하는데 어드레스가 어드레스 레인지를 나타낸다면 이 AM코드는 어드레스 스페이스를 나타내게 된다. 그림 4에 VME에서 엑세스 가능한 모든 영역을 도식으로 표시했다.
그림 4와 같이 계산한다면 32bit 어드레스 영역에서 16 GB공간과 24bit 영역에서 64MB의 공간, 16bit 영역에서 128K 공간 등이 사용 가능하므로 총 16G, 64M, 128Kbyte의 공간이 32bit 영역까지의 공간이다. 이것에 64bit 영역까지 더해지게 되면 그 영역은 무한대에 가깝다. 대부분 프로그램 모듈은 코드 영역과 데이터 영역으로 나누어지며 이것은 다시 일반 유저와 시스템관리자인 수퍼 유저용으로 나누게 된다.
또 다시 이것을 VME에서는 16/24/32로 나누게 되는데 이것을 각각 메모리에 설치하려면 불가능하므로, 실제 설계에서는 중첩되게 메모리를 설계해 메모리 맵에 의하여 4G 내에서 구별되게 한다.
표 4에서 4M 로컬 메모리를 가지고 있는 32bit CPU 보드의 관점에서 보는 VME쪽 메모리 맵으로 프로그래머는 이것을 사용하게 된다. 그림 5와 같이 CPU보드는 32bit이므로 항상 32bit 어드레스만 출력되고 이중 일부 영역을 16M, 64K씩 펑크내서 F0~로 시작하면 회로적으로 AM코드가 16bit가 되게하는 AM코드 제너레이터가 마스터보드에 있어야한다. 이것은 회로를 설계하는 방식이므로 반드시 모든 CPU보드가 일치하지 않는다. 그러므로 CPU보드의 메모리 맵을 세심히 살필 필요가 있다.
인터럽트 처리를 7레벨의 우선순위 방식으로 처리된다. IRQ1~7 중 7레벨이 가장 높으며 인터럽트를 걸어주는 인터럽트 회로와 인터럽트를 수신 처리하는 인터럽트 핸들러의 관계가 필요하다.
인터럽트 절차에 관한 예를 도식화 했다(그림 6).
인터럽트 레벨이 같더라도 벡터값을 달리 송신하는 것으로 모든 서비스를 받을 수 있으므로 인터럽트 요청이 7레벨이어도 인터럽트를 7개만 수신할 수 있는 것이 아니라 인터럽트에서 이벤트 상황만 잘 저장하고 있으면 여러 인터럽트를 처리할 수 있다. 또한, 인터럽트 핸들러와 인터럽트 페어를 둘 수 있다. 그러나 하나 인터럽트에 의한 신호는 오직 하나의 핸들러에 수신돼야 한다. 즉, 하나의 인터럽트를 복수의 핸들러가 처리할 수 없다(그림 7).
Bus 중재 신호는 4개의 Bus 요청신호(BR0~ BR3)와 데이지 체인 신호로 이루어지며, 동시에 4개의 요청신호를 중재기(아비터)에서 선택하여 Bus 사용권을 주게 된다.
그러므로 4개의 마스터(Bus 요청자)까지도 평등하게 사용권을 줄 수 있으나(라운드 로빈 아비터) 다섯 번째 마스터부터는 데이지 체인에 의해 연결하기 때문에 불평등하게 사용권을 얻게 된다. 즉, 앞의 4개의 마스터 요청이 없어야만 Bus를 사용할 수 있게 된다.
또한 중재기는 아니지만 VME Bus상의 모든 마스터를 페어 마스터로 설정해 놓으면 마치 이더넷에서 충돌을 회피하면서 선로를 엑세스하듯이 Bus상에 사용하는 마스터가 없으면 마스터쉽을 발동하는 방법으로 모든 슬롯에 균등하게 마스터쉽을 줄 수 있지만 모든 보드의 Bus 요청 방법을 이 방법으로 설정해야만 한다. 마스터쉽 요청 방법은 아래 3가지 방법을 쓰며 ROR과 페어 방법을 동시에 쓸 수 없다(그림 8).
① RWD(Release When Done 요청기)
Bus 사용을 마친 후 즉시 Bus를 풀어서 다른 마스터가 사용할 수 있게 하는 방법. 그러나 동일 마스터가 재차 Bus를 사용하려하면 사용할 때마다Bus 중재기로부터 중재를 받아야만 한다.
② ROR(Release On Request 요청기)
한번 획득한 Bus 사용권을 사용이 끝나더라도 풀어주지 않고 계속 Bus를 물고 있다가 다른 마스터가 Bus 요청을 하면 그 때 Bus를 풀어줌. 동일 마스터가 빈번히 Bus를 사용할 때 아비터를 거치지 않으므로 Bus 효율이 좋음.
③ FAIR 요청기
Bus상에 어떤 Bus 마스터나 Bus 요청이 없을 때만 Bus 요청을 하는 이더넷 방식. 모든 슬롯의 마스터에 균등하게 사용이 할당됨.


VME System Design 경향


VME 보드 제품은 초기에는 CPU보드, 메모리 보드, S/O 보드, DISK I/O 보드, LAN I/O 보드 등으로 나누어져 있었으나, 실장기술의 발달로 이 모든것은 하나의 보드로 만든 싱글보드 컴퓨터(SBC)가 주류이다(그림 9).
보드로 사용되는 VME I/O 보드들은 기본기능 이외에 추가 사용할 통신 I/O 보드 또는 AD, DA, DIO 같은 제어 시스템용 I/O 보드 등이 있고(그림 10), DSP와 같은 보조 프로세서가 추가될 때는 I/O와 DSP간에 FPPP(160Mbyte/sec)(www.fpdp. com) 같은 고속의 Bus 수단을 사용하는 등 VME Bus를 SBC간 또는 DSP간의 프로세서 통신채널로 쓰는 경향이 많아지고 있다. 또한 I/O 보드들도 AD, DA, DIO를 한 보드에 실장이 가능하게 IP, PMC, PC-Mip 등의 모듈화로 가고 있다(그림 11, www. groupipc.com).
다음으로 두드러지는 특징으로 과거의 모토로라 일변도의 VME CPU 편중에서 PC규격으로의 대대적인 전환이 이루어지고 있는 점이다.
프로세서 성능이나 가용 소프트웨어 등이 월등히 우수하기 때문이다. 또 그림 12와 같이 고속의 PC와의 결합솔루션도 속속 발표되고 있어 과거에 개발이 힘들었던 것을 PC를 끌어안음으로 해결하고 있다(www.sbs.com).
속도의 개선도 꾸준히 계속되고 있어 VME320, VME 1000도 얘기되고 있다(www.vita.com). 혹자는 거대한 PC산업구조가 VME Bus 시장을 대체할 것이라고 하지만 아직까지 VME만한 안정된 Bus 체계가 나오고 있지는 않고 있다.
오히려 VME SBC에 PC를 아키텍처로 적극 수용하여 VME PC(www.sbs.com) 등이 보완해주고 있어 계속 유지 발전되어 나아갈 것이다.

'KB > hardware soc' 카테고리의 다른 글

WinCPUL로 GAL 프로그래밍 하기  (0) 2008.11.15
VGA 구현  (1) 2008.11.12
ps/2 keyboard 동작  (0) 2008.11.07
GAL PLD programming  (0) 2008.11.05
어드레스 버스, 데이터 버스 TTL  (0) 2008.11.05

+ Recent posts