메모리 아키텍처에 대하여 (폰 노이만 아키텍처, 하버드 아키텍처)
앱 과정을 새롭게 시작하면서 컴퓨터 아키텍처의 개요에 대한 설명을 들었다.
찾아보니 하버드 아키텍처, 폰 노이만 아키텍처는 정확하게는 메모리 아키텍처에 대한 설명이라고 한다.
그래서 메모리 아키텍처의 정의, 각 아키텍처에 대해 간단하게 조사해보았다.
메모리 아키텍처
정의
메모리 아키텍처는 정보를 저장하고 검색하는 가장 빠르고, 가장 안정적이며, 가장 내구성이 좋고, 가장 비용이 적게 드는 방법을 조합하여 컴퓨터 데이터 저장소를 구현하는 데 사용되는 방법을 설명한다. 특정 애플리케이션에 따라 다른 요구 사항을 개선하기 위해 이러한 요구 사항 중 하나를 절충해야 할 수도 있다. 또한 메모리 아키텍처는 이진 숫자가 전기 신호로 변환되어 메모리 셀에 저장되는 방식과 메모리 셀의 구조에 대해서도 설명한다.
예를 들어, 동적 메모리는 액세스 속도가 빠르기 때문에 일반적으로 기본 데이터 저장소로 사용된다. 그러나 동적 메모리는 초당 수십 번의 전류가 급증하여 반복적으로 새로 고쳐야 하며, 그렇지 않으면 저장된 데이터가 손상되어 데이터가 손실된다. 플래시 메모리는 수년 동안 장기 저장이 가능하지만 동적 메모리보다 훨씬 느리고, 정적 메모리 저장 셀은 자주 사용하면 마모된다.
마찬가지로 데이터 버스는 직렬 또는 병렬 데이터 액세스와 같은 특정 요구에 맞게 설계되는 경우가 많으며, 메모리는 패리티 오류 감지 또는 오류 정정 기능을 제공하도록 설계될 수 있다.
가장 초기의 메모리 아키텍처는 프로그램과 데이터 저장 모두에 단일 메모리와 데이터 경로를 사용하는 폰 노이만 아키텍처와 프로그램과 데이터를 위한 두 개의 메모리와 데이터 경로가 물리적으로 분리된 하버드 아키텍처가 있다.
폰 노이만 아키텍처 (von Neumann Architecture )
정의
폰 노이만 아키텍처는 프로그램 명령어와 데이터를 동일한 메모리 공간에 저장하고, 중앙처리장치(CPU)를 통해 순차적으로 처리하는 컴퓨터 구조
구성요소
- 산술 논리 장치(ALU): 산술 및 논리 연산을 수행
- 제어 장치(Control Unit): 명령어의 해석과 실행을 제어
- 메모리(Memory): 명령어와 데이터를 저장
- 입출력 장치(I/O Devices): 외부와의 데이터 교환을 담당
- 단일 버스 시스템: 명령어와 데이터를 동일한 경로로 전달
특징
폰 노이만 아키텍처는 단일 메모리 공간을 사용하여 프로그램 명령어와 데이터를 동일한 메모리에 저장하는 구조이다. 이를 통해 프로그램과 데이터가 같은 공간에 존재하므로, 하드웨어의 변경 없이 소프트웨어만으로 다양한 작업을 수행할 수 있다. 이 방식은 프로그램 내장 방식(stored-program concept)이라고도 하며, 프로그램을 메모리에 저장하고 그에 따라 실행하는 방식으로 컴퓨터 시스템의 유연성을 크게 향상시킨다.
또한, 폰 노이만 아키텍처는 단일 버스 구조(single memory path)를 채택하고 있다. 이는 명령어와 데이터가 동일한 버스를 통해 CPU와 메모리 간에 전달되도록 하여, 하드웨어의 복잡성을 줄이고 설계를 단순화하는 장점이 있다. 하지만 이 구조는 명령어와 데이터를 동시에 처리할 수 없다는 단점도 가진다.
마지막으로, 순차적 처리 방식(sequential processing)을 따른다. 즉, 프로그램 카운터(Program Counter, PC)의 지시에 따라 명령어가 하나씩 순차적으로 처리된다. 이 방식은 프로그램 흐름을 예측 가능하게 하고, 처리의 일관성을 유지할 수 있게 해준다.
장점
- 단일 메모리와 버스를 사용하여 하드웨어 구조가 간단하고 구현이 용이하여 단순한 설계가 가능
- 하드웨어 구성 요소가 적어 비용이 절감
- 프로그램 내장 방식으로 다양한 작업을 소프트웨어적으로 처리 가능하므로써 유연성 및 범용성이 증대
- 구조가 단순하여 시스템 확장이 용이
하버드 아키텍처 (Harvard Architecture)
정의
본래 명령용 버스와 데이터용 버스로 물리적으로 분할한 컴퓨터 아키텍처를 나타내는 용어
특징
하버드 구조를 사용하는 MCU들은 두개의 데이터 버스를 가지고 있다. 한개의 버스는 8비트이며 CPU를 RAM에 연결하고, 다른 하나는 12, 14, 혹은 16비트이며 CPU를 ROM에 연결한다. 따라서 CPU는 인스트럭션과 데이터를 동시에 엑세스 할 수 있다. 모든 RAM 메모리는 8비트이기 때문에 모든 데이터는 8비트 데이터버스로 교환이 가능하다. 프로그램 작성시에는 8비트 데이터만 신경을 쓰면 된다. 즉 프로그램에서 변경하거나 다루는 데이터는 모두 8비트이다. MCU용 프로그램은 MCU 내부의 ROM에 저장이 되는데, ROM 메모리는 8비트를 가지고 있는 것이 아니라 12, 14, 혹은 16비트를 가지고 있다. 여기서 8비트로 빼고 남은 4, 6, 8비트에는 CPU가 8비트 데이터를 가지고 무엇을 해야할지 알려주는 인스트럭션이 있다.
장점
- 프로그램상의 모든 데이터는 1바이트(8비트)이다. 프로그램을 읽는 데이터버스가 따로 있기 때문에 인스트럭션과 데이터를 동시에 읽을 수 있다. 인스트럭션과 데이터를 동시에 읽을 수 있기 때문에 모든 인스트럭션은 싱글 싸이클 인스트럭션이다. 2 cycle Jump인스트럭션 제외.
- 프로그램(ROM 데이터)과 임시 데이터(RAM 데이터)가 분리 되어 있기 대문에 CPU는 두개의 인스트럭션을 동시에 실행시킬 수 있다.
- 폰노이만 구조를 사용할때는 프로그램에 의해 얼마나 많은 메모리가 차지되고 있는지 알수 없다. 기본적으로 대부분의 프로그램 인스트럭션은 두개의 메모리 영역을 차지하는데 하나는 무엇을 해야할지를 알려주는 정보이며, 다른 하나는 어떤 데이터를 가지고 해야할지를 알려주는 정보이다. 하버드 구조에서는 프로그램 버스가 1 바이트 더 커서 인스트럭션과 데이터를 같이 포함할 수 있다. (예. 메모리 위치 + 프로그램 인스트럭션 위치)
출처:
https://en.wikipedia.org/wiki/Memory_architecture
Memory architecture - Wikipedia
From Wikipedia, the free encyclopedia Methods used to implement electronic computer data storage Memory architecture describes the methods used to implement electronic computer data storage in a manner that is a combination of the fastest, most reliable, m
en.wikipedia.org
https://vctec.co.kr/article/%EC%9E%90%EB%A3%8C%EC%8B%A4/7/73/
[PIC 프로그래밍] 3. PIC 프로그래밍시 반드시 알아야 할 사항 - MCU 설계구조(폰노이만, 하버드, RISC,
자료실입니다.
vctec.co.kr
https://web.archive.org/web/20130314123032/http://qss.stanford.edu/~godfrey/vonNeumann/vnedvac.pdf