검수요청.png검수요청.png

버스 (컴퓨터)

해시넷
이동: 둘러보기, 검색

버스(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] 버스는 한 종류의 버스에 그 종류의 신호만 전달하는 전용 버스와 한 종류의 버스에 여러 신호를 같이 보낼 수 있는 다중화 버스 두 가지 유형이 있다.

마스터링[편집]

버스 마스터링(Bus Mastering)은 수많은 버스 구조에서 지원하는 기능으로, 컴퓨터 버스 상에서 주변 기기를 관리하는 컨트롤러가 중앙 처리 장치를 통하지 않고 직접적으로 버스 상의 다른 주변 기기들과 통신할 수 있게 하는 버스 구조를 말한다. 버스에 연결된 장치가 트랜잭션을 시작할 수 있게 도와주는 기능이다. 원래 데이터 버스를 통해서 데이터가 이동되려면 중앙 처리 장치가 관여해야 하지만, 버스 마스터링 기능을 가지고 있는 컨트롤러를 사용할 경우 중앙 처리 장치의 개입을 최소화하여 중앙 처리 장치의 부하를 감소시킬 수 있다. 버스 마스터링 기능은 직접 기억장치 접근 전송과 함께 사용된다.[4] 퍼스트 파티 직접 기억장치 접근이라고 부르기도 하는데, 이것은 시스템 직접 기억 장치 접근 컨트롤러가 실제로 전송을 하는 써드 파티 직접 기억장치 접근(Third party DMA)과는 대조된다. 어떠한 종류의 버스들은 일반적으로 중앙 처리 장치와 같은 하나의 장치만이 트랜잭션을 시작할 수 있지만, 이와 달리 PCI와 같은 현대의 대부분의 버스 구조는 여러 개의 장치들에 버스 마스터링을 허용할 수 있어 일반적인 목적의 운영 체제 성능을 상당히 개선시켜준다. 일부 실시간 운영 체제는 주변 기기가 버스 마스터가 되는 것을 금지하는데, 이는 스케줄러가 더 이상 버스를 중재하지 못하여 결정적인 레이턴시(latency)를 제공하지 못하기 때문이다. 버스 마스터링은 이론적으로 하나의 주변 기기를 다른 기기와 직접 통신할 수 있게 하지만, 실제로는 거의 모든 주변 기기는 기본 메모리에 직접 기억장치 접근을 수행할 목적으로 버스 마스터링을 이용한다. 여러 개의 장치가 버스 마스터링을 할 수 있다면 여러 개의 장치가 동시에 버스를 운영하려는 시도를 방지하는 중재 계획이 필요하다. 각기 다른 수많은 계획이 여기에 사용되는데, 예를 들어 소형 컴퓨터 시스템 인터페이스(Small Computer System Interface, SCSI)는 개별 소형 컴퓨터 시스템 인터페이스 아이디를 위한 고정된 우선순위를 지니고 있다. PCI의 경우에는 사용할 알고리즘을 지정하지 않는다.[5] 버스 마스터는 마이크로프로세서 혹은 I/O 컨트롤러에 있는 프로그램으로 버스 혹은 I/O 통로 상의 통신을 제어하는 역할도 한다. 버스 통로 상의 주소와 제어 신호들의 흐름을 실제로 제어하고, 이것들이 설정되면 데이터 비트들의 흐름은 I/O 장치와 마이크로프로세서 간에 직접적으로 이루어진다.[4]

분류[편집]

구조[편집]

시스템 버스[편집]

중앙 처리 장치와 메모리를 연결하는 것을 시스템 버스라고 한다. 데이터 라인과 주소 라인, 제어 라인으로 구성되어 있다. 데이터 라인은 프로세스와 공통 메모리 사이의 데이터 전송 경로를 제공한다. 주소 라인은 메모리 주소와 입출력 포트 식별에 활용되는 단방향 라인이고, 제어 라인은 장치들 간의 정보 전송을 제어하는 신호를 제공하는 라인이다. 제어 라인이 제공하는 신호에는 데이터와 주소 정보의 유효성을 확인하기 위한 타이밍 신호(Timing Signal), 수행할 동작을 지정하는 커맨드 라인(Command Line) 등이 있다.[1] 시스템 버스에 연결된 각 장치의 속도가 다 다르기 때문에, 이들을 효율적으로 연결할 필요가 있는데 그래서 나온 것이 바로 다중 버스 계층이다. 단일 버스 구조는 우리가 흔히 생각하는 버스의 구조로, 심각한 병목현상이 일어난다. 다중 버스 계층 구조에는 2계층, 3계층이 있다. 2계층 다중 버스 구조는 확장 버스와 지역 버스를 사용하여 계층적인 버스 구조를 이루게 된다. 각 장치의 속도와 사용 빈도에 맞게 계층적으로 구조를 만들어 버스를 사용하므로, 병목현상의 문제를 줄일 수 있다. 3계층 다중 버스 구조는 핵심 장치(CPU, RAM, 캐시 기억장치) 외에 나머지 주변 장치(입출력장치 등)의 특징을 더욱 세분화하여 확장 버스 외에 고속버스를 하나 더 추가해서 삽입한 것을 말한다. 병목현상의 문제 제거 정도가 가장 높은 방식이다.[6]

I/O 버스[편집]

메모리와 다른 입출력 장치와 통신을 하는 것을 I/O 버스라고 한다. 현대의 시스템에서 사용되는 I/O 버스는 프로세서 버스, 메모리 버스, 주변 기기들의 I/O 버스 크게 3가지로 나뉜다. 일반적으로 I/O 버스라고 하면 주변 기기들 쪽의 I/O 버스 즉, AGP나 PCI를 지칭한다. 데이터 라인, 주소 라인, 제어 라인으로 구성되어 있고, I/O 버스를 사용하는 자기 디스크, 프린터, 단말기는 거의 모든 범용 컴퓨터에 사용된다. I/O 인터페이스는 I/O 버스에서 수신한 주소 및 컨트롤을 디코딩하여 주변 장치용으로 해석하고 주변 장치 컨트롤러에 신호를 제공한다. 특정 장치와 통신하기 위해 프로세서가 주소 줄에 장치 주소를 배치하고, I/O 버스에 연결된 각 인터페이스에는 주소 라인을 모니터링 하는 주소 디코더가 포함되어 있다. I/O 버스는 각종 주변기기와 노스브릿지, 사우스브릿지 등을 연결해주는 데 사용되는 것으로, 시스템의 기능을 확장하고자 한다면 I/O 버스들이 메인보드 외부로 이어져야 한다. 특징에 따라 1세대, 2세대, 3세대로 구분할 수 있다.

  • 1세대 : 1세대의 I/O 버스는 리거시 버스(Legacy Bus)다. PC 개발 초기에는 프로세서의 클록이 느렸기 때문에, I/O 버스도 느릴 수밖에 없었다. 당시에 사용하던 ISA 버스는 속도가 느린 프로세서에 사용되기에는 충분했지만, 프로세서의 속도가 점점 빨라져 ISA가 감당할 수 없게 되었고, 16bit ISA가 등장하였다. 그러나 이후, 프로세서의 외부 버스 크기가 32bit로 늘어나고 데이터 처리량이 급격히 늘어나면서, 또다시 프로세서의 속도를 감당할 수 없게 되었고, EISA와 MCA 버스가 등장하였다. 하지만 이들 역시 지속적으로 고속화되는 프로세서 버스를 감당하기에는 무리였다. 이것은 앞의 버스 방식들이 기본적으로 초기 IBM PC에 사용하던 ISA를 기반으로 하고 있기 때문에 발생하는 문제로, 클록 향상에 한계가 있고, 데이터 전송방식에 문제가 있기 때문이었다. 이러한 특징으로부터 리거시라는 이름이 유래되었다. 리거시 버스에는 ISA,EISA, MCA 등이 포함되며, 비슷한 이유로 PS/2나 기존의 시리얼/패러럴 포트 등은 리거시 포트라고 불린다.
  • 2세대 : VESA 및 PCI 버스가 사용되던 초기에, 이 버스들에 로컬 버스라는 이름이 따라붙었다. 프로세서와 메모리의 속도가 점점 고속화되면서, 각종 주변기기 역시 고속화되었다. 특히, 윈도우즈의 등장 이후, GUI의 중요성이 대단히 강조되었고, 그래픽 카드가 필요로 하는 데이터 전송 대역폭은 계속해서 늘어났다. 또한, 하드디스크 드라이브를 위시한 저장매체들의 속도도 지속적으로 늘어났기 때문에, 기존의 리거시 버스로는 이러한 고속 기기를 제대로 지원할 수 없어 고속의 버스가 필요해졌다. 그렇지만 아무리 주변기기의 속도가 빨라진다고 해도, 굳이 고속의 버스를 필요로 하지 않는 주변 기기도 많았기 때문에, 리거시 버스를 완전히 버릴 수 없었고, 이것이 원인이 되어 로컬 버스가 등장하게 되었다. 대표적인 예로 모뎀이 있는데, 모뎀은 현대의 ADSL 등을 사용하더라도 ISA로 커버할 수 있다. 당시 ISA를 사용하는 주변기기가 대단히 많았고, 사용자 인터페이스 중에서도 고속 인터페이스를 필요로 하지 않는 것이 많았다. 예를 들어 키보드의 경우, 한글은 분당 800타에서 1,000타가 정도기 때문에 아무리 잘해도 20kB/s의 속도를 넘길 수 없고, 마우스도 이와 비슷했기 때문에, 리거시 버스의 필요성이 지속적으로 잔존하였다. 이에 로컬 버스는 버스 중 일부분만을 고속의 버스로 대체하였고, 로컬 버스의 로컬은 이러한 형태에서 유래하였다. 로컬 버스는 기존의 리거시 버스와는 별도로 존재하거나, 리거시 버스가 로컬 버스에서의 특정 기기 아래쪽으로 연결되어 있기도 했다. 이러한 로컬버스의 도입으로 인해 기존의 리거시 버스에서 사용하던 기기들이나 리거시 포트를 사용하던 기기들을 그대로 사용할 수 있음은 물론이며, 새로이 등장하는 고속의 I/O 컨트롤러나 그래픽 컨트롤러 등이 필요로 하는 빠른 속도로 지원해 줄 수 있게 되었다. 로컬 버스의 등장으로 칩셋의 역할은 점점 더 중요해지고, PCI의 등장으로 노스브릿지-사우스브릿지로 이어지는 현재와 같은 칩셋의 토폴로지(topology)도 확립되었다.
  1. PCI 로컬버스가 도입된 초기의 칩셋 토폴로지 : 로컬 버스가 도입되었던 초기, 프로세서는 L1 캐시만을 탑재하였고, L2 캐시는 프로세서 외부에 존재했다. 프로세서와 캐시, 노스브릿지 사이는 프로세서 버스로, 노스브릿지와 메모리 사이는 메모리 버스로 연결되었다. 노스브릿지는 위쪽에 있어서 노스라는 이름이 붙었고, 사우스브릿지는 아래쪽에 있어서 사우스라는 이름이 붙게 되었다. 엄밀히 따지자면 노던브릿지, 서던 브릿지가 되어야 하겠지만, 지금까지 그렇게 불러왔고, 고유명사화 되어 버렸기 때문에, 관례적으로 노스브릿지와 사우스브릿지라고 부른다. 로컬 버스는 처음에 VESA 버스가 탄생한 이후, PCI 방식으로 변경되었고, 그 이후 그래픽 카드가 연결되는 부분만을 별도로 분리한 AGP 버스가 등장한다.
  2. 진화 : 프로세서의 속도가 보다 고속화되고, AGP 및 기타 주변기기의 속도 역시 지속적으로 빨라지면서, 위와 같은 노스브릿지-사우스브릿지의 구조가 한계에 부딪혔다. 따라서 3세대 칩셋은 노스브릿지-사우스브릿지에 보다 고속의 인터페이스를 적용하고, 사우스브릿지가 PCI 컨트롤러가 되는 새로운 구조를 채택했다. 이때 주의할 것은 3세대 칩셋이 3세대 I/O를 사용하는 것은 아니라는 것이다. 인텔은(intel) 이러한 구조를 처음 도입하면서 허브 아키텍처(Hub Architecture)라 명명했고, 노스브릿지와 사우스브릿지 간을 잇는 고속의 버스는 허브 인텔 버스(Intel Hub Bus)라고 불렀다. VIA에서도 유사한 구조를 채택하면서 VIA Link라는 고속의 버스를 적용하였다. 새로운 구조가 채택되면서 64bit PCI 등의 고속 인터페이스가 적용되기 시작하였다. 64bit PCI는 노스브릿지에 연결되는, 별도의 브릿지를 통해서 동작한다. 또한 최근의 서버용 보드에서는 64bit PCI를 넘어서, PCI-X가 사용되고 있다.
  • 3세대 : 3세대는 현재 진행 중으로, 3세대 I/O는 많은 곳에서 개발에서 참여하고 있고, 앞으로 적용될 인터페이스이다. 개발 목적은 보다 빠른 I/O를 제공하여 시스템의 병목현상을 해소하고, 보다 쉽게 시스템을 구축할 수 있도록 하는 것이다. 현재 하이퍼트랜스포트와 PCI Ecpress(3GIO)가 있다.[7]

신호 기능[편집]

주소 버스[편집]

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

데이터 버스[편집]

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

제어 버스[편집]

제어 버스(Control Bus)는 제어 신호를 전달하는 역할을 한다. Read와 Write 신호가 전달되는 것으로, 각 구성 요소(중앙 처리 장치, 메모리, I/O Unit)는 양방향으로 데이터 전달이 가능한 버스를 사용한다.[9] 쉽게 설명하자면 데이터 버스와 주소 버스를 제어하는 역할로, 데이터 버스와 주소 버스는 공유하는 선들의 집합이기 때문에 이들을 제어하기 위한 수단이 반드시 필요하다. 다르게 말하면 중앙 처리 장치가 기억장치 혹은 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 주기보다 더 짧은 시간이 걸리는 버스 동작의 경우에는 동작이 완료된 후에도 다음 주기가 시작될 때까지 대기하여 시간 낭비가 발생할 수도 있다. 소규모 컴퓨터에서 효과적이다.

비동기식 버스[편집]

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

컴퓨터 구성 요소 간 통신[편집]

CPU 및 메모리[편집]

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

CPU 및 I/O 유닛[편집]

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

메모리 및 I/O 유닛[편집]

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

중재 방식[편집]

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

제어 신호의 연결 구조[편집]

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

조합 버스 중재 방식[편집]

  • 고정 우선순위
  1. 중앙집중식: 모든 버스 마스터들이 버스 중재기에 접속하여, 중재기와 가장 가까이 위치한 버스 마스터부터 높은 우선순위를 가진다.
  2. 분산식: 모든 버스 마스터들이 중재기를 한 개씩 보유하고 있어, 각 중재기는 자신보다 더 높은 우선순위를 가진 마스터들의 버스 요구 신호들을 받아 검사한다. 그들이 버스 사용 요구를 하지 않은 경우에만 자신의 버스 마스터로 버스 승인 신호를 발생한다. 승인 신호를 받은 버스 마스터는 BBUSY 신호를 검사하여, 비활성화 상태(다른 마스터가 버스를 사용하지 않는 상태)일 때 버스 사용을 시작한다. 중앙집중식에 비하여 중재 회로가 간단하기 때문에, 동작 속도가 빨라지지만, 고장을 일으킨 중재기를 찾아내는 방법이 복잡하고, 한 중재기의 고장이 전체 시스템에 영향을 미칠 수가 있다.
  • 가변 우선순위 : 시스템의 상태 또는 조건에 따라 각 버스 마스터들의 수선순위를 계속 변화시키는 방식으로 중재 회로가 복잡하지만, 모든 마스터들이 공정하게 버스를 사용할 수 있게 해준다.
  1. 회전 우선순위(rotating priority) 방식: 중재 동작이 끝날 때마다 모든 마스터들의 우선순위가 한 단계씩 낮아지고, 가장 우선순위가 낮았던 마스터가 최상위 우선순위를 가지도록 하는 방법이다. 일단 버스 사용 승인을 받은 마스터는 최하위 우선순위를 가지며, 바로 다음에 위치한 마스터가 최상위 우선순위를 가지도록 하는 방법을 Acceptance-deependent식 회전 우선순위 방식이라고 한다.
  2. 임의 우선순위 방식: 각 중재 방식이 끝날 때마다 우선순위를 임의로 결정
  3. 동등 우선순위 방식: 모든 마스터들이 동등한 우선순위를 가지며, FIFO(First in first out) 알고리즘을 사용한다.
  4. 최소-최근 사용(Least-Recently Used, LRU) 방식: 최근 가장 오랫동안 버스를 사용하지 않은 버스 마스터에게 최상위 우선순위를 할당하는 것으로, 회로가 매우 복잡하다.
  • 중앙집중식 직렬 중재 방식 : 하나의 중재 신호선(BGNT)이 데이지-체인(daisy-chain) 형태로 모든 버스 마스터들을 직렬로 연결하는 방식으로, 우선순위는 버스 승인 신호선이 연결된 순서대로 결정한다. 한 개 또는 그 이상의 버스 마스터가 버스 사용을 요구하면, 공통의 BREQ 신호가 설정되고, 버스 중재기는 데이지 체인의 첫 번째에 접속된 마스터로 승인 신호(BGNT)를 전송한다. BGNT 신호를 받은 마스터는 만약 버스 사용을 요구한 상태라면, 버스 사용권을 가진다. 만약 버스 사용을 요구하지 않은 상태라면, 승인 신호를 다음에 연결된 마스터에게로 통과시킨다. 승인 신호는 버스를 요구한 마스터에게 도달할 때까지 계속 통과하고, 버스 요구를 보낸 마스터들 중 중재기에 가장 가까이 위치한, 우선순위가 가장 높은 마스터에게 승인 신호가 전달되면 그 마스터가 버스 사용권을 획득한다.
  • 분산식 직렬 중재 방식 : 데이지-체인 버스 승인 신호가 버스 중재기들을 순환형으로 접속시킨다. 버스 사용권을 부여받은 마스터가 버스 사용을 시작하는 순간에 그 마스터의 중재기는 자신의 우측에 위치한 마스터의 중재기로 접속된 데이지-체인 버스 승인 신호를 설정한다. 만약 그 마스터가 버스 사용을 신청하고 기다리던 중이었다면, 중재기는 즉시 데이지-체인 버스 승인 신호를 받아 BGNT 신호를 발생시킨 뒤 마스터로 전송한다. 데이지-체인 버스 승인 신호를 받은 마스터가 버스 요구를 하지 않은 상태라면, 그 신호를 우측의 다음 중재기로 통과시키고, 그러한 과정은 버스를 요구한 마스터에 도달할 때까지 반복한다. 각 마스터의 우선순위가 계속 바뀌는 방식이기 때문에, 버스 사용 승인을 받으면 다음 중재 동작에서는 최하위 우선순위를 가진다. 버스를 사용한 마스터의 바로 우측에 위치한 마스터가 최상위 우선순위를 가지고, 순환형 구조에서 데이지-체인 버스 승인 신호가 연결된 순서대로 우선순위가 하나씩 감소한다. 분산식 직렬 중재 방식은 어느 한 지점에만 결함이 발생해도 전체 시스템의 동작이 중단된다는 단점이 있다.[3]

규격[편집]

시스템 관리 버스[편집]

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

ISA 버스 방식[편집]

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

EISA 버스 방식[편집]

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

로컬 버스 방식[편집]

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

VESA 로컬 버스[편집]

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

PCI 로컬 버스[편집]

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

MCA 버스 방식[편집]

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

각주[편집]

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

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 버스 (컴퓨터) 문서는 컴퓨터에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.