임베디드/avr study

avr_study(2020/09/28)_폰노이만, 하버드 구조 비교

박재완 2020. 9. 28. 10:10
728x90
반응형

 avr을 다루기 전에 조금 알아두면 좋을거 같은 시리즈 바로 메모리 구조에 관한 이야기다.

우리가 주로 사용하는 컴퓨터와  mcu는 조금 다른 각자의 사정이 있다. 우리는 주로 이렇게 알고 있다.

컴퓨터는 폰노이만 구조(VON-NEUMANN ARCHITECTURE)를 사용한다.

 mcu는 즉 avr은 하버드 구조(HARVARD ARCHITECTURE)를 사용한다. 

이러한 사실은 mcu를 독학하거나 만져본 사람들은 많이 들어 봤을거라고 생각한다. (물론 처음 들어도 이상한건 아니다)

그런데 왜 이런 차이를 가지게 된것일까??

이러한 차이를 알기위해서는 우리는 우선 두 구조에 대해서 알아볼 필요가 있다.

폰 노이만 구조

- 폰 노이만이 고안한 내장 메모리 순차처리 방식이다. 

- 데이터 메모리와 프로그램 메모리가 구분되어 있지 않아 하나의 버스를 가지고 있는 구조를 말한다. 

- CPU는 메모리로부터 명령을 읽고, 메모리로부터 데이터를 데이터를 읽고 쓰기도 하는데, 명령과 데이터는 같은 신호 버스와 메모리를 사용하기 때문에 동시에 접근하는 것은 불가능하다.  <- 이러한 이유로 고속 병렬 처리를 요구하는 작업을 실행할때 '병목 현상'이 발생한다.

- 폰 노이만 구조는 소프트웨어(프로그램)만 교체하면 되기 때문에, 그 이전의 컴퓨터들보다 범용성이 크게 향상된다. 

- CPU, 메모리, 프로그램 구조를 갖는 프로그램 내장방식 컴퓨터 아이디어를 처음 제시하였고, 그 이후에 나온 컴퓨터는 대부분 폰 노이만의 설계를 기본 구조로 한다. 

어찌보면 일장일단이 있어보인다. 하지만 이러한 구조를 cpu 와 같은 현대적인 컴퓨터에서 사용하는 이유는 간단하다.

다른 작업을 시킬때 추가적인 하드웨어적인 작업이 크게 필요 없다는 것이다. 예를 들어우리가 usb 를 이용하려 한다면 그냥 usb 포트나 usb허브를 추가하고 꼽아주면 되는것과 비슷한 느낌이다. 단순히 필요에 의한 드라이버 즉  sw의 작업만으로 다른 작업을 추가하거나 증설시키는 것이 가능하다는 것이 큰장점이다. 이러한 이유로 컴퓨터와 같은 구조에서는 널리 사용한다.

이러한 폰노이만의 구조의 단점인 병목현상에 대해서 좀더 자세히 살펴보자면...

흔히 컴퓨터에 관심있거나 여러 벤치마크를 하는 유투버분들이 주로 하는말로 들어 봤을 말인 병목현상이라는 것이다. 여기서 말하는 병목현상이 이와 비슷한 것이다. 실제 컴퓨터에는 cpu와  gpu가 주요 장비로써 있는데 보통 gpu 는 많은 그래픽 데이터를 병렬(이는 나중에 기회가 되면 gpu cpu차이로 한번 비교해보고자 한다.)처리한다. 그렇기에 gpu에서 처리된 방대한 데이터가 cpu와 통신을 이루면서 사용자의 디스플레이에 뿌리게 되는데  cpu는 폰노이만 구조로 많은양의 데이터가 들어오면 해당 데이터를 처리 하기 전까지 뒤의 작업들은 처리 할 수 없게 된다. 이러한 데이터가 뒤에 쌓이고 쌓이면서 아주 큰 교통 체증 같은 것이 만들어 지게 되는데 이러한 현상을 주로 병목 현상이라고 부른다.

이러한 내용을 기반으로 단점을 정리해보자면... 

- 기억장소의 지연현상을 일컫는데, 나열된 명령을 순차적으로 수행하고, 그 명령은 일정한 기억장소의 값을 변경하는 작업으로 구성되는 폰 노이만 구조에서 병목현상은 나타날 수 밖에 없다.

- 메모리의 값을 읽고 쓰는 구조이기 때문에 명령과 데이터를 접근할때 병목현상이 생길 수 밖에 없다. 

- 이러한 문제를 완화하기 위해 하버드 구조가 나타나게 되었다.

 

하버드 구조

- 폰 노이만 구조와 가장 큰 다른점은 명령용 버스와 데이터용 버스가 물리적으로 분할되어 있다는 점이다. 

- 하버드 구조에서는 명령을 메모리로부터 읽는 것과 데이터를 메모리로부터 읽는 것을 동시에 할 수 있다. 

- 폰 노이만 구조에서 생기는 병목현상이 적어 명령의 처리를 끝내자마자 다음의 명령을 읽어들일 수 있기 때문에 더 빠른 속도를 낼 수 있다. 

- 하지만 이러한 처리 속도를 높이려면 많은 전기 회로가 필요하다는 것이 단점이다. 

- 이러한 문제를 완화하기 위해 수정된 하버드 구조가 도입되었다. 

현재 avr 같은곳에서 자주 사용되는 구조이다. 폰노이만 구조와 달리 버스가 물리적으로 분활되어 있어서 적은 연산으로도 병목 현상 없이 많은 명령어들을 빠르게 읽어낼수 있기 때문에 레지스트리 명령어로 움직이는 avr에서는 매우 효과가 있는 방식이라 아직 많이 애용되고 있는 구조 이다. 하지만 다양한 작업을 처리하게 하기 위해서는 mcu 자체 많은 하드웨어 적인 전선이 변경되거나 여러 작업을 해둬야 하는 경우가 많다.

대표적인 예가 바로  atmega128 블록도를 보면 알 수 있는데... 

지정된 gpio에 각자의 특성(spi, usart,adc등등)을 위해서 다양한 회로 작업이 내부에서 요구 하게된다. 이러한 작업이 필요해지는것이 바로 하버드 구조의 큰 단점이라고 할 수 있다. 이러한 전기 회로를 조금이나마 간략화 하기 위한것이 바로 수정된 하버드 구조이다.

수정된 하버드 구조

 

- 하버드 구조에서 사용했던 통합 캐시 메모리를 분리하여 하나의 클록 사이클에서 적재(Load)와 저장(Store) 명령어를 동시에 실행할 수 있도록 해준다.

- 캐시 메모리 장치는 명령용과 데이터용으로 구분되어 있다.

- 하버드 구조를 캐시메모리 장치의 적용하였고, 폰 노이만 구조를 CPU 외부(주 메모리)에 적용하였다. 

- 성능이 좋은 CPU 설계에서는 수정된 하버드 구조를 도입하고 있다. 

 

위에서 본것처럼.. 현재에는 이러한 폰노이만의 구조와 하버드 구조의 장단점을 차용하여 만들어지고 있다. 그러니 이것은 무슨구조! 이런것보단 위의 메모리 구조들이 왜 나왔고, 이러한 장점이 있지만 단점들이 있어서 계속해서 수정되고 다양하게 적용되고 있다는 것을 알고 있다면 좋을거 같다.

728x90
반응형

'임베디드 > avr study' 카테고리의 다른 글

pullup, pulldown  (0) 2020.10.08
ddrx, pinx, portx (2020/10/04)  (0) 2020.10.04
AVR-STUDY 2일차 (LED ON/OFF )  (0) 2019.12.08
avr-study 1일차 (atmel studio 7 설치 및 실행 테스트)  (0) 2019.12.08