다른 유형의 컴퓨터 아키텍처는 무엇입니까?


20

나는 "컴퓨팅 시스템의 요소"라는 책을 겪고있다. 이 책은 전체 컴퓨터를 처음부터 작성하는 방법을 설명합니다. 컴퓨터 아키텍처에 관한 챕터를 탐색하는 동안 Von Neumann 아키텍처에 중점을 둔 것으로 나타났습니다. 다른 아키텍처가 무엇이고 언제 어디서 사용되는지 궁금했습니다.

나는 단지 두 사람에 대해 알고 있습니다. 하나는 Von Neumann이고 다른 하나는 하버드입니다. 또한 AVR의 uC에 사용되는 RISC에 대해서도 알고 있습니다.


2
하버드에서 수정 된 세 번째가 있습니다. 순수한 하버드는 동일한 스토리지를 사용하여 프로그램과 데이터를 모두 유지할 수 없습니다. 따라서 거의 모든 하버드 구현이 명령 메모리를 데이터로 처리 할 수 ​​있도록 수정되었습니다.
고릴라

1
좋은 질문입니다.
익명 유형

답변:


27

컴퓨터 아키텍처에는 여러 가지 종류가 있습니다.

컴퓨터 아키텍처를 분류하는 한 가지 방법은 클럭 당 실행되는 명령 수입니다. 많은 컴퓨팅 기계는 한 번에 하나 개의 명령을 읽고 실행 (또는 그들이 행동에 많은 노력을 하는 것처럼그들은 내부적으로 공상 슈퍼 스칼라와 비 순차적 인 일을하더라도 그렇게합니다). 나는 그런 기계를 "von Neumann"기계라고 부릅니다. 왜냐하면 그들 모두는 von Neumann 병목 현상이 있기 때문입니다. 이러한 시스템에는 CISC, RISC, MISC, TTA 및 DSP 아키텍처가 포함됩니다. 이러한 기계에는 누산기 기계, 레지스터 기계 및 스택 기계가 포함됩니다. 다른 기계는 한 번에 여러 명령 (VLIW, 수퍼 스칼라)을 읽고 실행하는데,이 명령은 클럭 당 1 개의 명령 한계를 위반하지만 여전히 시계 당 약간 더 많은 명령에서 폰 노이만 병목 현상을 일으 킵니다. 다른 시스템은 전원을 켤 때 모든 작업을 사전로드 한 후 추가 지침없이 데이터를 처리하기 때문에 폰 노이만 병목 현상에 의해 제한되지 않습니다. 이러한 Von-Neumann 머신에는 데이터 흐름 아키텍처,

컴퓨터 아키텍처를 분류하는 다른 방법은 CPU와 메모리 간의 연결입니다. 일부 컴퓨터에는 단일 주소가 메모리의 단일 위치에 해당하는 통합 메모리가 있으며 해당 메모리가 RAM 인 경우 해당 주소를 사용하여 데이터를 읽고 쓰거나 프로그램 카운터에로드하여 코드를 실행할 수 있습니다. 이 기계들을 프린스턴 기계라고 부릅니다. 다른 컴퓨터에는 몇 개의 개별 메모리 공간이 있으므로 프로그램 카운터는 어떤 주소로로드 되더라도 항상 "프로그램 메모리"를 참조하고 일반 읽기 및 쓰기는 항상 "데이터 메모리"로 이동합니다. 데이터 어드레스의 비트가 프로그램 메모리 어드레스의 비트와 동일 할 때에도 정보. 그 기계는 "순수한 하버드"또는 "

소수의 사람들은 하버드 머신을 포함하지 않는 "von Neumann 머신"의 좁은 정의를 사용합니다. 당신이 그 사람들 중 하나라면, 하버드와 프린스턴 머신을 포함하고 NON-VON을 제외하고 "폰 노이만 병목 현상이있는 머신"이라는 좀 더 일반적인 개념에 어떤 용어를 사용 하시겠습니까?

대부분의 임베디드 시스템은 하버드 아키텍처를 사용합니다. 몇몇 CPU는 "순수한 하버드 (Harhard)"인데, 이는 아마도 하드웨어에서 구축하기위한 가장 간단한 배열 일 것입니다. 또한 일부 수정 된 하버드 머신은 프로그램 메모리에 상수를 넣습니다.이 상수는 특수한 "프로그램 메모리에서 상수 데이터 읽기"명령어 ( "데이터 메모리에서 읽기"명령어와는 다름)로 읽을 수 있습니다. 위 종류의 하버드 머신에서 실행되는 소프트웨어는 프로그램 메모리를 변경할 수 없으며, 이는 실제로 해당 소프트웨어에 대한 ROM입니다. 일부 임베디드 시스템은 일반적으로 플래시 메모리의 프로그램 메모리와 특수한 "플래시 메모리 지우기 블록"을 사용하여 "자가 프로그래밍 가능" 명령 및 "프로그램 메모리에서 데이터 읽기"명령 외에 특수 "플래시 메모리 블록 쓰기"명령 (일반 "데이터 메모리에 쓰기"명령과 다름). 보다 최근의 몇 가지 Microchip PICmicro 및 Atmel AVR은 자체 프로그래밍 가능한 수정 된 하버드 머신입니다.

CPU를 분류하는 또 다른 방법은 시계입니다. 대부분의 컴퓨터는 동기식이며 단일 글로벌 시계가 있습니다. 한 번에 지구상에서 가장 빠른 슈퍼 컴퓨터였던 ILLIAC I 및 ILLIAC II를 포함하여 일부 CPU는 비동기식입니다 (클럭이 없음).

http://en.wikibooks.org/wiki/Microprocessor_Design/Computer_Architecture 에서 모든 종류의 컴퓨터 아키텍처에 대한 설명을 개선하십시오 .


2
와, 질문을 한 후에도 오랫동안 그 지식을 잃어버린 것에 대해 부끄러운 줄 아세요
Rick_2047

3
@Rick-답변을 작성하는 데 시간이 오래 걸린 것 같습니다. davidcary가 귀하의 질문에 답변하는 데 시간이 걸렸다는 것에 감사하십시오! 어떤 사람들은 당신과 같은 일정으로 운영하지 않습니다.
Kevin Vermeer

2
@reemrevnivek는 농담 친구였습니다.
Rick_2047

이 답변이 커뮤니티 위키 답변으로 표시되어 있으면 좋을 것입니다.
Trygve Laugstøl

8

CISC는 RISC의 "반대"입니다. RISC는 컴파일러가 쉽게 최적화 할 수 있고 크기가 동일한 간단한 명령어를 선호하는 반면 CISC는 크기가 다양한 복잡한 명령어를 선호합니다.

예를 들어, CISC의 팝업 명령은 스택 포인터를 수정합니다 다른 레지스터에 스택에서 데이터를 배치합니다. 그러나 RISC 프로세서는 한 명령으로 데이터를 읽은 다음 두 번째 명령으로 스택 포인터를 수정합니다. (일반적으로 스택 포인터를 업데이트하고 데이터를 스택으로 푸시 할 수있는 PowerPC와 같은 예외가 있지만 예외입니다)

RISC 명령어는 모두 같은 크기이므로 디스어셈블러를 작성하기가 더 쉽습니다. 파이프 라인이 다양한 명령어 크기를 설명 할 필요가 없기 때문에 프로세서 설계도 더 쉽습니다. 그러나 복잡한 명령어는 동일한 수의 연산을 나타 내기 위해 더 적은 바이트를 필요로하고 가변 명령어 길이는 "압축"을 허용하기 때문에 CISC 코드 밀도는 더 나은 경향이 있습니다.

VLIW / EPIC과 같은 다른 이국적인 아키텍처도 있습니다. 이러한 종류의 아키텍처는 병렬 처리를 염두에두고 설계되었습니다. 그러나 다른 아키텍처에는 컴파일러의 최적화 부담을 덜어주는 멋진 명령어 창이 있습니다.


1
당신이 그것을 좋아한다면, 그것을 받아들이십시오.
Kortuk

5

ENIAC과 같은 것이 있습니다. 여기에는 본질적으로 개별 ALU가 있고 중간 변수에 대해 다음 작업을 수행 할 다른 alu의 입력에 한 alu의 출력을 연결하여 "프로그램 된"ALU가 있습니다. "레지스터"와 스토리지는 alus를 연결하는 전선입니다.

나는 최근에 "정확한 주제에 초점을 맞춘 최초의 컴퓨터-역사와 건축 (역사)"을 구입했습니다. 나는이 책이 단지 학술 논문의 모음 일 뿐이지 만 읽기 어려우며 다른 곳에서 (무료로) 출판 된 것으로 생각됩니다. (소개를 마치기 전에 포기했습니다)

일단 기억이 발명되고 실용적이되자 우리는 폰 노이만 (Von Neumann)과 하버드 (Harvard)라는 두 가지 인기있는 것들에 정착했습니다. 다시 배선, 펀치 카드, 종이 테이프 또는 그와 비슷한 것들에서 실행하면 실용성이 떨어졌습니다. 그리고 스택 기반 (예 : zpu)이 있습니다. 아마도 Harvard 카테고리에 속한다고 생각합니다.

한 메모리 인터페이스에서 읽기 전용 (일반 사용시) 플래시로 부팅하고 다른 메모리에서 읽기 / 쓰기 데이터 램을 갖지만 (때로는 병렬로 작동 할 수 있음) 프로그램 측면에서 볼 수있는 폰 노이만 플랫폼은 어떤가? 주소 공간? 또는 여러 개의 내부 및 외부 메모리 / 인터페이스가 모두 병렬로 작동하지만 동일한 주소 공간에 있기 때문에 폰 노이만 인 것.

그리고 부트 로더를 변경 / 업그레이드하기 위해 또는 부트 로더가 다음에 실행할 프로그램을로드하기 위해 프로세서가 명령 메모리에 데이터로 액세스 할 수없는 하버드 플랫폼은 무엇입니까? 왜 폰 노이만 아키텍처가 아닌가? 프로세서가 동일한 인터페이스의 동일한 메모리에서 순차적으로 (명령 페치 및 메모리 쓰기가 동시에 발생하지 않음) 방식으로 실행하고 작동합니까?

널리 사용되는 두 가지 메모리 기반 아키텍처는 현재 구현 IMO에서 다른 것보다 더 가깝습니다.

GPU는 어디에 쓰러지는가? 또는 내가 일하는 비즈니스 네트워크 프로세서 (NPU). 프로그램 램과 같은 하버드에서 실행되는 상대적으로 작은 특수 목적의 마이크로 엔진 (프로세서) (주소는 있지만 성능상의 이유로 수행하고 싶지는 않음)이있는 경우 각각 별도의 주소 공간을 갖는 다양한 데이터 램에서 작동합니다 (별도의 프로세서). 각 공간에 대한 명령), (병렬로 작동하는 메모리 공간) 및 이러한 램을 통해 다음과 같은 유선 알루 (eniac) 방식으로 다음 마이크로 엔진이 다음 계산을 수행하도록 중간 데이터를 전달합니까? 그거 뭐라고 하겠어? npus와 gpus는 단순히 수정 된 하버드 아키텍처입니까?


"프로세서가 실행할 다음 프로그램을로드 할 수없는 하버드 플랫폼은 무엇입니까?" 많은 CPU에는 해당 CPU에서 실행되는 소프트웨어로 변경할 수없는 고정 프로그램이 있습니다. 이 배열의 한 가지 장점은 임의 메모리에 쓰는 버그 나 소프트웨어 업데이트가 불량하거나 소프트웨어 업데이트가 양호하고 시간이 오래 걸리는 전원 장애로 시스템을 "브레이크"하는 것이 불가능하다는 것입니다. 소프트웨어 업데이트가 더 어려워 지지만 실제로 전자 레인지에서 소프트웨어를 몇 번이나 변경 했습니까?
davidcary

2
마이크로 웨이브에서는 아무도 없지만, 마이크로 컨트롤러를 코딩하는 데 상당한 시간을 소비하고 소프트웨어를 하루에 여러 번 다시로드합니다. 버그가없는 소형 ROM 기반 시스템으로 제한되므로, 폰 노이만 (von neumann)을 사용하여 브릭 킹 문제를 쉽게 해결할 수 있습니다. 설명하는 시스템은 하버드 아키텍처의 다른 기능인 별도의 버스의 성능 향상에 거의 사용되지 않습니다. 내 요점은 하버드 아키텍처가 프로그램을로드 할 수있는 방법없이 잘 확장되지 않아 다소 쓸모가 없다는 것입니다.
old_timer

1
흠, 그들은 실제로 avr과 동일하지 않은 cortex-m3 harvard를 호출합니다 (잘 수정 된 harvard라고 부릅니다). 나는 순수한 하버드 아키텍처 프로세서 (PIC)가 있고 더 순수한 폰 노이만이었을 것이라고 확신하지만, 대부분은 수정 된 하버드 또는 수정 된 폰 노이만 (데이터 및 명령 액세스 병렬)으로 다른 것과 동일합니다. 내가 대답했던 곳은 순수한 하버드와 폰 노이만이 빠르게 쓸모 없게되었다는 것입니다. 포스터는 밖에 무엇이 있는지, 거의 모든 것이 있는지 알고 싶어합니다.
old_timer

4

von Neumann 및 Harvard 아키텍처는 모두 AVR 및 ARM과 같은 RISC 프로세서와 함께 사용할 수 있습니다. AVR은 Harvard를 사용하는 반면 일부 ARM 칩은 von Neumann을 사용하고 일부는 Harvard를 사용합니다.


-1 더 흥미로운 답변 아래에 정렬합니다.
Oskar Skog
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.