시스템 버스

[섬네일|싱글 시스템 [버스 (컴퓨팅)|컴퓨터 버스의 예]]
**시스템 버스**(system bus)는 데이터 버스의 기능을 결합하여 정보를 전달하고, 주소 버스를 통해 정보가 전송되거나 읽혀져야 할 위치를 결정하며, 제어 버스를 통해 작동을 제어하여 컴퓨터 시스템의 주요 구성 요소를 연결하는 단일 컴퓨터 버스이다. 이 기술은 비용을 절감하고 모듈성을 향상시키기 위해 개발되었으며, 1970년대와 1980년대에 인기를 끌었지만, 현대의 컴퓨터는 더 구체적인 요구 사항에 맞춰 다양한 별도의 버스를 사용한다.

**시스템 레벨 버스**(CPU의 내부 데이터패스 버스와는 구별됨)는 CPU를 메모리 및 I/O 장치에 연결한다. 일반적으로 시스템 레벨 버스는 백플레인으로 사용하도록 설계되었다.

## 배경 시나리오
많은 컴퓨터는 1945년에 발표된 에드박의 보고서 최초 초안 보고서에 기반을 두고 있다. 폰 노이만 구조로 알려진 이 구조에서는 중앙 제어 장치와 산술 논리 장치(ALU, 그가 중앙 산술 부분이라고 불렀던 것)가 주기억장치 및 입출력 기능과 결합하여 저장 프로그램 컴퓨터를 형성했다. 이 보고서는 컴퓨터의 일반적인 조직과 이론적 모델을 제시했지만, 그 모델의 구현은 아니었다. 곧 제어 장치와 ALU는 중앙 처리 장치(CPU)로 알려진 것으로 통합되었다.

1950년대와 1960년대의 컴퓨터는 일반적으로 임시방편으로 제작되었다. 예를 들어 CPU, 메모리, 입출력 장치는 각각 하나 이상의 캐비닛으로 구성되어 케이블로 연결되었다. 엔지니어들은 표준화된 전선 묶음의 일반적인 기술을 사용했고, 초기 기계에서 인쇄 회로 기판을 고정하는 데 백플레인이 사용되면서 이 개념을 확장했다. "버스"라는 이름은 이미 초기 기계식 계산기를 포함한 전기 기계의 다양한 부분에 전력을 공급하는 "버스 바"에 사용되었다. 집적 회로의 등장은 각 컴퓨터 장치의 크기를 크게 줄였고, 버스는 더욱 표준화되었다. 표준 모듈은 더 균일한 방식으로 상호 연결될 수 있었고 개발 및 유지 관리가 더 쉬웠다.

## 설명
비용을 절감하면서 더욱 모듈성을 제공하기 위해, 메모리 및 I/O 버스(및 필요한 제어 및 전원 버스)는 때때로 단일 통합 시스템 버스로 결합되었다. 컴퓨터가 단일 캐비닛에 들어갈 만큼 작아지고 고객들이 비슷한 가격 인하를 기대하면서 모듈성과 비용이 중요해졌다. 디지털 이큅먼트 코퍼레이션(DEC)은 대량 생산되는 미니컴퓨터의 비용을 더욱 절감했으며, 메모리 맵 입출력을 메모리 버스에 통합하여 장치가 메모리 위치처럼 보이도록 했다. 이는 1969년경 PDP-11의 유니버스 (컴퓨터 버스)에 구현되어 별도의 I/O 버스의 필요성을 없앴다. 메모리 맵 I/O가 없는 PDP-8과 같은 컴퓨터조차도 곧 시스템 버스로 구현되어 모듈을 어떤 슬롯에도 꽂을 수 있게 되었다. 일부 저자들은 이것을 새로운 간소화된 컴퓨터 아키텍처 "모델"이라고 불렀다.

많은 초기 마이크로컴퓨터(일반적으로 단일 집적 회로에 CPU가 있는)는 1975년경 앨테어 8800 컴퓨터 시스템의 S-100 버스를 시작으로 단일 시스템 버스로 구축되었다. IBM PC는 1981년에 Industry Standard Architecture (ISA) 버스를 시스템 버스로 사용했다. 초기 모델의 수동 백플레인은 CPU와 RAM을 메인보드에 배치하는 표준으로 대체되었고, 시스템 버스 슬롯에는 선택적인 도터보드 또는 확장 카드만 사용되었다.

[thumb |upright=1.6 | 시스템 버스를 사용하는 간단한 [대칭형 다중 처리 ]]
멀티버스 (컴퓨팅)는 1983년 전기전자공학자협회의 IEEE 표준 796으로 표준화되었다. 썬 마이크로시스템즈는 더 작은 확장 카드를 지원하기 위해 1989년에 SBus를 개발했다. 대칭형 다중 처리를 구현하는 가장 쉬운 방법은 공유 시스템 버스에 두 개 이상의 CPU를 연결하는 것이었으며, 이는 1980년대 내내 사용되었다. 그러나 공유 버스는 빠르게 병목 현상이 되었고, 더 정교한 연결 기술이 탐구되었다.

매우 간단한 시스템에서도 다양한 시간에 데이터 버스는 프로그램 메모리, RAM 및 I/O 장치에 의해 구동된다. 데이터 버스에서 버스 경합을 방지하기 위해, 한 순간에는 하나의 장치만 데이터 버스를 구동한다. 매우 간단한 시스템에서는 데이터 버스만 양방향 버스여야 한다. 매우 간단한 시스템에서는 기억 장치 주소 레지스터가 항상 주소 버스를 구동하고, 제어 장치가 항상 제어 버스를 구동하며 주소 디코더가 이 버스 주기 동안 데이터 버스를 구동할 수 있는 특정 장치를 선택한다. 매우 간단한 시스템에서는 모든 명령 주기가 프로그램 메모리가 명령어를 데이터 버스에 구동하는 READ 메모리 사이클로 시작하며, 명령 레지스터는 데이터 버스로부터 해당 명령어를 래치한다. 일부 명령어는 메모리 데이터 레지스터가 선택된 RAM 또는 I/O 장치에 데이터를 데이터 버스에 구동하는 WRITE 메모리 사이클로 계속된다. 다른 명령어는 선택된 RAM, 프로그램 메모리 또는 I/O 장치가 데이터를 데이터 버스에 구동하는 또 다른 READ 메모리 사이클로 계속되며, 메모리 데이터 레지스터는 데이터 버스로부터 해당 데이터를 래치한다.

더 복잡한 시스템에는 멀티마스터 버스가 있다. 이들은 데이터 버스를 구동하는 많은 장치 뿐만 아니라 주소 버스를 구동하는 많은 버스 마스터도 가지고 있다. 버스 스누핑 시스템에서는 주소 버스와 데이터 버스가 양방향 버스여야 하며, 종종 쓰리 스테이트 버스로 구현된다. 주소 버스에서 버스 경합을 방지하기 위해, 버스 중재기는 이 버스 주기 동안 주소 버스를 구동할 수 있는 특정 버스 마스터를 선택한다.

## 듀얼 인디펜던트 버스
인텔은 듀얼 인디펜던트 버스(DIB)라는 용어를 두 가지 다른 목적으로 사용했다. 첫 번째는 인텔이 단일 로컬 버스에서 DIB로 변경했을 때로, 주 시스템 메모리 및 I/O 장치에 대한 외부 프론트 사이드 버스와 L2 CPU 캐시에 대한 내부 백사이드 버스를 사용했다. 이는 1995년 펜티엄 프로에 도입되었다.

2005년과 2006년에 인텔은 8500 및 5000 칩셋을 도입했는데, 여기서 DIB는 칩셋의 두 프론트 사이드 버스를 지칭하며, 이는 모든 CPU가 하나의 FSB를 공유하는 것에 비해 시스템 대역폭을 두 배로 늘린다. 그러나 다른 캐시에 있는 공유 데이터의 캐시 일관성을 보장하는 데 필요한 정보는 다른 FSB CPU의 캐시 상태를 확인하기 위해 브로드캐스트(스눕)로 전송되어야 하므로 사용 가능한 대역폭이 감소한다. 일관성 트래픽을 줄이기 위해, 상위 칩셋에는 캐시 상태 정보를 온칩셋에서 사용할 수 있도록 스눕 필터가 포함되었다. 2007년에 인텔은 7300 칩셋에서 여러 버스의 개념을 확장하여 네 개의 독립적인 FSB를 사용하여 이를 전용 고속 상호 연결(DHSI)이라고 불렀다.

시스템 버스 접근 방식은 현대의 개인 및 서버 컴퓨터에서는 더 이상 사용되지 않으며, 대신 하이퍼트랜스포트 및 Intel QuickPath Interconnect와 같은 고성능 상호 연결 기술을 사용한다. 반면 시스템 버스 아키텍처는 더 간단한 임베디드 마이크로프로세서에서 계속 사용된다. 시스템 버스는 단일 집적 회로 내부에 있을 수도 있어 시스템 온 칩을 생성한다. 온칩 버스의 예로는 AMBA, 코어커넥트, 위시본, 그리고 PCI 또는 PCIe의 수정 버전이 있다.

## 예시
### 인텔 다이렉트 미디어 인터페이스
다이렉트 미디어 인터페이스는 2004년부터 알려진 인텔이 구현한 시스템 버스(직접 접근하는 PCIE 레인 외에도)의 한 예이다. 주로 메모리 맵 입출력 장치에 접근하고 CPU와 칩셋 간에 통신하는 데 사용된다.

## 같이 보기
* 버스 (컴퓨팅)
* 외부 버스 인터페이스
* 확장 버스

## 각주

분류:컴퓨터 버스