맨위로가기

하버드 아키텍처

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

하버드 아키텍처는 명령어와 데이터를 별도의 메모리 공간에 저장하는 컴퓨터 아키텍처이다. 이는 초기 컴퓨터인 하버드 마크 I에서 유래되었으며, 폰 노이만 아키텍처와 비교하여 CPU가 캐시 없이도 동시에 명령어와 데이터에 접근할 수 있어 속도 향상에 기여한다. 현대의 많은 마이크로컨트롤러와 디지털 신호 처리 장치에 적용되며, 최근에는 CPU 내 캐시 메모리 구성에 활용되기도 한다. 하버드 아키텍처는 명령과 데이터의 비트 수를 다르게 사용할 수 있다는 장점이 있으며, 변형된 하버드 아키텍처는 캐시 메모리 분리를 통해 성능을 더욱 향상시킨다. 하지만, 명령 캐시와 데이터 캐시를 분리하여 사용하는 경우 캐시 일관성 문제가 발생할 수 있다.

더 읽어볼만한 페이지

  • 하버드 대학교 - 하버드-옌칭 연구소
    하버드-옌칭 연구소는 1928년 옌칭대학교 총장에 의해 설립되어 하버드 대학교와 동아시아 연구를 지원하고, 하버드-옌칭 도서관 운영 및 학술 교류를 진행한다.
  • 하버드 대학교 - 하버드 케네디 스쿨
    하버드 케네디 스쿨은 1936년 하버드 대학교 정부대학원으로 설립되어 공공정책, 국제관계, 공공행정 분야의 교육 및 연구를 수행하며 공공 부문 리더십 양성에 중점을 둔 하버드 대학교 대학원이다.
  • 컴퓨터 구조 - PA-RISC
    PA-RISC는 휴렛 팩커드에서 개발한 RISC 기반 명령어 집합 아키텍처로, HP 서버 및 워크스테이션에 사용되었으며 대용량 L1 캐시와 SIMD 명령어 확장 등의 특징을 가졌으나 아이테니엄 아키텍처로의 전환으로 단종되었다.
  • 컴퓨터 구조 - 메모리 관리
    메모리 관리는 운영체제의 핵심 기능으로, 여러 프로세스의 원활한 실행을 위해 메모리 공간을 할당하고 관리하며, 릴로케이션, 보호, 공유, 가상 메모리 관리, 자동/수동 메모리 관리 등의 기능을 수행한다.
하버드 아키텍처
개요
유형컴퓨터 아키텍처
설계 방식분리된 저장 공간 및 신호 경로 (데이터 및 명령어)
특징
주요 특징데이터와 명령어를 위한 별도의 메모리 공간
데이터와 명령어를 병렬로 인출 가능
더 빠른 실행 속도
장점동시 메모리 접근을 통해 성능 향상
명령어 크기 최적화 용이
단점복잡한 하드웨어 설계
메모리 공간 활용의 비효율성 가능성
구조
구성 요소명령어 메모리
데이터 메모리
명령어 버스
데이터 버스
CPU
버스명령어 버스: CPU가 명령어 메모리에서 명령어를 읽어오는 데 사용
데이터 버스: CPU가 데이터 메모리에서 데이터를 읽고 쓰는 데 사용
활용
주요 사용 분야디지털 신호 처리 (DSP)
마이크로컨트롤러
임베디드 시스템
예시Atmel AVR 마이크로컨트롤러
일부 ARM 프로세서
일부 DSP
관련 개념
관련 아키텍처폰 노이만 구조
비교폰 노이만 구조와 달리 데이터와 명령어를 별도의 메모리 공간에 저장
역사적 배경
유래하버드 마크 I
초기 목적병렬 처리 및 빠른 연산 속도

2. 역사

이 명칭은 초창기 컴퓨터 중 하나인 하버드 마크 I에서 유래했다. 하버드 마크 I은 프로그램 명령을 천공 테이프에서 읽고, 데이터는 릴레이의 ON/OFF 상태로 저장하는 방식을 사용했다. 초기 컴퓨터는 메모리 영역이 매우 작았기 때문에 중앙 처리 장치(CPU) 내부에 모든 메모리 영역이 포함되어 있어 명령 메모리 영역을 데이터로 취급할 수 없었다.

2. 1. 폰 노이만 구조와의 비교

폰 노이만 구조에서 중앙 처리 장치(CPU)는 메모리로부터 명령과 데이터를 읽고 쓴다. 명령과 데이터는 같은 신호 버스와 메모리를 사용하기 때문에 이러한 접근은 동시에 발생할 수 없다.[7]

하지만 하버드 아키텍처는 명령을 메모리에서 읽는 것과 데이터를 메모리에서 읽는 것을 동시에 할 수 있다. 하버드 아키텍처는 명령 처리가 완료됨과 동시에 다음 명령을 읽을 수 있어 더 빠른 속도를 낼 수 있다. 그러나 이러한 처리 속도를 높이려면 더 많은 전기 회로가 필요하다.

순수한 폰 노이만 구조에서는 명령어와 데이터가 동일한 메모리에 저장되므로, 명령어를 가져오는 데 사용되는 데이터 경로를 통해 데이터를 가져온다. 따라서 CPU가 동시에 명령어를 읽고 메모리에서 데이터를 읽거나 쓸 수 없다.

또한 하버드 아키텍처는 코드와 데이터 주소 공간이 분리되어 있다. 즉, 명령어 주소 0과 데이터 주소 0은 동일하지 않다. 명령어 주소 0은 24비트 값을 가리킬 수 있지만, 데이터 주소 0은 해당 24비트 값의 일부가 아닌 8비트 바이트를 나타낼 수 있다.

3. 하버드 아키텍처의 부활과 현대적 응용

최근 CPU의 성능이 메모리의 속도에 비해 크게 향상되면서, 메모리 속박 문제가 발생했다. 이 문제를 해결하기 위해 캐시라고 불리는 작고 빠른 메모리가 도입되었다. CPU는 필요한 데이터가 캐시에 있으면 성능 향상을 얻지만, 캐시에 없으면 주 메모리에서 데이터를 가져와야 한다.

현대의 고성능 CPU 설계는 하버드 아키텍처와 폰 노이만 아키텍처를 모두 도입하고 있다. 캐시 메모리는 보통 명령어용과 데이터용으로 분리되어 있으며, CPU와 캐시의 관계에는 하버드 아키텍처가 활용된다.

하버드 아키텍처는 특수한 디지털 신호 처리 프로세서(DSP)에서 자주 사용된다. 예를 들어, 아날로그 디바이스블랙핀 프로세서가 있다. 범용 마이크로컨트롤러도 하버드 아키텍처에 기반을 두고 있는데, 마이크로칩 테크놀로지사의 PIC 마이크로컨트롤러, Atmel사의 AVR 마이크로컨트롤러 등이 그 예이다. 이러한 프로세서는 프로그램과 데이터를 저장하는 작은 메모리를 내장하고 있으며, 프로그램 메모리와 데이터 메모리가 분리되어 있어 각자 다른 비트수를 사용할 수 있다.

3. 1. 현대적 응용 사례

디지털 신호 처리기(DSP)는 작고 고도로 최적화된 오디오 또는 비디오 처리 알고리즘을 실행하는 데 하버드 아키텍처를 사용한다.[10] DSP는 동작이 매우 재현 가능해야 하므로 캐시를 사용하지 않으며, 여러 주소 공간을 처리하는 어려움은 실행 속도에 비해 부차적인 문제이다. 텍사스 인스트루먼트 TMS320 C55x 프로세서와 같이 일부 DSP는 SIMD 및 VLIW 처리를 용이하게 하기 위해 별개의 주소 공간에 여러 개의 데이터 메모리를 갖추고 있다.

마이크로컨트롤러는 적은 양의 프로그램(플래시 메모리) 및 데이터(SRAM) 메모리를 특징으로 하며, 동시 명령 및 데이터를 통해 처리 속도를 높이기 위해 하버드 아키텍처를 활용한다.[11] 별도의 스토리지는 프로그램 및 데이터 메모리가 서로 다른 비트 폭(예: 16비트 폭 명령, 8비트 폭 데이터)을 가질 수 있게 하며, 명령어 프리페치를 다른 활동과 병렬로 수행할 수 있게 한다. 마이크로칩 테크놀로지, Inc.PIC와 Atmel Corp (현재 마이크로칩 테크놀로지의 일부)의 AVR이 그 예이다.

4. 변형 하버드 아키텍처

변형 하버드 아키텍처는 하버드 아키텍처와 비슷하지만, CPU가 두 개 이상의 메모리 버스에 동시에 접근할 수 있도록 명령어와 데이터 간의 엄격한 분리를 완화한다. 가장 일반적인 수정은 공통 주소 공간으로 지원되는 별도의 명령어 및 데이터 CPU 캐시를 포함하는 것이다. CPU가 캐시에서 실행되는 동안에는 순수한 하버드 머신처럼 작동하며, 백업 메모리에 접근할 때는 폰 노이만 머신처럼 작동한다. 이러한 수정은 ARM 아키텍처, Power ISA, x86 프로세서와 같은 현대 프로세서에서 널리 사용된다.[14]

또 다른 수정 사항은 ROM 또는 플래시 메모리와 같은 명령어 메모리와 CPU 사이에 경로를 제공하여 명령어 메모리의 내용을 읽기 전용 데이터로 처리할 수 있도록 하는 것이다. 이 기술은 Atmel AVR을 포함한 일부 마이크로컨트롤러에서 사용된다. 이를 통해 텍스트 문자열 또는 함수 테이블과 같은 상수 데이터는 먼저 데이터 메모리에 복사할 필요 없이 접근할 수 있으며, 읽기/쓰기 변수를 위해 부족한 데이터 메모리를 보존할 수 있다. 명령어 메모리에서 데이터를 읽기 위한 특수 기계어 명령이 제공되거나, 주변 인터페이스를 사용하여 명령어 메모리에 접근할 수 있다.

5. 메모리 세부 사항

하버드 아키텍처에서는 두 개의 메모리가 특징을 공유할 필요가 없다. 특히, 워드 폭, 타이밍, 구현 기술, 메모리 주소 구조가 다를 수 있다.[14] 일부 시스템에서는 명령어 메모리가 데이터 메모리보다 훨씬 커서 명령어 주소가 데이터 주소보다 더 넓다.[14]

6. 장점과 단점

하버드 아키텍처는 CPU 성능 향상에 기여하지만, 프로그램 실행 중 데이터 처리에 있어서는 별도의 과정이 필요하다는 단점도 존재한다.

CPU 성능이 메모리 속도보다 크게 향상되면서, 메모리 접근 횟수를 줄이는 것이 중요해졌다. 이를 위해 캐시라는 고속 메모리를 사용하여 성능을 높인다. 최신 CPU는 하버드와 폰 노이만 구조를 모두 활용하는데, CPU와 캐시 사이에는 하버드 아키텍처를, CPU 외부에는 폰 노이만 구조를 적용한다.

하버드 아키텍처는 아날로그 디바이스블랙핀 프로세서나, 마이크로칩 테크놀로지사의 PIC, ATMEL사의 AVR 마이크로 컨트롤러와 같은 범용 마이크로 컨트롤러 등 특수한 디지털 신호 처리 장치에서 자주 쓰인다.[13]

폰 노이만 아키텍처는 CPU가 같은 신호 경로를 통해 명령과 데이터를 읽고 쓰기 때문에, 메모리 접근 속도가 느리면 성능 저하(폰 노이만 병목 현상)가 발생한다. 그러나 마이크로컨트롤러처럼 사용자가 프로그램을 교체할 필요가 없는 경우에는 여전히 하버드 아키텍처가 사용된다.

최근 고성능 프로세서는 캐시 메모리를 명령어 캐시와 데이터 캐시로 나누어 하버드 아키텍처를 도입하기도 한다.

6. 1. 장점

하버드 아키텍처는 명령어와 데이터를 동시에 처리하여 속도를 향상시킬 수 있다. 이는 명령 메모리와 데이터 메모리가 분리되어 있기 때문에 가능한데, 각 메모리는 서로 다른 비트수를 사용할 수 있다는 장점도 있다. 예를 들어 AVR 프로세서는 명령어는 16비트, 데이터는 8비트로 처리하여 RISC 구조와 함께 1 머신 사이클에 1 명령을 실행할 수 있다.[14]

하버드 마크 I은 프로그램 명령을 천공 테이프에서 읽고, 데이터는 릴레이의 ON/OFF 상태로 저장하는 초기 컴퓨터였다. 당시에는 단일 프로그램 실행이 주 목적이었고, 프로그램 실행 중 명령을 수정할 필요가 없었다. 하버드 아키텍처는 명령 읽기와 데이터 읽기가 충돌하지 않아, 명령 처리가 완료되면 바로 다음 명령을 읽을 수 있어 고속화에 유리했다. 어드레스 버스와 데이터 버스를 여러 개 갖추면 더 빠른 속도를 낼 수 있었다.[13]

6. 2. 단점

하버드 아키텍처는 폰트 데이터, 표시할 문장 데이터 등과 같이 프로그램과 데이터가 함께 혼합된 경우에 단점이 있다. 프로세서가 이러한 데이터를 읽으려고 할 때, 데이터는 명령(프로그램) 메모리에 존재하기 때문에 특수한 명령어가 필요하고 주소 변환 과정을 거쳐야 한다.[14] 이는 회로 구성을 복잡하게 하고 비용을 높이는 원인이 된다.

7. 명령/데이터 분리 캐시 문제

범용 마이크로프로세서에서 명령 캐시와 데이터 캐시를 분리하고, 라이트백(write back)형 캐시를 사용할 경우 문제가 발생한다. 라이트백형은 캐시의 내용을 CPU에서 수정했을 때 주 메모리에 바로 반영하지 않고 보관하는 방식이다. 반면 주 메모리도 동시에 수정하는 캐시는 라이트 스루(write through)형 캐시라고 한다.

컴파일러를 사용하여 실행 파일을 만들 때, 메모리 맵 파일로 만들면 명령 줄이 데이터 캐시에 남게 된다. 따라서 컴파일 후 바로 실행하면 명령 줄이 주 메모리에 반영되지 않아 실행이 실패할 수 있다. 이는 인터프리터와 컴파일러가 통합된 일부 고급 언어나 개발 환경에서 더 자주 발생한다.

이 문제는 하버드 아키텍처의 일부에서 발생하지만, 본질적으로는 폰 노이만 구조이기 때문에 발생한다. 폰 노이만 구조에서 프로그램 명령어 자체를 수정하는 기술(동적 로딩, 동적 컴파일, 자기 수정 코드 등)을 사용하면 캐시 일관성 문제가 발생할 수 있다.

참조

[1] 서적 Embedded Systems Architecture: A Comprehensive Guide for Engineers and Programmers https://books.google[...] Newnes 2005
[2] 학술회의 Minimal Instruction Set AES Processor using Harvard Architecture https://ieeexplore.i[...] 2010
[3] 학술회의 Design of a 16-Bit Harvard Structure RISC Processor in Cadence 45nm Technology https://ieeexplore.i[...] 2019
[4] 서적 VLSI Risc Architecture and Organization https://books.google[...] Routledge 2017-09-19
[5] 학술지 The Myth of the Harvard Architecture https://ieeexplore.i[...] 2022-09-30
[6] 웹사이트 Kalimba DSP: User guide http://file.elecfans[...] 2006-07
[7] 뉴스 386 vs. 030: the Crowded Fast Lane http://www.drdobbs.c[...] Dr. Dobb's Journal 1988-01
[8] 서적 Embedded systems programming in C and Assembly https://www.worldcat[...] Van Nostrand Reinhold 1994
[9] 웹사이트 Embedded Systems Programming: Perils of the PC Cache https://users.ece.cm[...] 2022-05-26
[10] 학술지 Architecture of a digital signal processor https://ieeexplore.i[...] 1985
[11] 학술회의 Design of a high performance microcontroller https://ieeexplore.i[...] 2004
[12] 문서 ハーバード・アーキテクチャと意図的に並べる場合、ノイマン型を「プリンストン・アーキテクチャ」と、大学名で合わせて呼ぶことがある。
[13] 데이터시트 PIC16F627A/628A/648A DataSheet 2009
[14] 설명서 AVR Processor manual - LPM instruction



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com