시스템 버스가 3종류인 이유

na4980의 이미지

시스템 버스는 흔히 어드레스 버스, 데이터 버스, 컨트롤 버스 이렇게 3종류로 나뉘어지는걸로 알고 있습니다.

근데 문득 이 시스템 버스가 왜 3종류로 나눠져있는지 궁금합니다.

어떠한 장점이 있는지 엔지니어 분들의 조언 부탁드립니다.

bus710의 이미지


그 이상은 필요가 없고
그 이하는 어떻게 쓸 도리가 없으니까 그렇게 정해졌겠죠.

너무 원론적인 답인가요...?^^

MCU로 메모리나 외부 장치 제어를 하시면 쉽게 납득이 가실 듯...

life is only one time

dymaxion의 이미지

컴퓨터 공학 전공자도 아닙니다만
제가 아는대로 간단히 개념만 설명해 드리자면,
말씀하신 데이타버스가 3가지로 구분되어 별도로 취급되는 것은
'하바드 아키텍쳐'라는 구조입니다.

하바드 아키텍쳐로 구성할 경우, 각각의 버스가 따로 나와야 되니깐
상식적으로 생각해 봐도 회로기판의 버스 핀수가 좀 많아지는 경향이 있겠죠 ..
또 메모리상에
명령어(인스트럭션)을 저장하는 영역이랑
데이타를 저장하는 영역이랑 완전히 따로 구분되어 있어서
메모리도 좀 더 여유있게 확보해야 되는 경향이 있을 꺼고요.
대신에 명령어랑 데이타를 동시에 맘대로 접근 가능하니깐
속도 같은데서 이익을 크게 볼 것입니다.
하바드 아키텍쳐를 사용하는 칩은 대부분 RISC나 DSP칩입니다.

반면에 '폰노이만 아키텍쳐'는 대부분 CISC칩일텐데
명령어랑 데이타를 따로 분리하지 않고 같이 섞어서 취급하는데
이때문에 명령어와 데이타를 구분하기 위해서
길이를 딱딱 정해둬서 순차적으로 읽어서 처리하도록 되어 있습니다.
폰노이만 아키텍쳐는 아무래도 회로기판에 나오는 핀 수가 적어지겠고요.
메모리도 영역구분없이 전부 다 쫙 쓸 수 있으니 좀 더 여유가 있을지도 모르고요.
대신에 처리속도는 좀 떨어질 수 있다고 합니다만

뭐 이런 일장일단 같은 특징은 요즘에 와서는 둘다 앞서거니 뒷서거니 하는데다가
폰노이만 아키텍쳐에 하바드 아키텍쳐 특징을 섞어넣는다던가 하는 융합 스타일도 나오는 식인지라
뭐가 더 우월하네 하는건 의미가 없을지도 모르겠네요.

폰노이만의 CISC칩과 하바드 아키텍쳐의 RISC칩의 또다른 차이점은...

CISC의 경우에는 어큐뮬레이터라는 전용 레지스터(작업대 같은 개념) 하나만을 두고
스택에 쌓여있는 명령어+데이타 셋트를 가져다가 하나씩 처리해 뱉아내주는 식인데

RISC의 경우에는 그냥 일반목적의 레지스터가 주루룩 여러개 미리 준비되어 있는지라
레지스터들이 많다 보니 스택 같은것도 필요없고 그냥 되는대로(?) 막 처리하는 식입니다.

임베디드 쪽에서는 TI사에서 DSP칩을 처음 내 놨을때
하바드 아키텍쳐를 사용했기 때문에
실시간으로 빠르게 신호를 처리하는 용도로 더 유리해서 (부동소숫점 연산 같은거 엄청 빠르고 데이타를 빠르게 접근할 수 있으니깐)
히트상품이 되었었는데...
요즘에는 클락이 원체 빨라지고 기술들이 융합하는지라 그런 것도 다 의미 없어지는 추세인 듯 하네요.

(제 설명에 오류가 있거나 오해소지가 있는 표현이 있으면 다른 분이 지적해서 정정해 주시기 바래요~)

======================================
Mechanical Engineer
DymaxionKim.github.io
======================================

poplinux의 이미지

데이터 처리를 위한 최소한의 단위네요.

어드레스 버스로 주소 지정하고
데이터 버스로 해당하는 주소로 데이터 보내주고
컨트롤 버스로 제어해주고,

하나로 합쳐도 될 것 같기는 합니다. 클럭을 세배 정도 높여서.

========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux

임베디드 리눅스 관련 프리렌서 지향