하버드 건축

Harvard architecture
하버드 건축

Harvard 아키텍처는 명령 및 데이터위한 별도의 스토리지 및 신호 경로를 가진 컴퓨터 아키텍처입니다.이는 프로그램 명령과 데이터가 동일한 메모리와 경로를 공유하는 von Neumann 아키텍처와 대조됩니다.

이 용어는 Harvard Mark I 릴레이 기반 컴퓨터에서 유래했습니다. 이 컴퓨터는 천공 테이프(폭 24비트)에 명령을 저장하고 전자 기계식 카운터에 데이터를 저장합니다.이러한 초기 기계들은 중앙 처리 장치 내에 데이터 스토리지가 완전히 포함되었고 데이터로서의 명령 스토리지에 대한 액세스를 제공하지 않았습니다.오퍼레이터가 프로그램을 로드해야 했습니다.프로세서가 자신을 초기화할 수 없었습니다.

최신 프로세서는 데이터와 동일한 메인 메모리에 프로그램 코드가 저장되어 있는 폰 노이만 기계로 사용자에게 보입니다.성능상의 이유로 대부분의 설계에는 명령 및 데이터용으로 별도의 프로세서 캐시가 있으며 프로세서에는 각각 별도의 경로가 있습니다.이것은 수정된 하버드 건축물로 알려진 것의 한 형태입니다.

메모리 상세

하버드 건축에서는 두 기억이 특징을 공유하게 할 필요가 없습니다.특히, 워드폭, 타이밍, 실장 기술 및 메모리 주소 구조는 다를 수 있다.일부 시스템에서는 미리 프로그래밍된 작업에 대한 명령을 읽기 전용 메모리에 저장할 수 있지만 데이터 메모리에는 일반적으로 읽기-쓰기 메모리가 필요합니다.일부 시스템에서는 명령 메모리가 데이터 메모리보다 훨씬 더 많기 때문에 명령 주소가 데이터 주소보다 넓습니다.

von Neumann 아키텍처와의 대조

순수한 폰 노이만 아키텍처를 가진 시스템에서는 명령과 데이터가 동일한 메모리에 저장되므로 명령어는 데이터를 가져오기 위해 사용되는 동일한 데이터 경로를 통해 받아들여진다.즉, CPU는 명령을 읽는 동시에 메모리에서 데이터를 읽거나 쓸 수 없습니다.하버드 아키텍처를 사용하는 컴퓨터에서는 CPU는 캐시가 없어도 명령을 읽고 동시에 데이터 메모리 액세스를 [1]수행할 수 있습니다.따라서 Harvard 아키텍처 컴퓨터는 명령 페치와 데이터 액세스가 단일 메모리 경로를 경쟁하지 않기 때문에 주어진 회로 복잡성에 대해 더 빠를 수 있습니다.

또한 Harvard 아키텍처 머신에는 코드와 데이터 주소 공간이 구분되어 있습니다.명령 주소 0은 데이터 주소 0과 동일하지 않습니다.명령 주소 0은 24비트 값을 나타내는 반면 데이터 주소 0은 24비트 값의 일부가 아닌8비트 바이트를 나타내는 경우가 있습니다.

수정된 하버드 아키텍처와의 대조

수정된 Harvard 아키텍처 머신은 Harvard 아키텍처 머신과 매우 유사하지만 명령과 데이터의 엄격한 분리를 완화하면서 CPU가 두 개 이상의 메모리 버스에 동시에 액세스할 수 있도록 합니다.가장 일반적인 수정에는 공통 주소 공간에 의해 지원되는 개별 명령 및 데이터 캐시가 포함됩니다.CPU는 캐시에서 실행되지만 순수 하버드 머신으로 동작합니다.백업 메모리에 액세스 할 때는, von Neumann 머신과 같이 동작합니다(데이터처럼 코드를 이동할 수 있는, 강력한 기술입니다).이 변경은 ARM 아키텍처, Power ISA 및 x86 프로세서 등의 최신 프로세서에서 널리 사용되고 있습니다.그것은 때때로 하버드 건축이라고 불리기도 하는데, 실제로 그것이 "수정"되었다는 사실을 간과하고 있다.

또 다른 변경은 명령 메모리(ROM 또는 플래시 메모리 등)와 CPU 사이의 경로를 제공하여 명령 메모리로부터의 워드를 읽기 전용 데이터로 취급할 수 있도록 한다.이 기술은 Atmel AVR을 포함한 일부 마이크로컨트롤러에서 사용됩니다.이를 통해 텍스트 문자열이나 함수 테이블과 같은 지속적인 데이터에 액세스할 수 있으므로 먼저 데이터 메모리에 복사할 필요 없이 읽기/쓰기 변수를 위한 부족한 데이터 메모리(및 전력 소모가 많은 데이터 메모리)를 유지할 수 있습니다.명령 메모리에서 데이터를 읽기 위해 특별한 기계어 명령이 제공되거나 주변 [a]인터페이스를 사용하여 명령 메모리에 액세스할 수 있다.(이것은 개별 상수에 대해 두 메커니즘이 서로 대체할 수 있지만 상수 데이터를 포함하는 명령과는 다릅니다.)

스피드

최근에는 메인 메모리의 액세스 속도에 비해 CPU의 속도가 몇 배나 향상되었습니다.성능을 유지하기 위해 메인 메모리에 액세스하는 횟수를 줄이도록 주의를 기울여야 합니다.예를 들어 CPU에서 실행되는 모든 명령에 메모리에 대한 액세스가 필요한 경우 CPU 속도가 증가해도 컴퓨터는 아무것도 얻지 못합니다.이 문제를 메모리바인드라고 부릅니다.

매우 빠른 메모리를 만들 수 있지만, 이는 비용, 전력 및 신호 라우팅의 이유로 적은 양의 메모리에서만 실용적입니다.해결책은 최근에 액세스한 데이터를 저장하는 CPU 캐시라고 하는 매우 빠른 메모리를 소량 제공하는 것입니다.CPU에 필요한 데이터가 캐시에 있는 한 CPU가 메인 메모리에서 데이터를 가져와야 할 때보다 성능이 훨씬 향상됩니다.그러나 다른 한편에서는 반복적인 프로그램이나 데이터를 저장하는 데 한계가 있을 수 있으며 스토리지 크기 제한 및 이와 [b]관련된 기타 잠재적인 문제가 있을 수 있습니다.

내부 설계와 외부 설계

현대의 고성능 CPU 칩 설계에는 Harvard 아키텍처와 von Neumann 아키텍처의 측면이 모두 포함되어 있습니다.특히 수정된 하버드 아키텍처의 "분할 캐시" 버전은 매우 일반적입니다.CPU 캐시 메모리는 명령 캐시와 데이터 캐시로 나뉜다.Harvard 아키텍처는 CPU가 캐시에 액세스할 때 사용됩니다.단, 캐시 미스의 경우 RAM, ROM 및 (NOR) 플래시 메모리에 대한 동시 액세스에 사용되는 별도의 메모리 컨트롤러가 있어도 데이터는 메인 메모리로부터 검색되며, 메인 메모리에서는 정식으로 별도의 명령 섹션과 데이터 섹션으로 분할되지 않습니다.

따라서 데이터와 코드가 동일한 메모리 컨트롤러를 통해 들어오는 경우와 같이 von Neumann 아키텍처는 일부 컨텍스트에서 볼 수 있지만 하드웨어 구현은 캐시 액세스 및 적어도 일부 메인 메모리 액세스를 위한 하버드 아키텍처의 효율성을 얻습니다.

또한 CPU에는 캐시되지 않은 영역에 대한 쓰기 후 CPU가 처리되도록 하는 쓰기 버퍼가 있는 경우가 많습니다.메모리의 von Neumann 특성은 명령어가 CPU에 의해 데이터로 쓰여지고 소프트웨어는 방금 작성된 명령어를 실행하기 전에 캐시(데이터 및 명령)와 쓰기 버퍼가 동기화되어 있는지 확인해야 할 때 표시됩니다.

하버드 건축의 현대적 용도

순수한 하버드 아키텍처의 주요 장점인 여러 개의 메모리 시스템에 동시에 액세스할 수 있는 기능은 최신 CPU 캐시 시스템을 사용하는 하버드 프로세서를 수정함으로써 감소되었습니다.비교적 순수한 하버드 아키텍처 머신은 캐시 누락으로 인한 비용 및 전력 절감과 같은 단점이 별도의 코드 및 데이터 주소 공간을 제공하는 프로그래밍의 단점보다 큰 애플리케이션에 주로 사용됩니다.

  • Digital Signal Processor(DSP; 디지털 신호 프로세서)는 일반적으로 작고 최적화된 오디오 또는 비디오 처리 알고리즘을 실행합니다.동작은 매우 재현 가능해야 하므로 캐시를 회피합니다.복수의 주소 공간에 대처하는 것의 어려움은 실행 속도에 대한 이차적인 관심사입니다.따라서 일부 DSP는 SIMD 및 VLIW 처리를 용이하게 하기 위해 서로 다른 주소 공간에 여러 데이터 메모리를 갖추고 있습니다.를 들어 Texas Instruments TMS320 C55x 프로세서는 다중 병렬 데이터 버스(2개의 쓰기, 3개의 읽기)와 1개의 명령 버스를 갖추고 있습니다.
  • 마이크로컨트롤러는 소량의 프로그램(플래시 메모리)과 데이터(SRAM) 메모리를 탑재한 것이 특징이며, 하버드 아키텍처를 활용하여 명령과 데이터 액세스를 동시에 수행하여 처리 속도를 높입니다.개별 스토리지란 프로그램과 데이터 메모리는 예를 들어 16비트 폭 명령과 8비트 폭 데이터를 사용하는 등 서로 다른 비트 폭을 특징으로 할 수 있음을 의미합니다.또한 명령 프리페치가 다른 활동과 병행하여 수행될 수 있다는 의미하기도 합니다.예를 들면, Microchip Technology, Inc.의 PIC나 Atmel Corp(현재의 Microchip Technology의 일부)의 AVR등이 있습니다.

이러한 경우에도 프로그램 메모리가 읽기 전용 테이블 또는 재프로그래밍을 위한 데이터인 것처럼 접근하기 위해 특별한 명령을 사용하는 것이 일반적입니다. 이러한 프로세서는 하버드 아키텍처 프로세서를 수정한 것입니다.

메모들

  1. ^ STC의 8051 호환 마이크로컨트롤러의 IAP 라인에는 듀얼 포트 플래시 메모리가 있으며, 2개의 포트 중1개는 프로세서코어의 명령버스에 접속되어 다른 1개는 특수기능 레지스터 영역에서 사용할 수 있습니다.
  2. ^ 인텔(R)[2]: 26–34 [3] 80486의 케이스와 같습니다.

레퍼런스

  1. ^ '386 vs 030: 혼잡한 고속 차선'돕스 저널, 1988년 1월
  2. ^ Brown, John Forrest (1994). Embedded systems programming in C and Assembly. New York: Van Nostrand Reinhold. ISBN 0-442-01817-7. OCLC 28966593.
  3. ^ "Embedded Systems Programming: Perils of the PC Cache". users.ece.cmu.edu. Archived from the original on January 15, 2022. Retrieved 2022-05-26.

외부 링크