임베디드 스터디 - 시스템 버스
임베디드 스터디 - 시스템 버스
이번 글 참고자료:
정익사, 컴퓨터 구조의 이해
시스템 버스
- CPU와 주 기억 장치가 통신하기 위해 사용하는 데이터 버스
- 시스템 버스의 선들의 수는 한 번에 전송하는 데이터 비트 수, 기억 장치 주소 비트 수, 제어 신호에 따라 결정된다.
- 시스템 버스는 세 가지로 구성된다.
- 주소 버스(Address bus) : CPU에서 장치들로 주소를 전송하는 버스, 단방향 버스.
- 데이터 버스(Data bus) : CPU에서 장치들 간의 데이터를 주고받는 버스. 양방향 버스.
- 제어 버스(Control bus) : 장치들을 제어하기 위한 신호 버스. 양방향 버스.
주소 버스
- 데이터 읽기/쓰기 동작 시 기억 장치의 주소를 지정하기 위해 사용.
- CPU가 주소를 지정하고, 반대로 CPU는 주소를 읽을 필요가 없기에 때문에 단방향 버스임.
- 주소 버스의 수는 CPU가 지정할 수 있는 전체 기억 장치 용량을 결정한다.
- 16비트 주소 버스면 $2^{16}$개의 기억 장치 주소를 접근할 수 있다.
데이터 버스
- 데이터를 전송하기 위해 사용. CPU, 저장 장치 모두 데이터를 확인하기 때문에 양방향 버스임.
- 바이트(1Byte = 8bit)가 버스의 기본 단위
- 32비트 CPU는 한 번에 4바이트의 데이터를 읽고 쓸 수 있으며, 이를 위해 32개의 데이터 버스 선이 필요함.
제어 버스
- 각 버스 선이 고유의 기능이 있기 때문에 시스템의 구성과 동작에 따라 제어 버스의 구성이 달라진다.
- 시스템 버스의 사용 주체가 되는 장치가 버스 마스터(Bus master)이다.
- 한 순간에 하나의 버스 마스터만 시스템 버스를 사용할 수 있다.
- 두 버스 마스터는 버스 중재(Bus arbitration)을 통해 순차적으로 버스를 사용한다.
- 이 때, 사용하지 않는 슬레이브의 주소 버스와 데이터 버스는 High-Impedance 상태가 된다.
- 어떤 마스터가 버스 사용을 요청했는지, 현재 어떤 마스터가 버스를 사용하고 있는지 알 수 있는 신호가 필요하다.
시스템 버스의 동작
- 버스의 동작은 크게 읽기, 쓰기로 나뉨.
- 읽기 :
- 버스 마스터가 버스 사용권 얻음
- 주소와 읽기 신호 송신
- 데이터 읽기
- 쓰기 :
- 버스 마스터가 버스 사용권 얻음
- 주소, 데이터와 쓰기 신호 송신
- 읽기 :
- 데이터 전송 방법은 동기식, 비동기식으로 나뉨
- 동기식 : 모든 버스 동작이 공통의 버스 클록으로 결정됨.
- 비동기식 : 버스 동작이 다른 버스의 영향으로 결정됨.
동기식 버스
- 동기식 버스의 읽기 동작 순서는 클럭에 따라 다음과 같이 수행된다.
- CPU가 주소와 읽기 제어 신호를 기억 장치로 송신
- 기억 장치에서 데이터 인출 동작이 발생
- 기억 장치가 데이터 버스를 통해 CPU로 데이터 전송
- 장점 : 인터페이스 회로가 간단함
- 단점 : 클럭 주기보다 동작이 빨리 끝나는 경우 대기 시간이 길어짐
비동기식 버스
- 비동기식 버스의 읽기 동작은 클럭과 상관없이 다음 순서대로 동작이 수행된다.
- CPU가 주소와 읽기 신호 송신 후, 신호가 안정될 때까지 기다린 다음 MSYN(Master Synch Signal)를 송신한다.
- 기억장치가 주소를 받아서 데이터를 인출하고 SSYN(Slave Synch Signal)을 송신한다.
- CPU가 SSYN을 받으면 데이터를 수신하고, MYSN, 주소, 읽기 버스를 초기화한다.
- 장점 : 각 장치의 속도에 맞춰 동작하므로 불필요한 대기 시간이 없다.
- 단점 : 연속적인 동작을 처리하기 위해 인터페이스 회로가 복잡해진다.
시스템 버스의 중재
- 여러 마스터가 버스를 사용하기 위해 경쟁하는 상황을 버스 경합(Bus Contention)이라 한다.
- 해결하지 못하면 성능 저하, 더 나아가 동작 오류가 발생한다.
- 버스 경합 문제를 해결하기 위해 버스 중재기(Bus arbiter)로 버스 중재를 수행한다.
- 기능상 중요도가 높은 버스 마스터가 버스를 우선적으로 사용해야함
- 특정 버스 마스터가 오랫동안 버스를 사용 못하는 기근(Starvation) 상황을 피해야 함
- 모든 마스터는 버스 중재기의 신호에 따라 버스 사용권을 획득함
- BR(Bus Request) : 버스마스터가 중재기에 버스 사용권 요청
- BG(Bus Grant) : 중재기가 버스마스터에 버스 사용 허용
- BB(Bus Busy) : 버스 사용 중임을 장치가 알림
중앙 집중식 병렬 중재 (Centralized Parallel Arbitration)
- 모든 버스 마스터가 하나의 버스 중재기에서 각각의 중재 신호를 수신함.
- 중재기 내에서 장치들의 우선 순위를 구분해야하며, Starvation 상태를 만들어서는 안된다.
- 우선 순위 설정은 다음과 같은 방식이 있음
- 고정 우선순위 : 각 장치의 우선순위 고정. Starvation 위험 있음
- 라운드 로빈(Round Robin) : 순서대로 돌아가면서 우선순위 지정
- FIFO(First In First Out) : 선입 선출 방식
직렬 중재 / 데이지 체인 중재 (Daisy Chain Arbitration)
- 중재기, 버스 마스터를 직렬로 연결하여 직렬로 버스 허용 신호를 수신함.
- 임의의 장치가 BR을 보내면 중재기에서 가장 가까운 버스 마스터부터 BG 신호를 수신함
- 버스 사용 우선 순위가 데이지 체인 구성에 의해 결정된다.
- 하드웨어 구성이 간단하여 경제적임.
- 하드웨어 구조에 의해 Starvation이 발생하기 쉽고, 체인이 끊기면 전체 시스템이 동작하지 못함.
- 버스 조작의 감시와 장애 진단이 어려움
폴링 중재 (Polling Arbitration)
- 하나의 폴링 회선이 중재기에서 각 장치에 공통적으로 연결됨
- 중재 동작은 다음 순서를 거친다.
- 임의의 장치가 BR 신호를 송신
- 중재기가 폴링선에 각 장치 고유 번호를 송신함
- 각 장치는 폴링선의 장치 번호를 디코딩함. 자기가 BR 신호를 보냈다면 BB 신호 송신
- 중재기에 프로세서를 탑재해 소프트웨어로 폴링을 조정할 수도 있음
- 시스템 구성에 유연하게 대응 가능
- 하드웨어 중재기에 비해 속도가 느림
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.