하버드 대학 건축물을 개조함

Modified Harvard architecture

수정된 하버드 아키텍처는 순수한 하버드 아키텍처와는 달리 명령어가 포함된 메모리를 데이터로 액세스할 수 있게 해주는 하버드 컴퓨터 아키텍처의 변형입니다.하버드 아키텍처로 기록된 대부분의 현대 컴퓨터들은 사실 수정된 하버드 아키텍처입니다.

하버드 대학의 건축학

원래의 하버드 아키텍처 컴퓨터인 하버드 마크 I은 명령과 데이터를 저장하기 위해 완전히 별개의 메모리 시스템을 사용했습니다.CPU는 다음 명령어를 가져와 데이터를 동시에[1] 그리고 독립적으로 로드하거나 저장했습니다.는 명령과 데이터가 모두 동일한 메모리 시스템에 저장되고 (CPU 캐시의 복잡성 없이) 차례로 액세스해야 하는 폰 노이만 아키텍처 컴퓨터와는 대조적입니다.

명령어와 데이터 메모리의 물리적 분리는 때때로 현대 하버드 아키텍처 컴퓨터의 구별되는 특징으로 여겨집니다.마이크로컨트롤러(단일 칩에 통합된 전체 컴퓨터 시스템)와 함께, 폰 노이만 기계에서 명령어(예를 들어, 플래시 메모리) 및 데이터(일반적으로 읽기/쓰기 메모리)를 위한 다양한 메모리 기술의 사용이 대중화되고 있습니다.하버드 기계의 진정한 차이점은 명령어와 데이터 메모리가 서로 다른 주소 공간을 차지한다는 것입니다.즉, 메모리 주소는 (폰 노이만 기계에서와 같이) 저장 위치를 고유하게 식별하지 않으며, 또한 주소가 속한 메모리 공간(명령어 또는 데이터)을 알아야 합니다.

폰 노이만 건축

폰 노이만 구조를 가진 컴퓨터는 코드를 접근하고 데이터와 동일하게 취급할 수 있다는 점에서 위와 같은 하버드 기계에 비해 장점이 있습니다.예를 들어, 디스크 스토리지에서 메모리로 데이터를 읽은 다음 코드로 실행하거나, Just-in-time 컴파일과 같은 기술을 사용하여 소프트웨어 시스템을 자체 최적화하여 자신의 메모리에 머신 코드를 기록한 다음 나중에 실행할 수 있습니다.또 다른 예로는 프로그램이 스스로 수정할 수 있는 자체 수정 코드가 있습니다.

이러한 방법의 단점은 실행 가능한 공간 보호 문제로 멀웨어 및 소프트웨어 결함으로 인한 위험이 증가합니다.

하버드 대학 건축물을 개조함

따라서 몇몇 순수한 하버드 기계들은 특산품입니다.대부분의 현대 컴퓨터는 대신 수정된 하버드 아키텍처를 구현합니다.이러한 수정은 코드와 데이터 간의 엄격한 분리를 완화하는 동시에 하버드 아키텍처의 고성능 동시 데이터 및 명령 액세스를 지원하는 다양한 방법입니다.

분할 캐시(또는 거의 폰 노이만) 아키텍처

가장 일반적인 수정은 계층의 하위 수준에서 명령 및 데이터를 위한 별도의 CPU 캐시가 있는 메모리 계층을 구성합니다.명령과 데이터를 위한 단일 주소 공간이 있어 폰 노이만 모델을 제공하지만 CPU는 명령 캐시에서 명령을 가져오고 데이터 캐시에서 데이터를 가져옵니다.[citation needed]대부분의 프로그래머들은 프로세서 코어가 (수정된) 하버드 아키텍처를 구현한다는 사실을 알 필요가 없습니다. 비록 프로세서 코어의 속도의 장점을 이용하더라도 말입니다.명령어를 생성하고 메모리에 저장하는 프로그래머만 명령어 캐시에 캐시된 명령어 복사본을 수정하거나 무효화하지 않는 경우 캐시 일관성과 같은 문제를 인식해야 합니다.

데이터로서의 명령어-메모리 아키텍처

또 다른 변화는 하버드 기계의 "별도 주소 공간" 특성을 유지하지만, 명령어 메모리의 내용을 데이터로 액세스할 수 있는 특수한 기계 작동을 제공합니다.데이터는 명령어로 직접 실행할 수 없기 때문에 이러한 기계를 항상 "수정된" 하버드 아키텍처로 간주하지는 않습니다.

  • Read access: 프로그램 시작 시 초기 데이터 값을 명령 메모리에서 데이터 메모리로 복사할 수 있습니다.또는 데이터를 수정하지 않을 경우(pi 또는 텍스트 문자열과 같은 상수 값일 수 있음), 데이터 메모리에 공간을 차지하지 않고 명령어 메모리에서 직접 실행 중인 프로그램으로 액세스할 수 있습니다(흔히 프리미엄급입니다).
  • 쓰기 액세스: 일반적으로 재프로그래밍 기능이 필요합니다. 순수하게 ROM 기반인 컴퓨터는 거의 없습니다.예를 들어 마이크로컨트롤러는 일반적으로 명령을 유지하는 데 사용되는 플래시 메모리에 쓰기 작업을 수행합니다.[2]이 기능은 소프트웨어 업데이트를 포함한 목적으로 사용될 수 있습니다.EEPROM/PROM 교체는 대안적인 방법입니다.

Data-Memory-as-Instruction 아키텍처

Maxim Integrated MAXQ와 같은 일부 하버드 아키텍처 프로세서는 프로그램 메모리 세그먼트에서 가져온 명령만 실행할 수 있는 기존의 하버드 프로세서와는 달리 모든 메모리 세그먼트에서 가져온 명령을 실행할 수 있습니다.이러한 프로세서는 다른 하버드 아키텍처 프로세서와 마찬가지로 순수 폰 노이만 아키텍처와는 달리 독립적인 데이터 버스가 있는 두 개의 개별 메모리 세그먼트가 있기 때문에 별도의 메모리 세그먼트에 있는 경우 명령어를 읽고 동시에 데이터 값을 읽을 수 있습니다.이러한 수정된 하버드 아키텍처와 순수 폰 노이만 아키텍처의 가장 분명한 차이점은 하나의 메모리 세그먼트에서 명령을 실행할 때 동일한 메모리 세그먼트를 데이터로 동시에 액세스할 수 없다는 것입니다.[3][4]

비교

수정된 하버드 기계와 순수한 하버드 및 폰 노이만 기계를 구별하기 위해 세 가지 특성이 사용될 수 있습니다.

명령어와 데이터 메모리는 서로 다른 주소 공간을 차지합니다.

순수 하버드 머신의 경우, 명령어 저장 위치를 나타내는 명령어 공간에 "0"이라는 주소가 있고, 데이터 공간에 "0"이라는 별도의 데이터 저장 위치를 나타내는 별도의 주소가 있습니다.반면 폰 노이만과 분할 캐시 수정된 하버드 기계는 하나의 주소 공간에 명령어와 데이터를 모두 저장하기 때문에 주소 "0"은 하나의 위치만을 가리키며 해당 위치의 이진 패턴이 명령어로 해석되는지 데이터가 프로그램 작성 방식에 따라 정의되는지 여부를 나타냅니다.그러나 순수한 하버드 기계와 마찬가지로 명령-메모리-데이터로 변형된 하버드 기계는 별도의 주소 공간을 가지고 있으므로 명령 및 데이터 공간에 대해 별도의 주소 "0"을 가지고 있으므로 이러한 유형의 변형된 하버드 기계를 순수 하버드 기계와 구별하지 않습니다.

명령어와 데이터 메모리는 중앙 처리 장치(CPU)에 대한 별도의 하드웨어 경로를 갖습니다.

이것이 순수하거나 수정된 하버드 기계의 핵심이며, 이 기계들이 보다 유연하고 일반적인 폰 노이만 아키텍처와 공존하는 이유입니다. CPU에 대한 별도의 메모리 경로를 통해 명령을 가져올 수 있고 동시에 데이터에 액세스할 수 있으므로 처리량이 향상됩니다.순수한 하버드 기계에는 별도의 주소 공간이 있는 별도의 경로가 있습니다.분할 캐시 수정된 하버드 시스템에는 CPU 캐시 또는 기타 긴밀하게 연결된 메모리에 대한 액세스 경로가 별도로 있지만, 통합 액세스 경로는 메모리 계층의 나머지 부분을 포괄합니다.폰 노이만 프로세서는 그 통합 액세스 경로만 가지고 있습니다.프로그래머의 관점에서 명령어와 데이터 메모리가 주소 공간을 공유하는 수정된 하버드 프로세서는 자체 수정 코드 프로그램 로딩과 마찬가지로 캐시 일관성이 문제가 될 때까지 폰 노이만 머신으로 간주됩니다.이는 혼란스러울 수 있지만, 이러한 문제는 일반적으로 시스템 프로그래머통합자에게만 나타납니다.[clarification needed]다른 개조된 하버드 기계들은 그런 점에서 순수한 하버드 기계들과 같습니다.

명령어와 데이터 메모리는 서로 다른 방식으로 접근할 수 있음

하버드 대학의 최초 기계인 마크 I천공된 종이 테이프에 명령어를 저장하고 전기 기계식 카운터에 데이터를 저장했습니다.그러나 이는 전적으로 당시 사용 가능한 기술의 한계 때문이었습니다.오늘날 PIC 마이크로컨트롤러와 같은 하버드 기계에서는 12비트 와이드 플래시 메모리를 명령어로 사용하고 8비트 와이드 SRAM을 데이터로 사용할 수 있습니다.대조적으로, ARM7과 같은 폰 노이만 마이크로컨트롤러TDMI 또는 수정된 Harvard ARM9 코어는 플래시 메모리 및 SRAM에 대한 균일한 액세스(8비트 바이트로)를 제공해야 합니다.).

현대적으로 개조된 하버드 건축물의 용도

캐시가 없는 DSP마이크로컨트롤러가 필요한 애플리케이션을 제외한 대부분의 최신 프로세서는 명령어와 데이터를 분할하는 CPU 캐시를 가지고 있습니다.

가장 엄격한 정의에 따라 하버드 기계인 프로세서도 있으며(프로그램과 데이터 메모리가 서로 다른 주소 공간을 차지함), 프로그램 메모리를 데이터로 읽고 쓰기 위한 연산이 존재한다는 약한 의미에서만 수정됩니다.예를 들어, Atmel AVR의 LPM(Load Program Memory) 및 SPM(Store Program Memory) 명령은 이러한 수정을 구현합니다.비슷한 솔루션은 PICZ8Encore!와 같은 다른 마이크로컨트롤러 및 TIC55x 코어와 같은 많은 디지털 신호 프로세서 제품군 등에서도 볼 수 있습니다.명령어 실행은 여전히 프로그램 주소 공간으로 제한되기 때문에 이러한 프로세서는 폰 노이만 기계와 매우 다릅니다.외부 배선은 엄격하게 하버드 CPU 코어를 변형된 하버드 CPU 코어로 변환할 수도 있는데, 예를 들어 인텔 8051 패밀리 마이크로컨트롤러의 AND 게이트를 통해 'PSEN#'(프로그램 공간 읽기)와 'RD#'(외부 데이터 공간 읽기) 신호를 외부에서 결합하기만 하면 마이크로컨트롤러는 "본 노이만 연결," 외부 데이터 및 프로그램 주소 공간이 통합됨에 따라.

별도의 주소 공간이 있으면 읽기 전용 데이터 테이블이 일반 쓰기 가능 데이터와 다른 주소 공간에 있을 수 있다는 개념을 직접적으로 지원하지 않는 고급 언어로 프로그래밍할 때 특정한 어려움이 발생합니다(따라서 다른 명령어를 사용하여 읽어야 함).C 프로그래밍 언어는 비표준 확장을[a] 통해 또는 임베디드 프로세서를 지원하기 위해 현재 표준화된 확장을 통해 여러 주소 공간을 지원할 수 있습니다.

참고 항목

메모들

  1. ^ 코드와 데이터를 위한 별도의 주소 공간이 있는 Atmel AVR 마이크로컨트롤러에 대한 GCC 포트의 표준 C 라이브러리의 유지 관리자는 Data in Program Space에서 별도의 주소 공간이 하버드 아키텍처를 의미한다고 명시합니다.그들은 계속해서 C 언어는 오직 하나의 포인터 주소 공간만을 가지고 있으므로 하버드 건축 기계를 위해 설계된 것이 아니라고 설명합니다.그런 다음 명령어(프로그램) 메모리에 저장된 데이터에 액세스할 수 있도록 AVR 및 AVR C 라이브러리에 대해 GCC가 채택한 비표준 확장에 대해 설명합니다.명령어 메모리에 배치할 데이터 개체를 구별하기 위해 const 키워드를 서비스에 입력할 수 없는 이유도 설명합니다.

참고문헌

  1. ^ A Manual of Operation for the Automatic Sequence Controlled Calculator. OXFORD UNIVERSITY PRESS. p. 4.
  2. ^ "AVR109: Self Programming" (PDF) (Application note). Atmel. June 2004. Retrieved 29 January 2015.
  3. ^ "MAXQ Family User's Guide". Maxim Integrated. September 2008. Sections 1.2 "Harvard Memory Architecture" and 2.5 "Pseudo-Von Neumann Memory Access".
  4. ^ 코나크 고엘 외.MAXQ GCC 포트 정보.