의견.png

버스 (컴퓨터)

해시넷
jingayoun (토론 | 기여)님의 2021년 2월 3일 (수) 17:59 판
이동: 둘러보기, 검색

버스(bus)란 컴퓨터 안의 부품들 간에, 또는 컴퓨터 간에 데이터와 정보를 전송하는 통로(통신 시스템)이다. 이러한 표현에는 관련된 모든 하드웨어 부품들(선, 광 파이버 등) 및 통신 프로토콜을 포함한 소프트웨어를 아우른다. 버스라인(bus line) 또는 컴퓨터 버스라고도 한다.

개요

전형적인 디지털 컴퓨터는 많은 레지스터와 레지스터들 사이의 정보 전송을 위한 경로를 가져야하는데, 시스템은 이를 위해서 각 레지스터 사이를 연결하는 번거로움 대신, 공통의 버스 시스템이라는 효율적인 방법을 사용한다.[1] 컴퓨터 버스는 컴퓨터의 구성요소를 서로 연결하고 데이터 전달을 위한 통로로, 컴퓨터 메인보드 내 프로세서, 메모리, 주변장치들을 서로 연결하여 시스템이 원활하게 돌아갈 수 있도록 데이터 전송 역할을 하는 공통 통로다. 컴퓨터 버스는 크게 내부 버스(internal bus)와 외부 버스(external bus)로 나눌 수 있다. 내부 버스는 주로 컴퓨터 중앙 처리 장치(CPU) 칩 내부의 신호를 연결하는 버스로, 중앙 처리 장치 내의 레지스터 들을 연결시켜 준다. 외부 버스는 구조에 따라 시스템 버스와 I/O 버스로 나눌 수 있고, 신호 기능에 따라 데이터 버스, 주소 버스, 제어 버스 등으로 나눌 수 있다. 컴퓨터 버스가 동작할 때는, 개별 장치에 대한 접속, 접근 방법, 버스 경합 시 중재 방법, 장치의 연결 방법, 시스템 성능 향상을 위한 직접 기억장치 접근 방식(Direct Memory Access, DMA)방법 등을 고려하여야 한다. 또한 버스 중재 방식에는 데이터 전송 통로의 개수를 최소화한 직렬버스(serial bus)와 여러 개의 통로를 만들어 데이터 전송을 동시에 처리하는 병렬버스(parallel bus)가 있다. 버스 방식을 이용하여 여러 시스템 간 데이터 연계를 구현하는 것을 ESB 연계라고 한다.[2] 공유 메모리 멀티 프로세서 시스템에서 프로세서는 시스템 버스를 통하여 공유 자원에 대한 접근을 오구한다. 공유 자원이 사용되고 있지 않을 경우에는 바로 사용을 승인하지만, 공유 자원이 사용되고 있거나 동시에 버스를 요구하는 경우에는 조금 다르다. 공유 자원이 사용되고 있을 경우에는 선점 프로세스의 사용 종료까지 대기 하고, 동시에 버스를 요구하는 경우에는 공유 자원에 대한 충돌을 해결하기 위한 중재 동작을 수행한다.[1]

특징

버스는 구성 요소들 간에 교환할 각종 정보들을 전송하는 선으로 구성되어 있다. 버스 선의 수는 한 번에 전송하는 데이터 비트들의 수, 기억장치 주소 비트들의 수, 제어 신호들의 수에 따라 결정된다. 소형 컴퓨터의 경우 50~100 개의 신호 선들을 사용하고, 중대형 급 시스템의 경우 100개 이상의 신호 선들을 사용한다. 버스의 속도를 나타내는 척도로 버스 대역폭을 사용하는데, 이것은 단위 시간당 전송할 수 있는 데이터양을 나타내며, 버스 클록의 주기에 의해 결정된다. 버스의 기본적인 동작에는 읽기와 쓰기가 있다. 쓰기 동작을 할 때는, 버스 마스터가 버스 사용권을 획득한 뒤, 버스를 통하여 주소와 데이터 및 쓰기 신호를 전송한다. 읽기 동작을 할 때는 버스 마스터가 버스 사용권을 획득한 뒤, 주소와 읽기 신호를 보내고, 데이터가 전송되어 올 때까지 대기한다.[3] 버스는 한 종류의 버스에 그 종류의 신호만 전달하는 전용 버스와, 한 종류의 버스에 여러 신호를 같이 보낼 수 있는 다중화 버스 두 가지 유형이 있다.

구조에 따른 분류

시스템 버스

중앙 처리 장치와 메모리를 연결하는 것을 시스템 버스라고 한다. 시스템 버스에 연결된 각 장치의 속도가 다 다르기 때문에, 이들을 효율적으로 연결할 필요가 있는데 그래서 나온 것이 바로 다중 버스 계층이다. 단일 버스 구조는 우리가 흔히 생각하는 버스의 구조로, 심각한 병목현상이 일어난다. 다중 버스 계층 구조에는 2계층, 3계층이 있다. 2계층 다중 버스 구조는 확장 버스와 지역 버스를 사용하여 계층적인 버스 구조를 이루게 된다. 각 장치의 속도와 사용 빈도에 맞게 계층적으로 구조를 만들어 버스를 사용하므로, 병목현상의 문제를 줄일 수 있다. 3계층 다중 버스 구조는 핵심 장치(CPU, RAM, 캐시 기억장치) 외 나머지 주변 장치(입출력장치 등)의 특징을 더욱 세분화하여 확장버스 외에 고속버스를 하나 더 추가해서 삽입한 것을 말한다. 병목현상의 문제 제거 정도가 가장 높은 방식이다.[4]

I/O 버스

메모리와 다른 입출력 장치와 통신을 하는 것을 I/O 버스라고 한다.[5]


신호 기능에 따른 분류

주소 버스

주소 버스(Addredd Bus)는 메모리의 주소나 I/O Unit의 포트 번호를 전달하여, 데이터의 근원지나 목적지의 일정한 메모리 주소를 전달하는 버스다. 중앙 처리 장치와 메모리는 단방향으로 데이터 전달이 가능한 버스를 이용함으로써 주소 전달은 중앙 처리 장치에서 메모리로만 가능하고, 중앙 처리 장치와 메모리는 I/O Unit과 양방향으로 데이터 전달이 가능한 버스를 사용한다. 주소 버스의 폭은 최대 기억장치의 용량을 결정짓는데, 32개의 주소 버슬르 지닌 컴퓨터 시스템은 2^32개의 메모리 위치를 할당할 수 있다.[6]

데이터 버스

데이터 버스(Data Bus)는 말 그대로 데이터를 전달하는 버스로, 시스템 모듈들 간의 데이터 이동 경로를 제공한다. 주로 32,64,128 또는 그 이상의 분리된 선들로 구성되어 있으며, 선의 수는 한 번에 전송할 수 있는 비트 수를 결정 지어 주는데 이것은 CPU가 수용할 수 있는 데이터의 크기인 워드(Word)와 관련이 있다. 각 구성 요소(중앙 처리 장치, 메모리, I/O Unit)는 양방향으로 데이터 전달이 가능한 버스를 사용한다.

제어 버스

제어 버스(Control Bus)는 제어신호를 전달하는 역할을 한다. Read와 Write 신호가 전달되는 것으로, 각 구성 요소(중앙 처리 장치, 메모리, I/O Unit)는 양방향으로 데이터 전달이 가능한 버스를 사용한다.[7] 쉽게 설명하자면 데이터 버스와 주소 버스를 제어하는 역할로, 데이터 버스와 주소 버스는 공유하는 선들의 집합이기 때문에 이들을 제어하기 위한 수단이 반드시 필요하다. 다르게 말하면 중앙 처리 장치가 기억장치 혹은 I/O 장치 사이에 데이터를 전송하기 위한 신호 선들의 집합이다. 제어 버스를 통해 전달되는 신호에는 기억장치, I/O 장치와 데이터 교환을 위한 제어 신호, 버스 중재를 위한 신호, 인터럽트 매커니즘을 위한 전달 신호, 버스 클록 신호, 리셋 신호 등이 있다.

기억 장치, I/O 장치와 데이터 교환

제어 버스로 전달되는 제어 신호 중 기억 장치 및 I/O 장치와의 데이터 교환을 위해 전달되는 제어 신호로 기억장치 쓰기 신호, 기억장치 읽기 신호, I/O 쓰기 신호, I/O 읽기 신호가 있다. 기억장치 쓰기 신호는 버스에 실린 데이터를 주소가 지정하는 기억장소에 저장하도록 제어하는 신호다. 기억장치 읽기 신호는 주소가 지정하는 기억장소의 내용을 읽어서 버스에 실리게 하는 제어 신호다. I/O 쓰기 신호는 버스에 실린 데이터를 지정된 I/O 장치로 출력되게 하는 제어 신호고, 이와 반대로 I/O 읽기 신호는 지정된 I/O 장치로부터 데이터를 읽어 데이터 버스에 실리게 하는 제어신호다.

중재 버스

버스 중재를 위한 제어신호들의 집합이다. 버스의 요소들 중, 버스 사용의 주체가 되는 요소들을 버스 마스터(Bus Master)라고 한다. 중앙 처리 장치, 기억장치 모듈, I/O 제어기 등이 될 수 있다. 버스에 접속된 두 개 또는 그 이상의 버스 마스터들이 동시에 버스를 사용하고자 할 때, 순서대로 한 개의 마스터씩 버스를 사용하게 해주는 동작을 버스 중재(Bus Arbitration)이라고 한다. 중재 버스(Arbitration Bus)는 버스 중재를 위한 신호 선들의 집합으로, 버스 요구 신호, 버스 승인 신호, 버스 사용중 신호가 있다. 버스 요구 신호는 버스 마스터가 버스 사용을 요구했음을 알리는 신호이고, 버스 승인 신호는 버스 사용을 요구한 마스터에게 사용을 허가하는 신호, 버스 사용중 신호는 현재 버스가 사용되고 있는 중임을 나타내는 신호다.

인터럽트 버스

인터럽트 버스(Interrupt Bus)는 인터럽트 매커니즘을 위한 제어 신호들의 집합이다. I/O 장치가 인터럽트를 요구했음을 알리는 신호인 인터럽트 요구 신호와, 중앙 처리 장치가 인터럽트 요구를 인식했음을 알리는 신호인 인터럽트 확인 신호가 있다.[3]

동작 타이밍에 따른 분류

동기식 버스

동기식 버스는 모든 버스 동작들이 같은 시간에 공통적으로 발생하는 것이다. 이때 시간은 버스가 가지고 있는 Clock을 기준으로 하며, 빠르고 인터페이스 논리회로가 간단하다는 장점이 있지만, 버스 Clock의 주기가 가장 오래 걸리는 버스 동작의 소요 시간을 기준으로 결정되기 때문에, Clock 주기보다 더 짧은 시간이 걸리는 버스 동작의 경우에는 동작이 완료된 후에도 다음 주기가 시작될 때까지 대기하여 시간 낭비가 발생할 수도 있다. 소규모 컴퓨터에서 효과적이다.

비동기식 버스

비동기식 버스는 동기식 버스와 달리 시간을 따로 정하지 않고, 관련된 다른 버스 동작의 발생 여부에 따라 결정하는 것이다. 서로 데이터를 주고받을 준비가 되어있는지 확인하는 핸드쉐이킹 프로토콜을 사용하여 수신측에서 준비가 되었으면 바로 전송을 하는 방식이다. 장점은 따로 정해진 시간이 없기 때문에 시간 낭비가 적다는 것이고, 단점은 회로 구성이 복잡하고 핸드쉐이킹하는 과정이 필요해서, 속도가 동기식에 비해 느리다.[6] 일반적인 컴퓨터 시스템에서 사용된다.

컴퓨터 구성 요소 간 통신

중앙 처리 장치와 메모리

적재(Load)와 저장(Store) 명령에 의해 수행되는 통신이다. 적재 명령을 하면, 주소 버스는 메모리에서 불러올 데이터가 저장된 주소값을 중앙 처리 장치에서 메모리로 전달한다. 메모리를 읽으면, 신호가 메모리를 읽었다고 중앙 처리장치에서 메모리로 신호를 보낸다. 데이터 버스는 지정한 메모리에 저장된 값을 메모리에서 중앙 처리 장치로 전달한다. 저장 명령을 하면, 주소 버스는 메모리에서 해당 데이터를 저장할 주소 값을 중앙 처리 장치에서 메모리로 전달한다. 신호 버스가 메모리를 읽었다는 신호를 중앙 처리 장치에서 메모리로 보내고, 데이터 버스는 저장할 데이터를 중앙 처리 장치에서 메모리로 전달한다.

중앙 처리 장치와 I/O Unit

입력(Input)과 출력(Output) 명령에 의해 수행된다. 입력 명령이 오면, 주소 버스는 해당 입출력 장치의 포트 번호를 중앙 처리 장치에서 I/O Unit으로 전달한다. 신호 버스는 I/O를 읽었다는 신호를 중앙 처리 장치에서 I/O Unit로 전다하고, 데이터 버스는 해당 입출력 장치가 I/O Unit에서 중앙 처리 장치로 전달한다. 중앙 처리 장치와 I/O unit의 통신에는 인터럽트도 해당한다. 입출력 장치가 제어 신호를 통해 인터럽트 요청을 보내면 중앙 처리 장치에 입출력 작업을 요청할 수 있다. 인터럽트 요청은 입출력 준비를 마친 I/O Unit이 중앙 처리 장치에 입출력 작업의 시작을 요청하는 것이고, 인터럽트 확인은 중앙 처리 장치가 입출력 동작을 수행할 것을 입출력 장치에 통보하는 것이다.

메모리와 I/O Unit

I/O Unit과 메모리의 통신은 중앙 처리 자치를 이용하지 않고, 직접 기억장치 접근 방식으로 통신한다. 직접 기억장치 접근 제어기는 중앙 처리 장치를 대신해 주소 버스와 제어 버스에 신호를 전달하고, 통신을 시작하기 전에 중앙 처리 장치에 버스 사용에 대한 허가를 받아야 한다.[7]

버스 중재 방식

버스 중재란 버스 경합이 발생하는 경우, 어떤 기준에 따라 버스 마스터들 중 한 개씩만 선택하여 순서대로 버스를 사용할 수 있게 해주는 동작이다. 버스 경합은 한 개의 시스템 버스에 접속된 여러 개의 버스 마스터들이 동시에 버스 사용을 요구하는 현상으로, 버스 중재에 사용하는 하드웨어 모듈을 버스 중재기라고 한다.

제어 신호의 연결 구조에 따른 분류

  • 병렬 중재 방식(Parallel arbitration scheme)은 각 버스 마스터들이 독립적인 버스 요구 신호를 발생하고, 버스 승인 신호를 받는 방식으로, 버스 마스터들의 수와 같은 개수의 버스 요구 선, 승인 신호 선이 필요하다.
  • 직렬 중재 방식(Serial arbitration scheme)은 버스 요구와 승인 신호 선이 각각 한 개씩만 존재하며, 각 신호 선을 버스 마스터들 간에 직렬로 접속하는 방식이다.

버스 중재기 위치에 따른 분류

  • 중앙집중식 중재 방식(Centralized arbitration scheme)은 시스템 내에 버스 중재기가 한 개만 존재하는 방식으로, 버스 마스터들이 발생하는 버스 요구 신호들은 하나의 중재기로 보내지고, 중재기는 정해진 중재 원칙에 따라 선택한 버스마스터에게 승인 신호를 발생한다.
  • 분산식 중재 방식(decentralized arbitration scheme)은 일반적으로 각 버스 마스터가 중재기를 한 개씩 가져, 여러 개의 버스 중재기들이 존재하며, 버스 중재 동작이 각 마스터의 중재기에 의하여 이루어진다.

우선순위 결정 방식에 따른 분류

각 버스 마스터에 지정된 우선순위가 고정되어 있는 고정-우선순위 방식(fixed-priority scheme)과, 우선 순위를 변경할 수 있는 가변-우선순위 방식(dynamic-priority scheme)이 있다.

폴링 방식

폴링 방식(polling scheme)의 원리는 버스 사용을 원하는 마스터가 있는지를 버스 중재기가 주기적으로 검사하여 사용 승인 여부를 결정하는 방식이다.

하드웨어 폴링 방식

버스 중재기와 각 버스 마스터 간에 별도의 폴링 선이 존재한다. 공통의 BREQ선과 BBUSY 선이 각각 한 개씩 존재하고, 2진 코드화된 폴링 주소를 이용하면, 폴링 선의 수가 N개로 감소한다. 중재기는 폴링 주소를 발생하여 검사할 마스터를 지정한 다음에, 그 마스터가 버스 사용을 원하는지 묻는다. 지정된 마스터가 버스 사용을 원하면 BREQ 신호를 설정한다. BREQ 신호가 설정되면 중재기는 현재 검사 중인 마스터에게 버스 사용을 허가하고, 지정된 마스터가 버스 사용을 원하지 않으면 다음 마스터들에 대한 검사를 순서대로 진행한다. 우선순위는 중재기가 마스터를 검사하는 순서에 의해 결정되며, 검사할 마스터의 번호는 2진 카운터를 이용하여 결정한다.[3]

소프트웨어 폴링 방식

구성 자체는 하드웨어 폴링 방식과 같지만, 버스 중재기에 프로그램을 실행할 수 있는 프로세서를 포함시켜 지능을 부여한다. 따라서 폴링 할 마스터의 주소를 기억하고, 폴링 순서를 변경하는 것이 가능하다. 속도는 느리지만 융통성이 높고, 결합 마스터를 폴링 순서에서 제외시킴으로써 시스템 결함 허용도를 높인다. 중재에 소요되는 시간이 길기 때문에 분산 시스템의 공유 버스 또는 메시지 전송 시스템의 중재 방식으로 적절하다.[8]

조합 버스 중재 방식

고정 우선순위

  • 중앙집중식: 모든 버스 마스터들이 버스 중재기에 접속하여, 중재기와 가장 가까이 위치함 버스 마스터부터 높은 우선 순위를 가진다.
  • 분산식: 모든 버스 마스터들이 중재기를 한 개씩 보유하고 있어, 각 중재기는 자신보다 더 높은 우선순위를 가진 마스터들의 버스 요구 신호들을 받아 검사한다. 그들이 버스 사용 요구를 하지 않은 경우에만 자신의 버스 마스터로 버스 승인 신호를 발생한다. 승인 신호를 받은 버스 마스터는 BBUSY 신호를 검사하여, 비활성화 상태(다른 마스터가 버스를 사용하지 않는 상태)일 때 버스 사용을 시작한다. 중앙집중식에 비하여 중재회로가 간단하기 때문에, 동작속도가 빨라지지만, 고장을 일으킨 중재기를 찾아내는 방법이 복잡하고, 한 중재기의 고장이 전체 시스템에 영향을 미칠 수가 있다.

가변 우선순위

시스템의 상태 또는 조건에 따라 각 버스 마스터들의 수선순위를 계속 변화시키는 방식으로 중재 회로가 복잡하지만, 모든 마스터들이 공정하게 버스를 사용할 수 있게 해준다.

  • 회전 우선순위(rotating priority)방식: 중재 동작이 끝날 때마다 모든 마스터들의 우선순위가 한 단계씩 낮아지고, 가장 우선순위가 낮았던 마스터가 최상위 우선순위를 가지도록 하는 방법이다. 일단 버스 사용 승인을 받은 마스터는 최하위 우선순위를 가지며, 바로 다음에 위치한 마스터가 최상위 우선순위를 가지도록 하는 방법을 Acceptance-deependent식 회전 우선순위 방식이라고 한다.
  • 임의 우선순위 방식: 각 중재 방식이 끝날 때마다 우선순위를 임의로 결정
  • 동등 우선순위 방식: 모든 마스터들이 동등한 우선순위를 가지며, FIFO(First in first out)알고리즘을 사용한다.
  • 최소-최근 사용(Least-Recently Used, LRU) 방식: 최근 가장 오랫동안 버스를 사용하지 않은 버스 마스터에게 최상위 우선순위를 할당하는 것으로, 회로가 매우 복잡하다.

중앙집중식 직렬 중재 방식

하나의 중재 신호선(BGNT)이 데이지-체인(daisy-chain) 형태로 모든 버스 마스터들을 직렬로 연결하는 방식으로, 우선순위는 버스 승인 신호선이 연결된 순서대로 결정한다. 한 개 또는 그 이상의 버스 마스터가 버스 사용을 요구하면, 공통의 BREQ 신호가 설정되고, 버스 중재기는 데이지 체인의 첫 번째에 접속된 마스터로 승인 신호(BGNT)를 전송한다. BGNT 신호를 받은 마스터는 만약 버스 사용을 요구한 상태라면, 버스 사용권을 가진다. 만약 버스 사용을 요구하지 않은 상태라면, 승인 신호를 다음에 연결된 마스터에게로 통과시킨다. 승인 신호는 버스를 요구한 마스터에게 도달할 때까지 계속 통과하고, 버스 요구를 보낸 마스터들 중 중재기에 가장 가까이 위치한, 우선순위가 가장 높은 마스터에게 승인 신호가 전달되면 그 마스터가 버스 사용권을 획득한다.

분산식 직렬 중재 방식

데이지-체인 버스 승인 신호가 버스 중재기들을 순환형으로 접속시킨다.버스 사용권을 부여 받은 마스터가 버스 사용을 시작하는 순간에 그 마스터의 중재기는 자신의 우측에 위치한 마스터의 중재기로 접속된 데이지-체인 버스 승인 신호를 설정한다. 만약 그 마스터가 버스 사용을 신청하고 기다리던 중이었다면, 중재기는 즉시 데이지-체인 버스 승인 신호를 받아 BGNT 신호를 발생시킨 뒤 마스터로 전송한다. 데이지-체인 버스 승인 신호를 받은 마스터가 버스 요구를 하지 않은 상태라면, 그 신호를 우측의 다음 중재기로 통과시키고, 그러한 과정은 버스를 요구한 마스터에 도달할 때까지 반복한다. 각 마스터의 우선순위가 계속 바뀌는 방식이기 때문에, 버스 사용 승인을 받으면 다음 중재 동작에서는 최하위 우선순위를 가진다. 버스를 사용한 마스터의 바로 우측에 위치한 마스터가 최상위 우선순위를 가지고, 순환형 구조에서 데이지-체인 버스 승인 신호가 연결된 순서대로 우선순위가 하나씩 감소한다. 분산식 직렬 중재 방식은 어느 한 지점에만 결함이 발생해도 전체 시스템의 동작이 중단된다는 단점이 있다.[3]

규격

시스템 관리 버스

시스템 관리 버스(System Management Bus, SMB)는 마더보드에 있는 저속도 장치들과 통신하는데 사용하는 간단한 2선 버스다. 주로 랩탑 컴퓨터의 충전지 하위체제와 같은 전력 관리 칩에 쓰이며, 그 외에 온도 센서와 리드 스위치 같은 장치들에도 사용된다. 장치는 제조업체 정보를 제공하고, 모델 및 부품 번호를 알리며, 서스펜드 이벤트를 위한 상태를 저장하고, 다른 유형의 오류들을 보고하며, 제어 변수들을 받고, 결과값을 반환한다. 시스템 관리 버스는 일반적으로 사용자가 제어하거나 접근할 수 없다. 시스템 관리 버스는 1995년 인텔(Intel)이 정의하였는데, 이 버스는 클럭, 데이터, 명령을 전달하며 필립스의 I2C의 직렬 버스 프로토콜에 기반하고 있다. 동작 주파수 범위는 10kHz에서 100kHz다. 동작 전압은 I2C와 다르지만, 두 신호시스템에 속하는 장치들은 종종 같은 버스에 혼용할 수 있다. 시스템 관리 버스는 ALTER#이라고 불리는 추가적인 옵션 신호를 갖고 있는데, 이는 예속 장치가 컨트롤러에 인터럽트 요구를 보낼 때 사용된다. 리눅스,윈도 2000, 윈도 XP는 모두 시스템 관리 버스를 지원하지만, 윈도 98은 지원하지 않는다. 흔히 배터리의 건강상태 사이클 전압 온도를 불러오고, 메인보드의 온도 등 다양한 온도 조도 가속도 센서 등을 관장한다.[9]

ISA 버스 방식

ISA(Industrial Standard Architecture) 버스 방식은 산업 표준 구조의 버스 방식으로, AT 버스라고도 한다. 8비트 확장 슬롯을 사용한 IBM의 XT 기종 초기 때부터 채용한 버스 방식으로서 그 당시에는 8비트 데이터 경로의 8MHz 버스였다. 그후 AT(Advanced Technology) 기종이 나오면서 XT와의 호환성을 유지하기 위하여 ISA 버스는 8비트와 16비트의 데이터 경로를 모두 수용하게 되었다. 그래서 XT에서 쓰던 주변기기들은 AT에서도 대부분 무리 없이 돌아가게 되었다. 요즘 ISA를 채용한 메인보드는 386 기종에도 8비트와 16비트의 확장 슬롯만 함게 가지고 있는 경우가 대부분이며, 간혹 32비트의 확장 슬롯을 가지고 있는 보드도 눈에 띄지만, 386에서 32비트 확장슬롯은 주로 확장 메모리카드용으로 사용하는 것이다. 486 기종도 종래에는 16비트 버스를 채용한 것이 대부분이었는데 32비트인 386, 486에 16비트 버스를 사용했었음으로 제 성능을 기대하기는 힘든 상황이었다. 그렇긴 해도 ISA 버스 방식은 그 동안 대부분의 주변 장치에 채용되어 가장 흔하고 저렴하게 구할 수 있는 기종이며, 우리가 보통 AT 버스라고 하는 것은 바로 이 ISA 버스를 말한다. 8MHz의 데이터를 전송하고, 중앙 처리 장치의 클럭이 높은 주파에서 심하게 왜곡된다. DRAM의 리프레시로 인한 과도한 전류 때문에 잡음이 많이 생긴다.. 어드레스 공간 확장에 따른 직접 기억장치 접근 공간 확장이 제한적이고, 중앙 처리 장치와 시스템 버스 사이의 엄청난 속도 차이로 고해상도 그래픽 등 많은 양의 데이터를 필요로 할 경우 병목현상이 일어난다.

EISA 버스 방식

EISA(Ectended Industrial Standard Architecture) 버스 방식은 아이사라고 발음하기도 한다. 확장된 ISA 방식으로, IBM이 MCA 버스 방식으로 방향을 바꾸면서 컴퓨터 시장을 독점하려는 의도를 보이자 그 동안 IBM 호환 기기를 개발하여 판매해왔던 세계굴지의 9개 회사들이 연합하여 1988년 IBM의 독주를 견제하고자 공동 개발한 방식이다. 9개의 회사 외에도 많은 업체들이 EISA형의 메인보드를 생산하기 시작했고, 인털에서도 EISA 버스 구조에서 작동하는 칩셋을 특별히 설계하여 개발하였다. 32비트 구조로 MCA와 비슷한 성능을 발휘하지만, 종전에 사용하던 대부분의 ISA보드들을 그대로 사용할 수 있다는 장점이 있다. ISA 호환 아키텍처로 초당 23MB 대역폭이다. 8.33MHz 버스 클럭과 32비트의 I/O구조다.

LOCAL 버스 방식

32BIT PC에서 ISA 버스는 16BIT의 데이터를 전송하므로 중앙 처리 장치의 처리를 주변 기기에서 따라갈 수 없는 문제를 보인다. 사실상 이 문제는 중앙처리 장치가 486 기종이라 해도, 주변기기는 286 기종에 비해 성능 향상을 기대하기 어렵다. EISA나 MCA와 같은 32BIT 버스를 사용하면 되나 이들의 가격이 워낙 고가이기 때문에 사용에 어려움이 많다. 이러한 문제점을 해소하기 위해 개발된 것이 로컬버스 개념으로 특정한 확장 보드를 메인보드 내부에서와 같이 중앙 처리 장치와 직접 접속하여 성능의 향상을 꾀한 것이다. ISA 버스 슬롯에 LOCAL 버스 슬롯을 추가한 것으로, 별도의 그래픽 카드와 메모리, 하드 컨트롤러를 장착하여야 한다. 모든 데이터 처리가 단순한 텍스트처리 기반에서 그래픽 위주의 처리로 정착되었고, 그에 따라 정보량이 증가하여 중앙처리의 빠른 속도를 뒷받침해 줄 빠른 기기들이 필요하게 되었다. 이에 따라 중앙 처리 장치의 로컬 버스에 물리적이고 논리적인 방법으로 직접 주변장치(그래픽 어댑터, 디스크 컨트롤러, 네트워크를 연결하여 중앙 처리 장치와 같은 속도로 데이터를 처리하는 기술이다.

VESA LOCAL 버스

VL-Bus라고도 부르는 VESA(Video Electronics Standard Association) LOCAL 버스는 단 몇 개의 제어신호를 가지고 버스와 마스터의 기능을 제어하면서 386의 호환성을 유지하는 486버스인데, 486 중앙 처리 장치의 핀과 직접 접속되어 프로세서가 주변장치와 슬롯의 부하를 떠맡고 있는 형태이다. 주요 칩셋 뿐 아니라 비디오 칩과 마더보드 등의 연결 방법을 통일시킴으로써 더욱 많은 부분을 공유하여 사용할 수 있게 하고, 주변 장치들을 중앙 처리 장치의 LOCAL Bus에 직접 연결함으로써 시스템 전체의 동작 속도를 높이는 버스 구조를 마련하게 되었다. 기존의 ISA 버스는 최대 16 Bit로 접속이 되었으며, 주변 기기의 동작 속도는 8MHz에서 10MHz 정도였다. 그러나 이 정도의 동작 속도로는 날로 고해상도를 추구하는 컴퓨터의 발전에 있어 커다란 장애물이 아닐 수 없었다. 시스템이 아무리 빨리 동작을 한다고 해도 화면에 나타나는 속도가 느리면 결국 보는 사람은 전체적인 동작이 늦은 것으로 느끼게 된다. 컴퓨터 중앙 장치는 혼자서는 동작을 할 수 없으며, 주변 장치와 함께 구성되어 동작하는 하나의 그룹이다. 이에 우선적으로 비디오 카드만이라도 빠르게 동작을 하도록 방안을 마련했는데, 이것이 바로 VESA LOCAL 버스 방식이다. 486 중앙 처리 장치를 근간으로 만들어졌고, 주변 장치를 직접 중앙 처리 장치 버스에 연결시킬 수 있게 함으로써 동작 속도를 높였고 지금은 비디오 카드 뿐 아니라 다른 입출력 장치까지도 이 방식으로 연결할 수 있는 각종 카드가 개발되어 전체적인 수행 속도가 향상되었다. VESA LOCAL 버스의 속도는 현재 33MHz지만 40MHz까지는 증가시킬 수 있어, 중아 ㅇ처리 장치의 속도가 다소 빨라져도 이를 수용할 수가 있다. VESA LOCAL 버스에 접속되는 주변기기도 중앙 처리 장치와 직접 연결되므로, 프로세서의 속도와 잘 맞아 돌아가야 한다. 중앙 처리 장치와 버스 마스터링이 동시에 동작하지 못해 버스 마스터링이 작동할 때 중앙 처리 장치를 비롯한 다른 로컬 버스들이 대기 상태에 있어야 한다. ISA/EISA와 호환을 고려하여 기능을 확장하였고, 32비트의 I/O구조이다. 33MHz의 버스 클럭을 가지고, 최대 3개의 디바이스를 지원한다.

PCI LOCAL 버스

PCI(Peripheral Component interconnect) LOCAL 버스는 인텔에서 개발을 주도하여 현재로는 인텔의 펜티엄 칩셋과 인터페이스가 되는 유일한 디자인이며 향후에도 펜티엄 버스의 표준으로 자리 잡으리라 여겨진다. PCI LOCAL 버스는 중앙 처리 장치와는 별도의 자체 속도로 보통 33MHz로 돌아가고 있으며, 브리지 구조로 인하여 펜티엄 중앙 처리 장치의 64비트와는 상관없이 32비트로 돌아갈 수 있다. PCI 버스는 기술적인 면으로 보아서 VESA LOCAL 버스는 아니지만 비디오카드나 네트워크 어댑터 등을 설치한 경우에는 ISA 슬롯에 VESA LOCAL 버스를 장착한 수준의 성능을 낼 수 있어서 고속 처리의 환경을 목표로 하는 설계를 쉽게 할 수 있다. PCI의 강점으로는 디바이스를 최대 10개까지 접속할 수 있다는 점과 그 안정성 및 호환성을 들 수 있다. PCI 방식은 VESA LOCAL 버스와는 달리 중앙 처리 장치와 데이터 버스 사이에 컨트롤러를 두고 있다. 이 컨트롤러는 연결된 주변 기기 간의 데이터 흐름에서 교통정리 역할을 하게 되어 VESA LOCAL 버스 방식에서 발생하는 중앙 처리 장치의 정지 순간이 없다. 따라서 주변 기기를 10개까지 연결해도 중앙 처리 장치의 성능이 저하되지 않는다. 또 하나의 강점으로 꼽히는 안정성은 호환성에 대해서는 관련업계 모두가 인정하고 있다. 원래 펜티엄과 같이 개발되기 시작했기 때문에, 64 비트 중앙 처리 장치를 가장 완벽하게 지원하는 버그 방식이라는 점이다. P24T 및 486을 위한 새턴 칩셋은 초기에 몇 가지 버그가 발생하여 그 공급이 미루어져 왔다. 그래서 관련 업계에서도 새턴형 PCI를 반신반의했었으나, 현재는 그 안정성을 인정하고 있다. 또한 인텔은 64비트 컴퓨터 시대의 버스 방식을 장악하기 위해 관련 업체에 엄청난 기술지원을 하고 있다. 이 점이 PCI 방식의 100% 호환성을 보장하는 이유이기도 하다. VESA LOCAL 버스의 경우 같은 기능을 갖는 제품이라고 해도, 만든 회사와 사용한 칩셋이 다를 경우 연결되지 않는 경우가 있다. 그러나 PCI LOCAL 버스에서는 어느 회사가 어떤 칩셋을 사용해서 만든 제품이라 하더라도 완전한 호환성을 보장한다. 전에 EISA 버스 방식이 완전한 호환성을 바탕으로 PC의 버스 방식을 석권했던 것과 비슷하다. 중앙 처리 장치와 버스 마스터가 동시에 동작하고, 주변 장치가 중앙 처리 장치의 속도를 따라가지 못하더라도 중앙 처리 장치는 주변 장치의 동작과는 무관하게 계속해서 작업할 수 있으며, 주변 장치도 그 나름대로 계속 동작할 수 있다. 멀티미디어 컴퓨팅 환경에서 유리하고, 기존의 메인보드나 주변장치의 설계를 대폭 변경해야 한다. 비디오 데이터를 실시간 처리해주므로 멀티미디어에 안성 맞춤이다. 32 비트의 I/O 구조, 32MHz 버스클럭으로 최대 10개의 디바이스까지 지원해준다.[10]

MCA 버스 방식

MCA(Micro Channel Architecture) 버스 방식은 3비트 80386계열 프로세서들이 16비트 ISA 버스에 채용되어 제 성능을 발휘하지 못하자 IBM에서는 차제에 16비트 버스와 DOS 운용체계의 640KB라는 굴레를 벗어나 획기적인 성능 향상을 기할 수 있도록 32비트 버스 구조의 MCA 버스를 채용한 PS/2를 발표하게 된다. MCA 버스는 32비트 구조로 14.5MHz의 속도를 낸다. 따라서 8MHz ISA 버스보다는 데이터 이동 속도가 훨씬 빠르다. 그러나 MCA 버스는 ISA 버스와는 구조가 전혀 다르므로 종전에 ISA 버스에서 쓰던 내장형 보드 등과 같은 주변기기는 MCA 버스 방식을 채용한 PS/2와 같은 기종에서는 전혀 사용할 수가 없게 되었다. 또한 MCA 버스용으로 사용할 수 있는 주변기기를 개발하려면 종전 ISA용의 자료는 전혀 쓸모없고, MCA용으로 개발하려면 IBM에 로열티를 지불해야하기 때문에 개발 비용이 막대하게 들게 된다. 자연스럽게 MCA용 주변기기의 값은 비쌀 수밖에 없고, 흔히 구하기도 어렵다. PS/2에서 채택되었고, 초당 40MB의 대역폭과 14.5MHz 버스클럭, 32비트의 I/O 구조를 가지고 있다. 중대형 컴퓨터에 사용되었던 스를 PC에 도입한 것으로 시스템 내부에 작은 공간을 차지하여 전파간섭 현상을 줄였다.

각주

  1. 1.0 1.1 underlier12, 〈컴퓨터구조 #23 시스템 버스 구성 및 제어〉, 《벨로그》, 2020-04-30
  2. Computer Bus 컴퓨터 버스〉, 《정보통신기술용어해설》
  3. 3.0 3.1 3.2 3.3 시스템 버스 (system bus)〉, 《KOCW》
  4. 마팸, 〈시스템 버스에 대해서〉, 《티스토리》, 2017-08-15
  5. system SW, 〈I/O 버스에 관하여〉, 《네이버 블로그》, 2011-11-02
  6. 6.0 6.1 Chan Ho Son, 〈(컴퓨터 구조) 버스(BUS)〉, 《티스토리》, 2016-10-03
  7. 7.0 7.1 테리는 당근을 좋아해, 〈(컴퓨터구조) 시스템 버스 System bus]〉, 《티스토리》, 2020-07-14
  8. rian, 〈단일-버스 다중프로세서 시스템(1) - 버스 중재 방식과 캐시 일관성 유지 방법〉, 《티스토리》, 2019-06-17
  9. Reti, 〈(컴퓨터확장) 버스 기술의 표준 (컴퓨터 포트와 슬릇 정보)〉, 《티스토리》, 2016-01-01
  10. 키트린, 〈BUS에 대하여〉, 《네이버 블로그》, 2011-01-17

참고자료

같이 보기


  의견.png 이 버스 (컴퓨터) 문서는 컴퓨터에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.