Bus
Bus
모든 컴퓨터 요소들을 연결하는 길고 넓은 통로 (바이트 정보를 전달하는) (각각 연결시키면 비용이 크니까)
Like 전선.
CPU(CPU Pin) - Bus(전선, PCB 기판에 붙어있는 얇은 박막) - Memory or 주변 장치
데이터 버스만 가지고 신호를 주고 받을 순 없고, 어드레스 버스도 같이 따라다닌다.
Bus 폭
버스는 여러 개의 선으로 이루어져 있고, 각 선은 1비트 정보를 전달한다.
버스의 라인 수를 버스의 폭이라고 한다.
CPU가 다루는 Word 사이즈에 따라 버스의 폭이 결정된다.
버스의 폭이 넓어질수록
= 한 번에 표현/처리할 수 있는 정보의 양이 많아진다. (Word 만큼)
= 처리 속도가 빨라진다.
라인 수 | 계산 | 계산 값 | 컴퓨터에서 |
---|---|---|---|
8 비트 버스 | 2^8 | 256 | 256B |
16 비트 버스 | 2^16 | 65,536 | 64KB |
32 비트 버스 | 2^32 | 약 43억 | 4GB |
64 비트 버스 | 2^64 | 약 1844경 | 16EB |
_
버스 선이 32개면 32비트 CPU겠군!
그렇다. (일반적으로)
- N-Bit CPU
- N-Bit = CPU 내부에서 처리하는 단위
- = 연산, (제어 = 메모리 접근 = 주소 = 어드레스 버스)
예외는 있다.
인텔 펜티엄의 경우 32비트 CPU지만 외부 데이터 버스는 64비트다. 과거 인텔 8086 CPU또한 16비트 CPU였지만 외부 데이터버스는 8비트짜리였다.
32비트 CPU라면 그 안에 가지고 있는 범용 레지스터는 모두 32비트짜리이다.
각 레지스터들은 한번에 32비트짜리 데이터만을 저장할 수 있다.
물론 메모리 어드레싱을 위한 특수한 레지스터나 SIMD(Single Instrunction Multiple Data)용 레지스터들은 사이즈가 제각각이다.
CPU를 직접 제어하는 어셈블리 프로그래밍의 경우 프로그래머가 여러 개의 레지스터를 사용해서 더 큰 숫자를 사용할 수 있도록 짤 수 있다. 고급 언어의 경우는 컴파일러가 이러한 코드를 생성해준다. 당연히 코드가 느리고 복잡해진다.
System Bus
Address Bus
- 메모리, I/O 장치에 접근할 때
- 접근 장소를 식별하기 위한 주소를 전달하는 선
- 메모리 크기에 따라 8 16 24 32 64 비트(라인) 등의 크기를 가짐
Data Bus (R/W)
- CPU, 메모리, I/O 장치, … 사이에서
- 읽기/쓰기 할 때 데이터를 전달
- 데이터 전송 대역폭에 따라 8 16 32 64 비트(라인)등의 크기를 가짐
Control Bus | 제어 버스 (R/W하는 명령/신호 같은)
- 메모리, I/O 장치 등에
- 읽기/쓰기 등의 기능을 제어하기 위한 신호를 전달하는 선
- 신호의 종류에 1/2/3 비트 (라인) 등의 크기를 가짐
프로세서들 간 버스 연결 방식 (강결합 시스템)
Single Shared Bus | 단일 공유 버스
Like 일차선 도로.
- 시스템 전체적으로 하나의 버스를 두고 프로세서들이 경쟁하여 사용
- 배타적으로, 하나가 버스를 쓰고 있다면 (데이터를 주고 받고 있다면), 다른 하나가 버스를 사용할 수 없다 (데이터가 깨지니까)
- 프로세서를 너무 많이 탑재하면 성능이 오히려 저하
- CPU를 여러 개 꽂아도, 대기 시간이 존재하기에 성능 향상이 점점 줄어든다
- 멀티 코어 프로세서는 프로세서들을 하나의 칩으로 통합하여 버스 경쟁, 캐시 정책, 전력 소모 등을 최적화
Multiple Bus | 다중 버스
Like 은행 창구처럼, 톨 게이트.
- 버스를 여러 개 두고 버스 경쟁률을 완화
- 메모리를 버스 개수 만큼 나눈다
- 하나의 버스가 사용중이면 다른 버스로 메모리에 접근
Crossbar Switch Bus
- 메모리를 여러 개의 모듈 (뱅크)로 분리
- 모든 프로세서와 메모리 모듈 사이에 독립적인 버스 경로 가능
- 버스 경쟁으로 인한 성능 저하 최소화
- 같은 버스 수로 다중 버스의 효과를 내면서
- 같은 메모리 뱅크를 사용하지 않는 한
- 대기 시간이 있기는 있음
Hierarchical Bus | 계층적 버스
- 프로세서별 로컬 접근 메모리, 로컬 디바이스, 로컬 버스를 두고, 대부분 로컬 버스로 처리
- 시스템 메모리 접근이 필요한 경우에만 브릿지 컴포넌트를 통해 시스템 버스를 사용
- 글로벌 메모리에 있는 변수 접근 시 대기 시간
- SW적으로도 (컴파일러) 여러 기능 필요
- 시스템 메모리로의 주소 바인딩
Multi Port Memory | 다중 포트 메모리
- 메모리에 접근 포트를 여러 개 두고 각각 독립적으로 경로 가능, 접근 가능
- 각 프로세서 별로로 독립된 버스를 분리된 메모리 포트에 연결하여 각각의 병렬 접근을 허용
- 보통 듀얼 포트
- 비디오 RAM (VRAM)이 대표적 사례
- CPU 각 픽셀의 색 설정
- GPU 각 픽셀을 모니터에 출력
- 메모리 버스를 가지고 경쟁, 하나가 느리면 병목 현상, 끊어보인다던지
- 그래서 메모리도 크고, 다중 포트
메모
- 엮다 Omni’bus’
참고
- 여치