범용 CPU 이력

History of general-purpose CPUs

범용 CPU 역사컴퓨팅 하드웨어의 초기 역사의 연장선상에 있습니다.

1950년대: 초기 설계

초기 700 시리즈 IBM 컴퓨터의 진공 튜브 모듈

1950년대 초, 각각의 컴퓨터 디자인은 독특했다.복수의 다른 실장 기능을 갖춘 상향 호환 머신이나 컴퓨터 아키텍처는 없었습니다.한 기계용으로 작성된 프로그램은 다른 종류의 프로그램, 심지어 같은 회사의 다른 종류의 프로그램에서도 실행되지 않습니다.컴퓨터에서 실행할 수 있도록 개발된 대규모 소프트웨어가 없었기 때문에 처음부터 프로그래밍을 시작하는 것이 큰 장벽으로 여겨지지 않았기 때문에 이것은 당시 큰 단점이 되지 않았습니다.

설계자들은 전자제품의 비용에 의해 매우 제약을 받았고 컴퓨터를 가장 잘 구성할 수 있는 방법을 찾기 시작했기 때문에 당시 설계의 자유는 매우 중요했습니다.이 기간 동안 도입된 기본 기능 중 일부는 인덱스 레지스터(Feranti Mark 1 위), 리턴 주소 저장 명령(UNIVAC I), 즉시 오퍼랜드(IBM 704) 및 비활성 동작 검출(IBM 650)을 포함한다.

1950년대 말까지, 상업용 건설업자들은 공장에서 제작된 트럭 배달 가능한 컴퓨터를 개발했다.가장 널리 설치된 컴퓨터는 IBM 650으로, 종이로 된 천공 테이프나 천공 카드를 사용하여 프로그램을 로드하는 드럼 메모리를 사용했습니다.일부 하이엔드 머신에는 더 빠른 속도를 제공하는 코어 메모리도 포함되어 있습니다.하드 디스크 또한 인기를 얻기 시작했다.

컴퓨터는 자동 주판이다.번호 체계 유형은 번호 체계 작동 방식에 영향을 미칩니다.1950년대 초반에는 대부분의 컴퓨터가 특정 수치 처리 작업을 위해 만들어졌고, 많은 기계들이 10진수를 기본 숫자 체계로 사용했습니다. 즉, 기계의 수학적 함수는 오늘날 일반적인 2진법이 아닌 10진법으로 작동했습니다.이것들은 단순히 바이너리 코드화된 10진수(BCD)만이 아니었다.대부분의 기계에는 각 프로세서 레지스터에 숫자당 10개의 진공관이 있습니다.일부 초기 소련 컴퓨터 설계자는 3원 논리에 기반한 시스템을 구현했습니다. 즉, 비트는 +1, 0 또는 -1의 3가지 상태를 가질 수 있으며, 이는 양, 0 또는 음의 전압에 해당합니다.

미 공군의 초기 프로젝트인 BINAC은 이진수 계산을 사용하여 가볍고 간단한 컴퓨터를 만들려고 시도했다.그것은 업계에 깊은 인상을 남겼다.

1970년까지 주요 컴퓨터 언어들은 10진수 컴퓨터에는 너무 큰 사용자 그룹이 있기 때문에 그들의 숫자 동작을 표준화할 수 없었다.

디자이너들이 바이너리 시스템을 사용했을 때도, 그들은 여전히 많은 이상한 아이디어를 가지고 있었다.일부는 현대 2의 보산(-1 = 11111) 대신 부호 크기 산술(-1 = 10001) 또는 1의 보산(-1 = 11110)을 사용했다.대부분의 컴퓨터는 Hollerith 펀치 카드를 적절히 인코딩했기 때문에 6비트 문자 집합을 사용했습니다.데이터 워드가 문자 크기의 배수가 되어야 한다는 것을 깨달은 것은 이 시기의 설계자들에게 큰 발견이었다.이들은 12비트, 24비트 및 36비트 데이터 워드를 사용하여 컴퓨터를 설계하기 시작했습니다(예: TX-2 참조).

시대에 Grosch의 법칙은 컴퓨터 설계를 지배했습니다.즉, 속도의 제곱에 따라 컴퓨터 비용이 증가했습니다.

1960년대: 컴퓨터 혁명과 CISC

초기 컴퓨터의 큰 문제 중 하나는 하나의 프로그램이 다른 프로그램에서는 작동하지 않는다는 것이었다.컴퓨터 회사들은 고객이 다음 번 구입한 컴퓨터는 호환성이 없기 때문에 특정 브랜드에 대한 충성도를 유지할 이유가 거의 없다는 것을 알게 되었습니다.그 시점에서 유일한 관심사는 보통 가격과 성능뿐이었습니다.

1962년에 IBM은 컴퓨터 디자인에 대한 새로운 접근법을 시도했다.그 계획은 모두 같은 소프트웨어를 실행할 수 있지만 성능과 가격이 다른 컴퓨터 패밀리를 만드는 것이었다.사용자의 요구가 증가함에 따라 더 큰 컴퓨터로 이행할 수 있게 되었고, 프로그램, 데이터 및 스토리지 미디어에 대한 투자도 모두 유지할 수 있게 되었습니다.

이를 위해 그들은 System/360(S/360)이라는 이름참조 컴퓨터를 설계했습니다.이것은 가상 컴퓨터, 참조 명령 세트 및 패밀리 내의 모든 시스템이 지원하는 기능입니다.다른 클래스의 기계를 제공하기 위해 패밀리 내의 각 컴퓨터는 하드웨어 에뮬레이션과 마이크로 프로그램 에뮬레이션을 사용하여 완전한 S/360 명령 세트를 실행할 수 있는 기계를 만듭니다.

예를 들어, 로우엔드 머신에는 매우 심플한 프로세서를 탑재하여 저비용으로 사용할 수 있습니다.그러나 이 경우 명령어 세트의 나머지 부분을 제공하기 위해 더 큰 마이크로코드 에뮬레이터를 사용해야 하므로 속도가 느려집니다.하이엔드 머신은 S/360 설계의 더 많은 것을 직접 처리할 수 있는 훨씬 더 복잡한 프로세서를 사용하므로 훨씬 더 단순하고 빠른 에뮬레이터를 실행할 수 있습니다.

IBM은 의도적으로 참조 명령 집합을 매우 복잡하고 매우 효율적으로 만들었습니다.컴퓨터는 복잡했지만 마이크로 프로그램을 보관하는 제어 저장소는 상대적으로 작았고 매우 빠른 메모리로 만들어질 수 있었다.또 다른 중요한 효과는 하나의 명령으로 상당히 복잡한 조작 순서를 설명할 수 있다는 것입니다.따라서 컴퓨터는 일반적으로 메인 메모리에서 더 적은 명령어를 가져와야 하므로 속도와 가격의 조합으로 더 느리고, 더 작고, 더 저렴하게 만들 수 있습니다.

S/360은 7090과 같은 과학 기계와 1401과 같은 데이터 처리 기계의 후속 기종이 될 예정이었기 때문에 모든 형태의 처리를 합리적으로 지원할 수 있는 설계가 필요했습니다.따라서 명령 집합은 간단한 이진수 숫자, 텍스트, 과학적 부동소수점(계산기에 사용되는 숫자와 유사), 회계 시스템에 필요한 이진 코드화된 10진수 산술 등을 조작하도록 설계되었다.

거의 모든 후속 컴퓨터들은 어떤 형태로든 이러한 혁신을 포함하고 있었다.이 기본 기능 세트는 현재 복잡한 명령 집합 컴퓨팅(CISC, "sisk"로 발음)이라고 불리며, 수년 후 RISC(Reduced Instruction Set[citation needed] Computing)가 시장 점유율을 획득하기 시작할 까지 발명되지 않은 용어입니다.

많은 CISC에서 명령어는 레지스터 또는 메모리에 액세스 할 수 있으며, 보통 몇 가지 다른 방법으로 액세스 할 수 있습니다.프로그래머가 기억할 수 있는 명령어는 수천 개의 개별 명령어가 아니라 30개에서 100개, 주소 지정 모드 세트가 3개에서 10개뿐이었기 때문에 CISC를 프로그래밍하기가 더 쉬웠습니다.이를 직교 명령 집합이라고 합니다.PDP-11 및 Motorola 68000 아키텍처는 거의 직교 명령 집합의 예입니다.

당시 IBM과 경쟁했던 BUNTCH(Burroughs, UNIVAC, NCR, Control Data Corporation, Honeywell)도 있었지만 IBM은 S/360으로 시대를 지배했다.

Burroughs Corporation(나중에 Sperry/Univac과 합병하여 Unisys를 형성함)은 Burroughs 대형 시스템 B5000 시리즈로 S/360을 대체했습니다.1961년, B5000은 가상 메모리, 대칭 멀티프로세서, ALGOL 60으로 작성된 멀티프로그래밍 운영체제(MCP) 및 1964년에 업계 최초의 재귀적 디센트 컴파일러를 탑재했습니다.

1970년대: 마이크로프로세서 혁명

최초의 시판 마이크로프로세서, 바이너리 코드 10진수(BCD) 베이스의 인텔 4004는,[1][2] 1971년에 인텔에 의해서 발매되었습니다.1972년 3월 인텔은 8비트 아키텍처의 마이크로프로세서, 8008을 도입하여 트랜지스터 트랜지스터 로직(TTL) 기반의 Datapoint 2200 CPU를 통합한 pMOS 로직을 재실장하였습니다.

4004 디자이너인 Federico Faggin과 Masatoshi Shima는 8008의 후속 모델인 인텔 8080을 설계했습니다.이는 주로 8008에 대한 고객의 피드백을 바탕으로 한 미니컴퓨터와 비슷한 마이크로프로세서입니다.8008과 마찬가지로, 그것은 단말기, 프린터, 계산기, 산업용 로봇과 같은 응용 프로그램에 사용되었다.그러나 성능이 향상된 8080은 CP/M이라고 하는 초기 사실상의 표준 개인용 컴퓨터 운영 체제의 원래 타깃 CPU가 되었고 크루즈 미사일과 같은 까다로운 제어 작업 및 기타 많은 용도로 사용되었습니다.1974년에 출시된 8080은 최초로 널리 보급된 마이크로프로세서 중 하나가 되었습니다.

1970년대 중반에는 컴퓨터에서 집적회로를 사용하는 것이 일반적이었습니다.지난 10년은 트랜지스터 가격 하락으로 인한 시장의 격변으로 특징지어졌습니다.

하나의 프린트 기판에 CPU 전체를 장착할 수 있게 되었습니다.그 결과 보통 16비트 워드와 4K에서 64K의 메모리를 사용하는 미니컴퓨터가 보편화되었습니다.

CISC는 마이크로코드가 작고 매우 빠른 메모리에 저장될 수 있기 때문에 가장 강력한 유형의 컴퓨터라고 여겨졌다.또한 CISC 아키텍처는 인식된 시멘틱 갭에 대처했습니다.이는 기계 언어와 기계 프로그래밍에 사용되는 상위 수준의 프로그래밍 언어 사이의 정의된 거리입니다.컴파일러는 보다 풍부한 명령어 세트를 사용하여 더 나은 작업을 수행할 수 있을 것으로 생각되었습니다.

커스텀 CISC는 일반적으로 AMD 2900 칩과 같은 비트 슬라이스 컴퓨터 로직과 커스텀 마이크로코드를 사용하여 구축되었습니다.비트 슬라이스 컴포넌트는 연산 로직 유닛(ALU), 레지스터 파일 또는 마이크로시퀀서의 일부입니다.대부분의 비트슬라이스 집적회로는 4비트 폭이었습니다.

1970년대 초, 16비트 PDP-11 미니컴퓨터가 개발되었으며, 이는 거의 틀림없이 당대의 가장 진보된 소형 컴퓨터입니다.1970년대 후반에는 32비트 VAX와 같은 더 넓은 단어의 슈퍼미니컴퓨터가 도입되었습니다.

IBM은 계속해서 크고 빠른 컴퓨터를 만들었다.그러나 이제 대용량과 고속의 정의는 1메가바이트 이상의 RAM, 1메가헤르츠에 [3][4]가까운 클럭 속도, 수십메가바이트의 디스크 드라이브를 의미합니다.

IBM의 System 370은 가상 컴퓨팅 환경을 실행하기 위해 조정된 360 버전입니다.가상 컴퓨터는 복구할 수 없는 소프트웨어 장애의 가능성을 줄이기 위해 개발되었습니다.

Burroughs 대형 시스템(B5000, B6000, B7000) 시리즈는 최대 시장 점유율을 달성했습니다.OS가 알골 사투리로 프로그램된 스택 컴퓨터였다.

이 모든 다른 개발들은 시장 점유율을 위해 경쟁했다.

최초의 싱글칩 16비트 마이크로프로세서는 1975년에 도입되었습니다.일본 후지쯔 후지전기 마쓰시타 등이 설립한 파나파콤은 상용 16비트 마이크로프로세서 [5][6][7]MN1610을 선보였다.후지쯔에 의하면, 「세계 최초의 16비트·마이크로·컴퓨터」[6]라고 한다.

인텔 8080은 16비트 인텔 8086의 기초가 되었습니다.이는 오늘날 유비쿼터스 x86 패밀리(Pentium 및 Core i7 포함)의 직접적인 조상입니다.8080의 각 명령어에는 큰 x86 명령어세트가 직접 등가하지만, 후자의 경우 opcode 값이 다릅니다.

1980~1990년대 초반: RISC의 교훈

1980년대 초 UC Berkeley와 IBM의 연구진은 대부분의 컴퓨터 언어 컴파일러와 인터프리터가 CISC(복잡한 명령 집합 컴퓨팅) 명령의 일부만 사용한다는 것을 발견했습니다.CPU의 전력의 대부분은 실제 사용에서는 무시되고 있었습니다.그들은 컴퓨터를 더 단순하고 덜 직교적으로 만들면서 더 빠르고 더 저렴한 비용으로 만들 수 있다는 것을 깨달았다.

동시에 필요한 메모리 액세스 시간에 비해 CPU 계산 속도가 빨라졌습니다.설계자들은 또한 대규모 내부 레지스터 세트를 사용하는 실험을 했다.그 목적은 컴파일러의 제어 하에 레지스터에 중간 결과를 캐시하는 이었다.이것에 의해, 어드레싱 모드와 직교성의 수도 감소했습니다.

이 이론에 기초한 컴퓨터 설계는 RISC(Reduced Instruction Set Computing)라고 불립니다.RISC는 일반적으로 데이터를 메모리에 로드 및 저장하기 위한 몇 가지 명령과 함께 보다 간단한 명령으로 접근할 수 있는 다수의 레지스터를 가지고 있었습니다.그 결과, 매우 심플한 코어 CPU가 매우 고속으로 동작해, 컴파일러가 사용하고 있던 조작을 서포트할 수 있게 되었습니다.

RISC 설계의 일반적인 변형은 대부분의 다른 설계에서 공통인 Von Neumann 아키텍처 또는 Stored Program 아키텍처와 비교하여 Harvard 아키텍처를 사용합니다.Harvard Architecture 머신에서는 프로그램과 데이터가 별도의 메모리 디바이스를 점유하여 동시에 액세스할 수 있습니다.Von Neumann 기계에서는 데이터와 프로그램이 하나의 메모리 장치에 혼합되어 순차적 액세스가 필요하며, 이를 통해 소위 Von Neumann 병목 현상이 발생합니다.

RISC 설계의 한 가지 단점은 RISC에서 실행되는 프로그램이 더 큰 경향이 있다는 것입니다.는 컴파일러가 동일한 결과를 수행하려면 보다 단순한 명령의 긴 시퀀스를 생성해야 하기 때문입니다.이러한 명령어는 메모리에서 로드해야 하기 때문에 코드가 클수록 RISC 설계의 고속 메모리 처리의 일부가 상쇄됩니다.

1990년대 초 일본 히타치의 엔지니어들은 축소된 명령어 세트를 압축하여 CISC보다 작은 메모리 시스템에 적합하도록 하는 방법을 찾아냈습니다.이러한 압축 방식은 [8]1992년에 도입된 SuperH 시리즈의 마이크로프로세서 명령 세트에 사용되었습니다.SuperH 명령 세트는 나중에 ARM 아키텍처의 Thumb 명령 [9]세트로 수정되었습니다.오래된 바이너리 소프트웨어를 실행할 필요가 없는 애플리케이션에서는 압축 RISC가 매출 우위를 점하고 있습니다.

RISC에 대한 또 다른 접근법은 Minimal Instruction Set Computer(MISC; 최소 명령 집합), niladic 또는 제로 오퍼랜드 명령 집합입니다.이 접근법은 명령어 내의 대부분의 공간이 명령어 피연산자를 식별하기 위해 사용된다는 것을 깨달았다.이들 머신은 오퍼랜드를 푸시다운(라스트인, 퍼스트아웃) 스택에 배치했습니다.명령어 세트에는 메모리를 가져와 저장하는 몇 가지 명령이 추가되어 있습니다.대부분은 매우 콤팩트한 코드로 매우 빠른 RISC 머신을 제공하기 위해 단순한 캐싱을 사용했습니다.또 다른 장점은 인터럽트 지연이 매우 작아 대부분의 CISC 머신(RISC 머신에서는 드문 특성)보다 작다는 것입니다.Burroughs의 대규모 시스템 아키텍처에서는 이 방법을 사용했습니다.B5000은 RISC라는 용어가 발명되기 훨씬 전인 1961년에 설계되었습니다.이 아키텍처는 48비트 워드에 6개의 8비트 명령을 포함하며 VLIW(Very Long Instruction Word) 설계의 선구자였습니다(아래: 1990년부터 현재까지 참조).

Burroughs 아키텍처는 Charles H. Moore의 프로그래밍 언어 Forth에 영감을 준 것 중 하나였으며, 이는 그의 후기 MISC 칩 설계에 영감을 주었습니다.예를 들어 f20 코어에는 5비트 명령어가 31개 있어 20비트 단어에 4개씩 들어갑니다.

RISC 칩은 현재 32비트 임베디드 시스템 시장을 지배하고 있습니다.소형 RISC 칩은 비용에 민감한 8비트 임베디드 시스템 시장에서도 일반화되고 있습니다.RISC CPU의 주요 시장은 저전력 또는 소형 시스템이었습니다.

새로운 x86 프로세서 등 일부 CISC 프로세서(RISC가 우세해지기 전에 작성된 아키텍처에 기반)에서도 명령어는 내부적으로 RISC와 같은 명령어세트로 변환됩니다.

이러한 수치는 많은 사람들을 놀라게 할 수 있습니다. 왜냐하면 시장은 데스크톱 컴퓨터로 인식되기 때문입니다.x86 디자인은 데스크탑과 노트북의 판매를 지배하고 있지만, 그러한 컴퓨터는 현재 판매되고 있는 컴퓨터의 극히 일부에 지나지 않습니다.선진국의 대부분의 사람들은 책상 위보다 자동차와 집에 내장된 시스템에 더 많은 컴퓨터를 가지고 있습니다.

1980년대 중후반: 명령 수준 병렬화 활용

1980년대 중후반, 설계자들은 명령 파이프라인이라고 불리는 기술을 사용하기 시작했습니다. 이 기술은 프로세서가 다른 완료 단계에서 여러 명령에 대해 작업하는 방식입니다.예를 들어 프로세서는 현재 명령의 결과를 계산하면서 다음 명령의 오퍼랜드를 검색할 수 있습니다.최신 CPU는 이러한 단계를 12개 이상 사용할 수 있습니다.(파이프라이닝은 1950년대 후반에 IBM(International Business Machines)이 7030(Stretch) 메인프레임 컴퓨터에서 개발한 것입니다.)Minimal Instruction Set Computer(MISC; 최소 명령 집합 컴퓨터)는 파이프라인 작업 없이 하나의 사이클로 명령을 실행할 수 있습니다.

불과 몇 년 후에 도입된 유사한 아이디어는 여러 명령을 별도의 산술 논리 유닛(ALU)에서 병렬로 실행하는 것이었습니다.CPU는 한 번에 하나의 명령만으로 동작하는 것이 아니라 서로 의존하지 않는 여러 유사한 명령을 검색하여 병렬로 실행합니다.이 방법을 슈퍼스칼라 프로세서 설계라고 합니다.

이러한 방법은 프로그램 코드의 비의존 명령 수인 ILP(Instruction Level Parallelism) 정도에 의해 제한됩니다.일부 프로그램에서는 ILP가 높은 프로그램(특히 그래픽스) 때문에 슈퍼스칼라 프로세서에서 매우 잘 동작합니다.그러나 일반적인 문제일수록 ILP가 훨씬 적기 때문에 이러한 방법에서 발생할 수 있는 속도 향상은 감소합니다.

분기가 주요 원인 중 하나입니다.예를 들어, 프로그램이 두 개의 숫자를 추가하고 세 번째 숫자보다 큰 경우 다른 코드 세그먼트에 분기할 수 있습니다.이 경우 브랜치 조작이 처리를 위해 두 번째 ALU로 전송되어도 추가 결과를 기다려야 합니다.따라서 ALU가 1개밖에 없는 경우보다 빠르게 동작하지 않습니다.이러한 유형의 문제에 대한 가장 일반적인 해결책은 분기 예측 유형을 사용하는 것입니다.

슈퍼스칼라 설계에서 사용할 수 있는 여러 기능 단위의 효율성을 높이기 위해, 피연산자 레지스터 의존성이 또 다른 제한 요소인 것으로 밝혀졌다.이러한 의존성을 최소화하기 위해 명령의 순서가 잘못된 실행이 도입되었습니다.이러한 스킴에서는, 순서외의 완전한 명령 결과는, 예외 후에 프로그램을 재기동 가능하게 하기 위해서, 프로세서에 의해서 프로그램 순서로 정렬할 필요가 있다.순서가 어긋난 실행은 1990년대 컴퓨터 산업의 주요 발전이었다.

유사한 개념은 분기의 한 방향(예측된 방향)으로부터의 명령이 분기 방향을 알기 전에 실행되는 추측 실행이다.분기방향을 알면 예측방향과 실제방향을 비교한다.예측된 방향이 맞으면 추측적으로 실행된 명령과 그 결과가 유지되고, 맞지 않으면 이러한 명령과 그 결과가 지워집니다.정확한 분기 예측 변수와 함께 추측 실행이 수행되면 성능이 크게 향상됩니다.

원래 RISC 스타일의 설계에 관한 연구로부터 개발된 이러한 진보에 의해, 현재의 CISC 프로세서는 클럭사이클마다 12개 이상의 명령을 실행할 수 있게 됩니다.기존의 CISC 설계에서는 1개의 명령을 실행하는 데 12개 이상의 사이클이 필요했습니다.

이들 프로세서의 명령 스케줄링 로직은 크고 복잡하며 검증이 어렵습니다.또한 복잡도가 높을수록 더 많은 트랜지스터가 필요하기 때문에 소비 전력과 열이 증가합니다.이러한 점에서 RISC는 명령어가 단순하고 상호의존성이 낮으며 슈퍼스케라 구현이 용이하기 때문에 우수합니다.다만, 인텔이 실증하고 있듯이, 충분한 시간과 비용을 들여 복잡한 명령 세트 컴퓨팅(CISC) 설계에 이 개념을 적용할 수 있습니다.

1990년부터 현재까지:기대하는

VLIW 및 EPIC

슈퍼스칼라 프로세서를 만드는 명령 스케줄링 로직은 부울 로직입니다.1990년대 초, 프로그래머의 명령을 기계 수준의 명령으로 변환하는 소프트웨어인 다중 ALU 컴퓨터의 조정이 컴파일러로 옮겨질 수 있다는 것을 깨닫는 것이 중요한 혁신이었습니다.

이런 유형의 컴퓨터를 VLIW(Very Long Instruction Word) 컴퓨터라고 합니다.

프로세서의 동적 스케줄이 아닌 컴파일러의 정적 스케줄 명령으로 CPU의 복잡성을 줄일 수 있습니다.이를 통해 성능을 향상시키고 열과 비용을 절감할 수 있습니다.

안타깝게도 컴파일러는 런타임 스케줄링 문제에 대한 정확한 지식이 없습니다.CPU 코어 주파수 승수를 변경하는 것만으로 스케줄링에 영향을 줍니다.입력 데이터에 의해 결정되는 프로그램 운영은 스케줄링에 큰 영향을 미칩니다.이러한 심각한 문제를 극복하기 위해 VLIW 시스템은 일반적인 다이내믹스케줄링을 추가하여 확장되어 VLIW의 이점을 일부 상실할 수 있습니다.

컴파일러의 정적 스케줄도 동적으로 생성되는 코드가 드물다는 것을 전제로 하고 있습니다.Java 및 Java 가상 머신이 생성되기 전에는 이것이 사실이었습니다.느린 컴파일이 소프트웨어 개발자에게만 영향을 미친다고 가정하는 것은 타당했다.현재 JIT(Just-in-Time Compilation) 가상 머신이 여러 언어로 사용되고 있기 때문에 코드 생성 속도가 느리면 사용자에게도 영향을 미칩니다.

VLIW를 상용화하려는 시도가 여러 번 실패했습니다.기본적인 문제는 VLIW 컴퓨터가 동적으로 스케줄된 컴퓨터처럼 가격과 퍼포먼스가 다르다는 것입니다.또 다른 문제는 VLIW 컴퓨터용 컴파일러 설계가 매우 어려우며 2005년 현재 컴파일러는 이러한 플랫폼에 최적인 코드를 방출하는 경우가 많다는 것입니다.

또한 VLIW 컴퓨터는 짧은 레이텐시가 아닌 스루풋을 최적화하기 때문에 컨트롤러 및 기타 기계에 내장된 컴퓨터를 설계하는 엔지니어에게는 매력적이지 않습니다.임베디드 시스템 시장은 오래된 소프트웨어와의 호환성에 무관심한 대규모 시장을 제공함으로써 다른 컴퓨터 개선을 선도하는 경우가 많았다.

2000년 1월, Transmeta Corporation은 중앙 처리 장치에 컴파일러를 배치하고, 컴파일러를 참조 바이트 코드(이 경우 x86 명령)에서 내부 VLIW 명령 세트로 변환하는 새로운 단계를 밟았습니다.이 방법은 VLIW RISC의 하드웨어 심플성, 저전력 및 속도를 일반적인 CISC에 의해 제공되는 콤팩트한 메인 메모리 시스템 및 소프트웨어 역호환성과 결합합니다.

인텔의 Itanium 칩은 이른바 EPIC(명시적 병렬 명령 컴퓨팅) 설계에 기초하고 있습니다.이 설계에서는 명령 스루풋이 증가한다는 VLIW의 이점을 얻을 수 있을 것으로 생각됩니다.그러나 각 명령 번들에 종속성에 관한 명령 정보를 명시적으로 제공함으로써 확장성과 복잡성의 문제를 피할 수 있습니다.이 정보는 VLIW 설계와 마찬가지로 컴파일러에 의해 계산됩니다.또한 초기 버전은 온칩 에뮬레이터 모드를 통해 새로운 x86 소프트웨어와의 하위 호환성이 있습니다.정수 성능은 실망스러웠고 개선에도 불구하고 대량 시장에서의 판매는 여전히 저조합니다.

멀티스레딩

현재의[when?] 설계는 컴퓨터가 하나의 프로그램만 실행하고 있을 때 가장 잘 작동합니다.그러나 거의 모든 최신 운영 체제에서는 여러 프로그램을 함께 실행할 수 있습니다.CPU가 전환되어 다른 프로그램에서 작동하려면 비용이 많이 드는 컨텍스트 전환이 필요합니다.반면 멀티스레드 CPU는 여러 프로그램의 명령을 동시에 처리할 수 있습니다.

이를 위해 이러한 CPU에는 여러 세트의 레지스터가 포함되어 있습니다.콘텍스트 전환이 발생하면 작업 레지스터의 내용이 이 목적을 위해 레지스터 세트 중 하나에 복사됩니다.

이러한 설계에는 일반적인 설계와 같이 수백 개의 레지스터가 아닌 수천 개의 레지스터가 포함되어 있는 경우가 많습니다.단점으로는 레지스터는 구현에 필요한 칩 공간에서 다소 비용이 많이 드는 경향이 있습니다.이 칩 공간은 다른 용도로 사용될 수 있습니다.

인텔은 이 테크놀로지를 "하이퍼스레딩"이라고 부르며 현재 Core i3, Core i5, Core i7 및 Core i9 데스크톱 라인업(및 Core i3, Core i5, Core i7 모바일 라인업)에서 코어당2개의 스레드를 제공합니다.또, 하이엔드 Xeon Phi 프로세서에서는 코어당 최대 4개의 스레드를 제공합니다.

멀티코어

멀티코어 CPU는 일반적으로 공유 L2 또는 L3 캐시, 온다이 버스 또는 온다이 크로스바 스위치를 통해 서로 연결된 동일한 다이 상의 여러 CPU 코어입니다.다이상의 모든 CPU 코어는 다른 프로세서 및 시스템의 나머지 부분과 인터페이스하기 위한 상호 연결 컴포넌트를 공유합니다.이러한 컴포넌트에는 프론트 사이드 버스인터페이스, Dynamic Random Access Memory(DRAM; 다이내믹랜덤 액세스메모리)와 인터페이스하기 위한 메모리컨트롤러, 다른 프로세서에 대한 캐시 코히런트링크사우스브리지 및 I/O디바이스에 대한 비코히런트링크가 포함됩니다.멀티코어마이크로프로세서 유닛(MPU)이라는 용어는 여러 CPU 코어를 가진 하나의 다이에서 일반적으로 사용되고 있습니다.

인텔리전트 RAM

Von Neumann의 병목현상을 해소하기 위한 한 가지 방법은 프로세서와 DRAM을 모두 하나의 칩에 혼재시키는 것입니다.

재구성 가능한 논리

또 다른 개발 궤적은 재구성 가능한 논리와 범용 CPU를 결합하는 것입니다.이 방식에서는 특정 컴퓨터 언어가 고속 실행 서브루틴을 비트 마스크로 컴파일하여 로직을 구성합니다.CPU에서 시간을 공유함으로써 프로그램의 속도가 느리거나 덜 중요한 부분을 실행할 수 있습니다.이 프로세스를 통해 디지털 신호 처리를 사용하여 아날로그 전자제품에 의해 일반적으로 실행되는 기능을 수행함으로써 소프트웨어 라디오 등의 장치를 만들 수 있습니다.

오픈 소스 프로세서

설계 방법론의 진보와 필드 프로그래머블 게이트 어레이(FPGA) 등 칩의 가용성과 저렴한 생산 공정으로 하드웨어와 소프트웨어의 경계가 점점 모호해지면서 오픈 소스 하드웨어까지 등장하기 시작했다.OpenCores나 RISC-V같은 느슨한 커뮤니티는 최근 OpenRISC와 같은 완전 오픈 CPU 아키텍처를 발표했습니다.이 아키텍처는 라이센스 비용 없이 누구나 쉽게 FPGA나 커스텀 생산 칩에 구현할 수 있습니다.또한 Sun Microsystems와 같은 기존 프로세서 제조업체도 OpenSPARC를 통해 프로세서 설계(예: OpenSPARC)를 출시했습니다.- 소스 라이선스.

비동기 CPU

또 다른 옵션은 클럭리스 또는 비동기 CPU입니다.기존 프로세서와 달리 클럭리스 프로세서는 파이프라인을 통해 데이터의 진행 상황을 조정하는 중앙 클럭이 없습니다.대신 CPU의 단계는 파이프라인 컨트롤 또는 FIFO 시퀀서라고 불리는 논리 디바이스를 사용하여 조정됩니다.기본적으로 파이프라인 컨트롤러는 기존 단계가 완료되면 로직의 다음 단계를 클럭합니다.따라서 중앙 클럭은 불필요합니다.

클럭 로직과 비교하여 고성능 디바이스를 비동기 로직으로 구현하는 것이 더 쉬울 수 있습니다.

  • 클럭이 설정된 CPU에서는 어떤 컴포넌트도 클럭 속도보다 빠르게 실행할 수 없습니다.클럭리스 CPU에서는 컴포넌트가 다른 속도로 동작할 수 있습니다.
  • 클럭이 설정된 CPU에서는 클럭이 가장 느린 스테이지의 최악의 퍼포먼스보다 빠르지 않습니다.클럭리스 CPU에서는 스테이지가 통상보다 빨리 종료되면 다음 스테이지가 다음 클럭틱을 기다리지 않고 바로 결과를 얻을 수 있습니다.스테이지의 종료는, 데이터 입력의 타입에 의해서(예를 들면, 0 또는 1 의 경우는 곱셈이 매우 고속이 되는 경우가 있습니다), 또는 통상보다 높은 전압 또는 낮은 온도에서 동작하고 있기 때문입니다.

비동기 논리 지지자들은 이러한 능력이 다음과 같은 이점을 가져다 줄 것이라고 믿습니다.

  • 소정의 퍼포먼스로 전력 소모를 저감
  • 가능한 한 높은 실행 속도

클럭리스 CPU의 가장 큰 단점은 대부분의 CPU 설계 툴이 클럭리스 CPU(동기회로)를 상정하고 있다는 것입니다.따라서 클럭리스 CPU(비동기회로 설계)를 작성하려면 설계 툴을 변경하여 클럭리스 로직을 처리하고 추가 테스트를 실시하여 준거성 문제를 회피해야 합니다.

그래도 다음과 같은 여러 비동기 CPU가 구축되어 있습니다.

광통신

한 가지 유망한 옵션은 프론트 사이드 버스를 제거하는 것입니다.최신 수직 레이저 다이오드가 이러한 변화를 가능하게 합니다.이론적으로, 광학 컴퓨터의 부품들은 홀로그래픽 또는 단계적 개방 공기 전환 시스템을 통해 직접 연결될 수 있다.이를 통해 효과적인 속도와 설계 유연성이 크게 향상되고 비용도 크게 절감됩니다.컴퓨터의 커넥터도 고장일 가능성이 가장 높기 때문에 버스리스 시스템이 더 안정적일 수 있습니다.

또한 2010년 현재 최신 프로세서는 64비트 또는 128비트 로직을 사용하고 있습니다.광파장 중첩을 통해 공간이나 구리선을 추가하지 않고도 데이터 레인과 로직이 전자제품보다 훨씬 더 높게 될 수 있습니다.

옵티컬 프로세서

디지털 로직에는 전기 대신 빛을 사용하는 것도 장기 옵션이다.이론상으로는 약 30% 고속으로 동작하고 소비전력을 줄일 수 있으며 양자컴퓨팅 [citation needed]디바이스와의 직접 인터페이스도 가능하게 됩니다.

이 접근방식의 주요 문제는 예측 가능한 미래에 전자 컴퓨팅 요소가 더 빠르고, 더 작고, 더 저렴하고, 더 신뢰할 수 있다는 것입니다.그러한 원소들은 이미 일부 빛의 파장보다 작다.따라서 도파관 기반의 광논리조차도 전자논리에 비해 비경제적일 수 있다.2016년 현재 대부분의 개발 작업은 전자 회로에 대한 것입니다.

이온 프로세서

논리 프로세서의 요소를 구현하기 위해 전자적 또는 광학적 작용 대신 이온 기반의 화학 반응을 사용하는 초기 실험 작업이 수행되었습니다.

벨트 기계 아키텍처

전통적인 레지스터 기계나 스택 머신 건축,에 비해서 아직 인텔의 아이테니엄과 비슷한 이반 고다르와 크게 CPU하드웨어의 복잡성 내부 등록기와 결과 거대한 멀티 플렉스 영화관(구체적으로 수를 줄이기 위한 것이다 회사가 제안한 라벨은 현세적인 레지스터 계획에 대해 언급하는 것안 architecture,[12].은 후 그는 trees)[13] 일반 레지스터 이름보다 읽고 디버깅하기가 다소 어렵지만 벨트를 가장 오래된 이 벨트에서 떨어져 사라지는 이동 컨베이어 벨트로 보는 것이 이해에 도움이 됩니다.Mill 아키텍처에 구현되어 있습니다.

이벤트 스케줄

  • 1964. IBM은 메모리 보호 기능이 있는 32비트 IBM System/360을 출시합니다.
  • 1969. 인텔의 테드 호프와 Busicom의 시마 [14]마사토시가 주도한 인텔 4004의 초기 디자인.
  • 1970. 인텔의 페데리코 파긴과 Busicom의 마사토시 [14]시마가 완성한 인텔 4004 설계.
  • 1971. IBM은 System/360의 IBM System/370 후속 버전을 출시합니다.
  • 1971년 인텔은 최초의 시판 마이크로프로세서인 [1]4비트 인텔 4004를 출시했습니다.
  • 1971. NEC는 2칩 4비트 [15]CPU인 μPD707과 μPD708을 출시한다.
  • 1972. IBM은 "System/370 Advanced Function(시스템/370 고급 기능)"을 발표하며, 요구 페이징 기능이 있는 가상 메모리에 대한 지원을 추가합니다.
  • 1972년 NEC, 싱글칩 4비트 마이크로프로세서 μPD700 [16][17]출시
  • 1973. NEC는 μPD707과 μPD708을 하나의 마이크로프로세서에 [15]결합한 4비트 μPD-COM-4(μPD751)[16]를 출시합니다.
  • 1974년 인텔은 Federico Faggin과 마사토시 시마가 설계8비트 마이크로프로세서 인텔 8080을 출시했습니다.
  • 1975. MOS Technology는 8비트 MOS 테크놀로지 6502를 출시합니다.이것은 6800의 경쟁제품이 175달러였을 때 25달러의 저렴한 가격을 기록한 최초의 통합 프로세서입니다.
  • 1976. ZilogFederico Faggin과 Masatoshi Shima가 디자인한 8비트 Zilog Z80을 선보였습니다.
  • 1977. Digital Equipment Corporation은 자사의 첫 32비트 VAX 슈퍼미니컴퓨터VAX-11/780을 출시했습니다.
  • 1978년. 인텔은 인텔 8086과 인텔 8088을 첫 번째 x86 칩으로 발표했습니다.
  • 1978년 후지쯔는 MB8843 마이크로프로세서를 출시한다.
  • 1979년, Zilog는 Federico Faggin과 Masatoshi Shima가 설계한 16비트 마이크로프로세서 Zilog Z8000을 출시.
  • 1979년. 모토로라는 16/32비트 마이크로프로세서인 모토로라 68000을 출시했다.
  • 1981. Stanford MIPS최초의 RISC(Reduced Instruction Set Computing) 설계 중 하나인 를 발표했습니다.
  • 1982년 인텔은 인텔 80286을 출시했습니다.인텔 80286은 인텔 최초의 프로세서이며, 8086과 8088을 위해 작성된 모든 소프트웨어를 실행할 수 있었습니다.
  • 1984. Motorola는 완전한 32비트 어드레싱을 가능하게 한 Motorola 68020과 요구 페이징을 지원하는 68851 메모리 관리 유닛을 발표했습니다.
  • 1985. 인텔은 x86 마이크로아키텍처에 32비트 명령 세트를 추가하여 디맨드 페이징을 지원하는 인텔 80386을 발표했습니다.
  • 1985. ARM 아키텍처 도입.
  • 1989. 인텔은 인텔80486을 발표했습니다.
  • 1992. Hitachi는 ARM의 엄지 명령어 세트의 [9]기초를 제공하는 SuperH 아키텍처를 [8]도입했습니다.
  • 1993. 인텔은 최초의 Pentium 마이크로프로세서를 출시했습니다.이 프로세서는 x86 슈퍼칼라 마이크로아키텍처를 탑재한 최초의 프로세서입니다.
  • 1994. IBM은 싱글칩 마이크로프로세서를 CPU로 사용하는 최초의 IBM 메인프레임 모델인 IBM System/390 9672 시리즈를 출시했습니다.
  • 1994. 히타치의 SuperH 명령 세트를 기반으로 [9]ARM의 엄지 명령 세트가 도입되었습니다.[18]
  • 1995. 인텔은 Pentium II, Pentium III, Pentium M 및 인텔 Core 아키텍처의 기반이 되는 Pentium Pro를 발표했습니다.
  • 2000. IBM은 메인프레임 아키텍처의 64비트 버전인 z/Architecture를 출시합니다.
  • 2000. AMD는 x86-64 64비트 확장을 x86 마이크로아키텍처에 발표했습니다.
  • 2000. AMD는 Athlon 마이크로프로세서로 1GHz를 달성했습니다.
  • 2000. Analog Devices는 Blackfin 아키텍처를 도입했습니다.
  • 2002년 인텔은 동시 멀티스레딩(SMT)을 구현한 최초의 최신 데스크톱 프로세서인 하이퍼스레딩 기능을 갖춘 Pentium 4를 출시했습니다.
  • 2003년 AMD는 최초의 64비트 컨슈머 CPU인 Athlon 64를 출시했습니다.
  • 2003. 인텔은 Pentium Pro 아키텍처의 저전력 모바일 파생 모델인 Pentium M을 발표했습니다.
  • 2005년, AMD는 최초의 x86 듀얼 코어 프로세서인 Athlon 64 X2를 발표했습니다.
  • 2006. 인텔은 변경된 Pentium M 설계에 기반한 CPU의 코어 라인을 발표했습니다.
  • 2008년 출하된 ARM CPU는 100억대.
  • 2010. 인텔은 각각 2코어, 4코어를 탑재한 Core i3, i5, i7발표했습니다.
  • 2011. 64비트 AAarch64 아키텍처를 지원하는 ARM 릴리즈 ARMv8-A.
  • 2011년 AMD는 세계 최초로 데스크톱 PC용 8코어 CPU를 발표했습니다.
  • 2017. AMD는 Zen 아키텍처를 기반으로 최대 16개의 코어를 탑재한 Ryzen 프로세서를 발표했습니다.
  • 2017. 인텔 8세대 Core i3, Core i5, Core i7, Core i9는 각각 약 4, 6, 8, 8코어로 증가하였습니다.
  • 2017년 ARM은 1,000억 개의 [19]프로세서를 출하했습니다.
  • 2020. Fujitsu A64FX 48코어(ARMv8.2) 프로세서는 세계에서 가장 강력한 슈퍼컴퓨터인 [20]Fujitsu Fuju A64FX 48코어(ARMv8.2)를 탑재.
  • 2021.[21] ARM은 2011년 Armv8 이후 10년 만에 ARMv9를 출시합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b Nigel Tout. "The Busicom 141-PF calculator and the Intel 4004 microprocessor". Retrieved November 15, 2009.
  2. ^ Aspray, William (1994-05-25). "Oral-History: Tadashi Sasaki". Interview #211 for the Center for the History of Electrical Engineering. The Institute of Electrical and Electronics Engineers, Inc. Retrieved 2013-01-02.
  3. ^ Caswell, Wayne (18 February 2008). "Twenty Technology Trends that Affect Home Networking". Home Toys. Archived from the original on March 27, 2016.
  4. ^ "The Structure of SYSTEM/360". Computer Structures: Principles and Examples.
  5. ^ "16-bit Microprocessors". CPU Museum. Retrieved 5 October 2010.
  6. ^ a b "History". PFU. Retrieved 5 October 2010.
  7. ^ PANAFACOM Lkit-16, 일본정보처리학회
  8. ^ a b "Hitachi Releases the SH-4 SH7750 Series, Offering Industry's Highest Performance of 360 MIPS for an Embedded RISC Processor, as Top-End Series in SuperH Family".
  9. ^ a b c Nathan Willis (June 10, 2015). "Resurrecting the SuperH architecture". LWN.net.
  10. ^ 미니 MIPS
  11. ^ "SEAforth Overview". Archived from the original on 2008-02-02. ... asynchronous circuit design throughout the chip. There is no central clock with billions of dumb nodes dissipating useless power. ... the processor cores are internally asynchronous themselves.
  12. ^ "RISC Processors COMP375 Computer Architecture and Organization" (PDF). Archived from the original (PDF) on October 2, 2017.
  13. ^ "The Belt".
  14. ^ a b Federico Faggin, Making of the First Microprocessor, IEEE Solid-State Circuits Magazine, 2009년 겨울, IEEE Xplore
  15. ^ a b "NEC 751 (uCOM-4)". The Antique Chip Collector's Page. Archived from the original on 2011-05-25. Retrieved 2010-06-11.
  16. ^ a b 1970년 일본 반도체사박물관
  17. ^ 제프리 A.Hart & Sangbae Kim (2001),시카고 국제학회 글로벌 정보질서 지적재산권 방어
  18. ^ ARM7TDMI 테크니컬 레퍼런스 매뉴얼 ii 페이지
  19. ^ Segars, Simon (2017-02-27). "Enabling mass IoT connectivity as ARM partners ship 100 billion chips". Retrieved 2021-09-06.{{cite web}}: CS1 maint :url-status (링크)
  20. ^ "Fugaku, is powered by Fujitsu's 48-core A64FX SoC, becoming the first number one system on the list to be powered by ARM processors". Top 500. 2020-06-01. Retrieved 2021-09-06.{{cite web}}: CS1 maint :url-status (링크)
  21. ^ Takahashi, Dean (2021-03-30). "Armv9 is Arm's first major architectural update in a decade". VentureBeat. Retrieved 2021-09-06.{{cite web}}: CS1 maint :url-status (링크)

외부 링크