하버드 아키텍처: 두 판 사이의 차이

내용 삭제됨 내용 추가됨
잔글편집 요약 없음
Chobot (토론 | 기여)
잔글 Robot: Automated text replacement (-아키텍쳐 +아키텍처); 예쁘게 바꿈
1번째 줄:
'''하버드 아키텍쳐아키텍처'''는 본래 명령용 버스와 데이터용 버스로 물리적으로 분할한 [[컴퓨터 아키텍쳐아키텍처]]를 나타내는 용어이다. ( [[ 폰노이먼 아키텍쳐아키텍처]]와 대비시킨 용어이기도 하다).
 
 
5번째 줄:
이 말은 [[하바드 마크 I]](Harvard Mark I) 하는 릴레이 컴퓨터로부터 나온 것으로 이 머신은 명령을 [[천공 테이프]]에 메모리해 데이터를 [[릴레이]]의 ON/OFF 상태로 메모리했다. 이러한 초기의 머신에서는 메모리 영역이 지극히 작았기 때문에 [[CPU]] 내부에 모든 메모리 영역이 포함되어 있어 명령 메모리 영역을 데이터로서 취급할 수가 없었다(프로그래밍은 완전히 오프 라인의 작업이며, 프로그램의 내용을 컴퓨터 자신이 참조하거나 갱신하거나 하는 것은 있어 이득이 없었다.).
 
[[폰노이먼 아키텍쳐아키텍처]]에서는 [[CPU]]는 메모리로부터 명령을 읽고, 메모리로부터 데이터를 읽고 쓰기도 한다. 명령과 데이터는 같은 신호 버스와 메모리를 사용하기 때문에 이러한 액세스하는 경우 동시에 발생할 수가 없다. 하버드 아키텍쳐의아키텍처의 컴퓨터에서는 명령을 메모리로부터 읽는 것으로 데이터를 메모리로부터 읽는 것은 동시에 할 수 있다. 하버드 아키텍쳐의아키텍처의 컴퓨터는 명령의 처리를 끝내자마자 다음의 명령을 읽어들일 수 있기 때문에 보다 더 빠른 속도를 낼 수 있다고 말할 수 있다. 그렇지만 이러한 처리 속도를 높이려면 보다 많은 전기 회로가 필요하다.
 
== 하버드 아키텍쳐의아키텍처의 부활 ==
최근에 CPU의 성능은 메모리의 속도와 비교해 크게 향상했다. 성능을 높이려면 주 메모리의 접근 횟수를 줄이는 노력이 필요하다. 명령을 처리할 때마다 주 메모리에 접근할 필요가 있다고 한다면 성능 향상은 전망할 수 없다. 이른바 「메모리 속박 문제」이다.
 
메모리는 속도가 올라가면 값이 비싸질 수 있다. 이를 해결하는 방법은 [[캐시]]로 불리는 작은 규모의 고속의 메모리를 준비하는 것이다. [[CPU]]는 필요로 하는 메모리의 내용이 캐시에 존재하면 성능이 향상된다. 하지만 반대로 필요한 메모리의 내용이 캐시에 없으면, 메모리로부터 캐시에 내용을 가져오는 것이다. 이 캐쉬의 조정이 컴퓨터의 설계로 중요한 관점이 되고 있다.
 
최신의 성능이 좋은 CPU 설계에서는 하버드와 폰노이먼 두 쪽 모두의 아키텍쳐를아키텍처를 도입하고 있다. 캐시 메모리 장치는 보통 명령용과 데이터용으로 분리되어 있다. 하버드 아키텍쳐는아키텍처는 CPU와 캐시의 관계에 활용되고 있다. 캐시에 오류가 일어나면 주 메모리로부터 데이터를 가져 오고, 명령 캐시나 데이터 캐시에 저장한다. 따라서, 폰노이먼 아키텍쳐는아키텍처는 CPU 외부에 적용된다.
 
하버드 아키텍쳐는아키텍처는 특수한 디지털 신로 처리 프로세스에서 자주 쓰인다. 이를테면, 아날로그 장치 회사의 [[Blackfin]] 프로세서는 하버드 아키텍쳐를아키텍처를 활용하고 있다.
 
또한 범용 마이크로 콘트롤러의 상당수는 하버드 아키텍쳐에아키텍처에 기반을 두고 있다. 마이크로칩 테크놀로지사의 PIC 마이크로 콘트롤러 등이 그 예이다. 이러한 프로세서는 프로그램과 데이터를 저장하는 작은 메모리를 내장하고 있는 것이 특징이다. 그 때문에 [[RISC]]와 하버드 아키텍쳐를아키텍처를 활용해 1 머신 사이클로 1 명령을 실행할 수 있게 되는 것이다.
 
== 명령/ 데이터 분리 캐쉬 문제 ==
범용 마이크로 프로세서로 캐쉬 메모리 장치를 명령 캐시와 데이터 캐시를 분리했을 경우에 보다 성능이 좋은 write back형의 캐쉬를 사용하면 문제가 발생한다. write back형에는 캐쉬에 있는 내용을 CPU로 고쳐 썼을 경우에 그것을 주메모리에 동시에 써 되돌리지 말고 그대로 보관 유지해 두는 방식이다. 한편, 주 메모리도 동시에 고쳐 쓰는 캐시를 write through형 캐쉬라고 말한다. write back형 캐쉬는 그 캐쉬 라인을 다른 캐쉬 라인으로 옮겨놓을 때 주 메모리에 써 되돌리는지 CPU는 명시적으로 캐시 플래시를 지시했을 때에 주 메모리에 전체를 써 되돌린다.
 
특정 용도가 아닌 컴퓨터에서는 [[컴파일러]]를 사용하고 실행 파일을 만든다. 이 때 실행 파일을 메모리 맵 파일로 하고 있으면, 명령 줄이 데이터 캐시에 남게 된다. 그러므로 컴파일한 뒤 바로 실행하면 명령 줄이 주 메모리에 써 되돌려지지 않은 경우에 실행이 실패할 가능성이 있다. 인터프리터와 컴파일러가 일체화하고 있는 일부의 고급 언어나 어떤 종류의 개발 환경을 제공하는 소프트웨어에서는 한층 더 현저하게 발생한다. 이러한 경우 컴파일 결과는 그 소프트웨어의 데이터 영역에 있고 있어 그 영역에 트리키인 수법으로 점프하는 것으로 실행하려고 한다. 이 또한 명령 줄이 메모리에 써 되돌려지지 않기 때문에 실행이 실패하는 일이 있다.
 
이것은 일부분 하버드 아키텍쳐에아키텍처에 일어나는 문제며, 본질적으로는 [[폰노이먼 아키텍쳐아키텍처]]이기 때문에 발생하는 문제이다.
 
== 관련 항목 ==
29번째 줄:
*[[캐쉬 메모리 장치]]
 
[[분류 : 컴퓨터 아키텍쳐아키텍처]]
 
[[분류 : 컴퓨터 아키텍쳐]]
 
[[cs:Harvardská architektura]]
줄 39 ⟶ 38:
[[hr:Harvardska arhitektura]]
[[it:Architettura Harvard]]
[[ja:ハーバード・アーキテクチャ]]
[[pl:Architektura harwardzka]]
[[pt:Arquitetura Harvard]]
46번째 줄:
[[vi:Kiến trúc Harvard]]
[[zh:哈佛结构]]
[[ja:ハーバード・アーキテクチャ]]