의견.png

버스 (컴퓨터)

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

버스(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]

구조에 따른 분류

시스템 버스

중앙 처리 장치와 메모리를 연결하는 것을 시스템 버스라고 한다.

I/O 버스

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

신호 기능에 따른 분류

주소 버스

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

데이터 버스

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

제어 버스

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

비동기식 버스

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

컴퓨터 구성 요소 간 통신

중앙 처리 장치와 메모리

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

버스 중재 방식

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

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

  • 병렬 중재 방식(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진 카운터를 이용하여 결정한다.

조합 버스 중재 방식

고정 우선순위

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

가변 우선순위

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

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

중앙집중식 직렬 중재 방식

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

분산식 직렬 중재 방식

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

규격

각주

  1. 1.0 1.1 underlier12, 〈컴퓨터구조 #23 시스템 버스 구성 및 제어〉, 《벨로그》, 2020-04-30
  2. Computer Bus 컴퓨터 버스〉, 《정보통신기술용어해설》
  3. 3.0 3.1 3.2 시스템 버스 (system bus)〉, 《KOCW》
  4. 4.0 4.1 Chan Ho Son, 〈(컴퓨터 구조) 버스(BUS)〉, 《티스토리》, 2016-10-03
  5. 5.0 5.1 테리는 당근을 좋아해, 〈(컴퓨터구조) 시스템 버스 System bus]〉, 《티스토리》, 2020-07-14

참고자료

같이 보기


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