명령 집합 컴퓨터 감소

Reduced instruction set computer
Sun Micro시스템s UltraSPARC 프로세서는 RISC 마이크로프로세서의 일종이다.

컴퓨터 공학에서, 축소된 명령 집합 컴퓨터(RISC)는 과제를 실현하기 위해 컴퓨터에 주어진 개별 지시를 단순화하도록 설계된 컴퓨터다.RISC 컴퓨터를 사용하는 복잡한 명령 집합 컴퓨터(CISC)에 주어진 명령과 달리 개별 명령어는 더 간단한 코드로 작성되기 때문에 작업을 실현하기 위해 더 많은 명령어(코드)가 필요할 수 있다.목표는 각 지침의 속도를 증가시킴으로써 더 많은 지침을 처리할 필요성을 상쇄하는 것이다. 특히 명령 파이프라인을 구현하는 것이 더 간단한 지침이 주어진다면 더 간단할 수 있다.[1]

RISC 컴퓨터의 주요 작동 개념은 각 명령이 오직 하나의 기능만을 수행하는 것이다(예: 메모리에서 레지스터로 값을 복사하는 것).RISC 컴퓨터는 일반적으로 컴퓨터의 주 메모리에 대한 접근을 허가하는 명령과 별도로 레지스터 등록 명령어(산술 및 시험 수행용)에 대한 코드가 있는 로드/스토어 아키텍처와 함께 많은 (16 또는 32) 고속 범용 레지스터를 가지고 있다.CPU 설계는 RISC 컴퓨터에게 시스템 전체의 설계를 단순화하는 간단한 주소 지정[2] 모드와 예측 가능한 명령 시간을 거의 허용하지 않는다.

RISC 컴퓨터 아키텍처의 개념적 발전은 1970년대 후반 IBM 801 프로젝트에서 시작되었지만, 이것들은 즉시 사용되지는 않았다.캘리포니아의 디자이너들은 스탠포드 MIPS버클리 RISC라는 두 개의 핵심 프로젝트에서 801개의 개념을 선택했다.이것들은 1980년대에 MIPSSPARC 시스템으로 상용화되었다.IBM은 결국 801 개념, IBM POWER 명령 집합 아키텍처, PowerPC, Power ISA에 대한 추가 작업을 바탕으로 RISC 설계를 제작했다.프로젝트가 성숙함에 따라 1980년대 후반과 1990년대 초반에 생산된 많은 유사한 설계들이 중앙 처리 장치를 만들어 유닉스 워크스테이션과 레이저 프린터, 라우터 및 유사 제품의 임베디드 프로세서의 상업적 효용을 증가시켰다.

리스크 프로세서 디자인의 종류가 ARC 처리 장치 DEC알파, AMDAm29000, ARM아키텍처, 아트 멜 AVR, 블랙핀, 인텔 i860, 인텔 i960, LoongArch, 모토롤라 88000, MIPS아키텍처, PA-RISC, 전원 ISA, RISC-V, 슈퍼 H, 스팍. 간단한 프로세서는 Fugaku 같은 슈퍼 컴퓨터에서 사용하는 등이 포함된다.[3]

역사와 발전

1960년대로 거슬러 올라가는 많은 시스템들이 부분적으로는 부하/스토어 접근방식의 사용에 기초하여 최초의 RISC 아키텍처로 인정되어 왔다.[4]RISC라는 용어는 버클리 RISC 프로젝트의 데이비드 패터슨에 의해 만들어졌지만, 비록 전에 다소 비슷한 개념들이 나타났었다.[5]

1964년 세이모어 크레이가 설계한 CDC 6600은 2개의 주소 지정 모드(register+register, register+즉시 상수)와 74개의 운영 코드만으로 로드/스토어 아키텍처를 사용했으며, 기본 클럭 주기는 메모리 액세스 시간보다 10배 빠르다.[6]부분적으로 CDC 6600의 최적화된 로드/스토어 아키텍처 때문에, 잭 동가라는 현대 RISC 시스템의 개발을 위해 많은 다른 기술적 장벽들을 극복해야 하지만, 그것이 현대 RISC 시스템의 선구자로 여겨질 수 있다고 말한다.[7]

IBM 801

IBM 파워PC 601 RISC 마이크로프로세서

마이클 J. 플린은 최초의 RISC 시스템을 IBM 801 설계로 보고 있으며,[2] 1975년에 John Cocke에 의해 시작되어 1980년에 완성되었다.801은 디지털 전화 스위치의 기초로 사용할 24비트 고속 프로세서를 만들기 위한 노력에서 개발되었다.시간당 100만 통화(초당 300회)의 전환 목표를 달성하기 위해, 그들은 CPU가 그 당시 가장 빠른 메인프레임 머신인 3.5 MIPS에서 수행했던 370/168과 비교하여 12 MIPS의 순서로 성능을 요구한다고 계산했다.[8][9]

이 디자인은 IBM이 고객들로부터 수집한 광범위한 통계 수집에 대한 연구에 바탕을 두고 있다.이를 통해 고성능 설정의 코드는 프로세서 레지스터를 광범위하게 사용했으며, 프로세서 레지스터가 고갈되는 경우가 많다는 것을 알 수 있었다.이는 추가 레지스터가 성능을 개선할 것임을 시사했다.또한, 그들은 컴파일러가 특히 직교 어드레싱 모드와 같은 사용 가능한 지침의 대부분을 일반적으로 무시한다는 것을 알게 되었다.대신, 그들은 주어진 명령 중 가장 빠른 버전을 선택하고 그것을 사용하여 작은 루틴을 만들었다.이는 결과 코드에 영향을 미치지 않고 대부분의 지침을 제거할 수 있음을 시사했다.이 두 가지 결론은 일치하여 작용했다; 지시를 제거하면 명령어 opcode가 더 짧아져 명령어 비트가 자유로워질 수 있으며, 이는 더 큰 레지스터 집합 중에서 선택하는 데 사용될 수 있다.[8]

전화 교환 프로그램은 1975년에 취소되었지만, 그 때쯤이면 팀은 동일한 설계가 거의 모든 코드에 걸쳐 상당한 성능 향상을 제공할 것이라는 것을 증명했다.시뮬레이션에서, 그들은 가능한 모든 곳에서 레지스터를 사용하도록 조정된 컴파일러가 기존 설계보다 약 3배 빠르게 코드를 실행할 수 있다는 것을 보여주었다.다소 놀랍게도, 동일한 코드가 레지스터 사용이 개선되었기 때문에 기존 컴퓨터에서도 약 50% 더 빨리 실행될 것이다.실제로 PL/1의 약간 축소된 버전인 그들의 실험용 PL/8 컴파일러는 기존 메인프레임에서 훨씬 더 빠르게 실행되는 코드를 일관되게 생성했다.[8]

801의 32비트 버전은 1981년에 IBM ROMP로서 단일 칩 형태로 생산되었는데, 이는 '연구 OPD[사무용 제품 부문] 마이크로 프로세서'[10]를 의미한다.이 CPU는 "mini" 작업을 위해 설계되었으며, 이후 IBM 컴퓨터의 주변 인터페이스와 채널 컨트롤러에서 사용되는 것을 발견했다.1986년 IBM RT PC에서도 CPU로 사용되었는데, 이는 상업적인 실패로 판명되었다.[11]비록 801이 원래 형태로 널리 사용되는 것을 보지 못했지만, 그것은 결국 IBM POWER 명령 집합 아키텍처로 이어질 IBM의 프로젝트를 포함한 많은 연구 프로젝트에 영감을 주었다.[12][13]

RISC 및 MIPS

1970년대 후반에 이르러 801년대는 업계에서 잘 알려지게 되었다.이것은 더 복잡한 칩이 시장에 나올 수 있게 하는 새로운 제조 기술과 일치했다.1976년의 질로그 Z80은 트랜지스터가 8,000개였던 반면, 1979년의 모토로라 68000(68k)은 6만8000개였다.이러한 새로운 설계는 일반적으로 명령 집합을 보다 직교적으로 확장하기 위해 새로 발견된 복잡성을 사용했다.68k와 마찬가지로 대부분은 마이크로코드를 사용하여 이를 수행했고, 지침을 읽고 일련의 간단한 내부 지침으로 재실행했다.68k에, 만원이 마이크로 코딩에는 트랜지스터의 13이 사용되었다.[14]

1979년 데이비드 패터슨버클리 캘리포니아 대학에서 안식년 휴가를 보내 DEC의 웨스트 코스트 팀이 VAX 마이크로코드를 개선하는 것을 도왔다.패터슨은 코딩 과정의 복잡성에 충격을 받아 그것을 사용할 수 없다고 결론지었다.[15]그는 처음에는 마이크로코딩을 개선하는 방법에 대한 논문을 썼지만, 나중에 생각을 바꿔 마이크로코드 자체가 문제라고 결정했다.DARPA VLSI 프로그램으로부터 자금을 지원받아 패터슨은 버클리 RISC의 노력을 시작했다.오늘날 사실상 알려지지 않은 이 프로그램은 칩 설계, 제작, 그리고 심지어 컴퓨터 그래픽에도 엄청난 발전을 가져왔다.BSD Unix 변종에서 나온 다양한 프로그램을 고려했을 때, 버클리 팀은 IBM이 그랬듯이 대부분의 프로그램들이 68k에서 많은 종류의 지시를 사용하지 않는다는 것을 발견했다.[16]

패터슨의 초기 작품은 전통적인 더 나은 접근방식의 중요한 문제를 지적했는데, 전체적인 성능에 중요한 지침들 조차도 마이크로코드를 통한 여행으로 인해 지연되고 있었다.마이크로코드가 제거되면 프로그램이 더 빨리 실행될 것이다.그리고 마이크로코드는 결국 복잡한 지시를 받아 그것을 단계별로 세분화했기 때문에, 컴파일러가 대신 이것을 하지 못할 이유가 없었다.이 연구들은 다른 어떤 변화도 없더라도 더 빨리 달릴 수 있는 트랜지스터 13를 적게 가진 칩을 만들 수 있다는 것을 시사했다.[16]그들은 최초 RISC-I 논문에서 다음과 같이 언급했다.[17]

이 추가 수준의 해석을 건너뛰면 칩 크기는 줄이면서 성능은 향상되는 것으로 보인다.[17]

또한 특정 아키텍처의 마이크로코드 구현에서 복잡한 운영이 동일한 작업을 수행하는 일련의 단순한 운영보다 느린 경향이 있는 것으로 밝혀졌다.이는 부분적으로 모든 지침을 최적화하거나 튜닝할 시간이 거의 없이 많은 설계가 서두른다는 사실의 영향이었다. 가장 자주 사용되는 설계만 최적화되었으며, 이러한 지침의 순서는 해당 순서와 동등한 작동을 수행하는 덜 조정된 명령보다 더 빠를 수 있다.한 악명 높은 예는 VAX의 작품이었다.INDEX교수법[18]

버클리 연구도 몇 가지 가산점을 올렸다.이 중 프로그램들이 서브루틴 통화와 리턴을 수행하는 데 상당한 시간을 들인 것이 사실이었고, 이러한 통화의 속도를 높임으로써 전반적인 성능을 향상시킬 수 있는 가능성이 있어 보였다.이 때문에 버클리 설계는 다소 복잡한 비용이 들더라도 서브루틴 성능을 크게 개선할 수 있는 레지스터 윈도우라고 알려진 방법을 선택하게 되었다.[17]그들은 또한 대다수의 수학적인 지시들이 단순한 과제라는 것을 알아챘고, 그 중 단지 1/3만이 실제로 덧셈이나 뺄셈과 같은 연산을 수행했다.그러나 그러한 수술들이 일어났을 때, 그들은 느리게 행동하는 경향이 있었다.이것은 대부분의 칩이 제어와 마이크로코드 전용이었던 이전의 설계와는 달리 기초적인 산술 데이터 단위를 훨씬 더 강조하게 만들었다.[16]

결과적으로 Berkeley RISC는 파이프라이닝과 레지스터 윈도우링의 공격적인 사용을 통해 성능을 얻는 것에 기초하였다.[18][17]기존 CPU에서는 레지스터 수가 적으며 프로그램은 언제든지 레지스터를 사용할 수 있다.레지스터 창이 있는 CPU에는 128개처럼 엄청난 수의 레지스터가 있지만 프로그램은 한 번에 8개 등 소수의 레지스터만 사용할 수 있다.절차당 8개의 레지스터로 스스로를 제한하는 프로그램은 매우 빠른 절차 호출을 할 수 있다.호출은 단순히 윈도우를 8만큼 아래로, 그 절차에 의해 사용되는 8개의 레지스터 세트로 이동시키고, 복귀는 윈도우를 뒤로 이동시킨다.[19]버클리 RISC 프로젝트는 1982년에 RISC-I 프로세서를 제공했다.겨우 44,420개의 트랜지스터로 구성되어 있는 RISC-I는 (이 시대의 새로운 CISC 설계에서 약 10만개의 평균과 비교) 32개의 지침만 가지고 있었지만, 다른 어떤 단일 칩 설계보다 완전히 능가했으며, 추정 성능은 VAX보다 높다.[17]그 뒤를 이어 1983년 RISC-I보다 3배 이상 빠른 39개의 명령 RISC-II 트랜지스터 40,760개를 탑재했다.[17]

실리콘밸리에 RISC 프로젝트가 알려지기 시작하자 1981년 스탠퍼드대에서도 비슷한 프로젝트가 시작됐다.MIPS 프로젝트는 존 L에 의한 대학원 과정으로부터 성장했다. 헤네시는 1983년에 기능 시스템을 생산했고 1984년까지 간단한 프로그램을 운영할 수 있었다.[20]MIPS 접근방식은 공격적인 클럭 사이클과 파이프라인의 사용을 강조하여 가능한 한 "완전"하게 실행될 수 있도록 했다.[20]MIPS 시스템은 MIPS-X에 이어 1984년 Hennessy와 그의 동료들은 MIPS Computer Systems를 구성하여 상업적으로 디자인을 생산했다.[20][21]그 벤처는 1985년에 MIPSR2000 마이크로프로세서라고도 불리는 새로운 아키텍처를 낳았다.[21]

RISC 개념의 전반적인 철학은 1980년대 후반까지 널리 이해되었고, 1987년 MIPS-X의 설계자들이 다음과 같이 표현하도록 이끌었다.

모든 명령 형식의 목표는 1. 단순 디코딩, 2. 단순 디코딩, 3. 단순 디코딩이어야 한다.CPU 성능을 희생시키면서 코드 밀도를 개선하려는 시도는 기회 있을 때마다 조롱해야 한다.[22]

상용차단

RISC-V 시제품 칩(2013).

1980년대 초에는 RISC 개념을 둘러싼 상당한 불확실성들이 있었다.한 가지 우려는 메모리 사용이었다; 68k와 같은 전통적인 프로세서의 단일 지침은 아마도 6개의 간단한 RISC 지침으로 작성될 수 있다.이론적으로, 이것은 시스템이 기억에서 지시를 가져오는 데 더 많은 시간을 소비했기 때문에 속도를 늦출 수 있다.그러나 1980년대 중반에 이르러 그 개념들은 상업적으로 실행 가능한 것으로 보일 만큼 충분히 성숙되었다.[11][20]

상업적 RISC 설계는 1980년대 중반에 나타나기 시작했다.최초의 MIPS R2000은 1986년 1월에 나타났고, 그 직후 휴렛 패커드PA-RISC가 일부 컴퓨터에 등장했다.[11]그러는 동안 버클리의 노력은 너무나 잘 알려져 결국 전체 개념의 이름이 되었다.1987년 Sun MicrosystemsSPARC 프로세서와 함께 버클리 RISC II 시스템을 직접 기반으로 시스템을 출하하기 시작했다.[11][23]미국 정부 컴퓨팅 및 통신 혁신 위원회는 SPARC 시스템의 성공에 대한 RISC 개념의 실행 가능성 수용을 인정한다.[11]SPARC의 성공은 1990년까지 그리고 1995년까지 RISC 프로세서를 새로운 RISC 시스템을 출시한 IBM 내부의 새로운 관심사가 150억 달러 규모의 서버 산업의 기초가 되었다.[11]

1980년대 후반까지, 새로운 RISC 디자인은 모든 전통적인 디자인을 큰 차이로 쉽게 능가했다.이때, 다른 벤더들은 모두 자체 RISC 노력을 시작했다.이들 중에는 DEC Alpha, AMD Am29000, Intel i860i960, Motorola 88000, IBM POWER, 그리고 조금 후에 IBM/Apple/Motorola PowerPC 등이 있었다.이 중 상당수는 같은 시대의 다른 나라들에 비해 경쟁 우위를 제공하지 못하는 경우가 많아 사라졌다.남아 있는 것들은 틈새시장이나 다른 시스템의 일부로서만 사용되는 경우가 많으며 SPARC와 POWER만이 유의미한 잔여시장을 가지고 있다.특출한 ARM은 애플과 제휴하여 저전력 설계를 개발하여 그 시장에 특화시킨 것으로, 당시는 틈새시장이었다.특히 아이폰 도입 이후 모바일 컴퓨팅이 증가하면서 ARM은 시장에서 가장 널리 사용되는 고급 CPU 디자인이 되었다.

RISC와 기존 CICS 접근방식 간의 경쟁도 1980년대 초 이론적 분석의 대상이 되어 프로세서 성능의 철칙으로 이어졌다.

2010년부터 새로운 오픈소스 명령 집합 아키텍처(ISA, RISC-V)는 연구 목적과 독점적 ISA에 대한 자유로운 대안으로 버클리 캘리포니아 대학에서 개발 중에 있다.2014년 현재 사용자 공간 ISA의 버전 2가 고정되어 있다.[24]ISA는 소형 임베디드 프로세서에 충분한 베어본 코어에서 표준 및 칩 설계자가 정의한 확장 및 코프로세서와 함께 슈퍼컴퓨터 및 클라우드 컴퓨팅 사용에 이르기까지 확장 가능하도록 설계되었다.그것은 CHISEL 언어로 오픈소스 프로세서 발생기로도 이용 가능한 ROCKE SoC와 실리콘 설계로 시험되었다.

특성과 디자인 철학

명령 집합 철학

"사용설명서 세트 컴퓨터 감소"라는 문구에 대한 일반적인 오해는 지시사항이 간단히 제거되어 지시사항 집합이 작아진다는 것이다.[25]실제로 수년 동안 RISC 명령어 세트는 크기가 커졌고 오늘날에는 많은 CISC CPU보다 더 큰 명령어 세트를 가지고 있다.[26][27]Power와 같은 일부 RISC 프로세서예를 들어 PC는 CICS IBM System/370만큼 큰 명령 집합을 가지고 있다. 반대로, DEC PDP-8은 명령의 많은 수가 다중 메모리 액세스를 포함하기 때문에 CIC CPU인 것이 분명하다. 8개의 기본 명령과 몇 개의 확장 명령만 가지고 있다.[28]그 구절에서 "축소"라는 용어는 단일 명령어를 실행하기 위해 수십 개의 데이터 메모리 사이클이 필요할 수 있는 CICS CPU의 "복잡한 명령"과 비교하여 단일 명령어가 수행하는 작업의 양이 대부분 단일 데이터 메모리 사이클에서 감소한다는 사실을 설명하기 위한 것이었다.[29]

로드/스토어 아키텍처라는 용어가 선호되기도 한다.

RISC/CISC 토론을 바라보는 또 다른 방법은 컴파일러에 노출되는 것을 고려하는 것이다.CICSC 프로세서에서 하드웨어는 STRING MOVE와 같은 단일 복합 명령을 구현하기 위해 레지스터와 플래그 비트를 내부적으로 사용할 수 있지만, 컴파일러에서 그러한 세부 정보를 숨길 수 있다.RISC 프로세서의 내부 작동은 "컴파일러에 노출"되어 백론어 '컴파일러에게 흥미로운 것을 공개하라'[30][31]로 이어진다.

지시 형식

대부분의 RISC 아키텍처는 고정 길이 명령과 간단한 인코딩을 가지고 있어 가져오기, 디코딩 및 발행 논리를 상당히 단순화한다.이것은 RISC 접근법의 주요 목표 중 하나이다.[17]

이 중 일부는 32비트 포맷으로의 현대적인 이동 때문에 가능하다.예를 들어, 일반적인 프로그램에서 모든 숫자 상수의 30% 이상이 0 또는 1이고, 95%가 1바이트에 적합하며, 99%가 16비트 값에 적합하다.[32]컴퓨터가 8비트 또는 16비트 단어에 기초했을 때, 증분 및 감소와 같은 특정 명령어는 다른 opcode를 사용함으로써 암묵적으로 이 작업을 수행했지만, 단일 메모리 단어로 opcode와 즉시 결합하는 것은 어려울 것이다.이와는 대조적으로 32비트 기계는 즉각적인 값을 인코딩할 수 있는 충분한 공간을 가지고 있으며, 그렇게 함으로써 값을 픽업하기 위해 두 번째 메모리 읽기를 할 필요가 없다.많은 RISC 프로세서가 12비트 또는 13비트 상수를 명령어에 직접 인코딩할 수 있도록 허용하는 이유다.[17]

MIPS 및 RISC 설계에서와 같이 13비트 상수 영역을 가정하면 명령 인코딩에 19비트를 추가로 사용할 수 있다.이는 작업 코드와 하나 또는 두 개의 레지스터를 모두 나타낼 수 있는 충분한 공간을 남겨둔다.등록 대 등록 연산(대부분 수학 및 논리학)은 사용 중인 두세 개의 레지스터를 인코딩하기에 충분한 비트가 필요하다.대부분의 프로세서는 양식의 3-operand 형식을 사용한다.A = B + C이 경우 세 개의 레지스터 번호가 필요하다.프로세서에 32개의 레지스터가 있는 경우 각 레지스터에는 15비트의 5비트 번호가 필요하다.이들 레지스터 중 하나를 즉시로 교체하더라도, 여전히 남은 레지스터 2개와 opcode를 인코딩할 수 있는 여지가 많다.다음과 같은 다중 단어 시스템에서 찾을 수 있는 일반적인 지시사항INC그리고DEC명령을 수행하기 전에 읽어야 할 단어 수를 줄이는 은 단일 레지스터와 즉시 값 1로 달성할 수 있기 때문에 RISC에서 단수적이다.[17]

원래의 RISC-I 형식은 개념의 표준적인 예로 남아 있다.opcode에는 7비트를, 조건부 코드는 1비트 플래그를, 목적지 레지스터에는 다음 5비트를, 첫 번째 피연산자에게는 다음 5비트를 사용한다.이렇게 하면 14비트가 남는데, 그 중 첫 번째 비트는 다음 13비트가 즉시 값을 포함하는지 아니면 두 번째 피연산자에 대한 레지스터를 나타내기 위해 5비트를 사용하는지를 나타낸다.[17]좀 더 복잡한 예로는 opcode에 6비트만 사용한 MIPS 인코딩이 있고, 그 뒤에 5비트 레지스터가 2개 있다.나머지 16비트는 두 가지 방법으로 사용할 수 있는데, 하나는 16비트 즉시값으로, 또는 5비트 변속 값(시프트 운용에만 사용되며, 그렇지 않으면 0)으로, 나머지 6비트는 opcode의 확장으로 사용할 수 있다.등록 대 등록 산술 연산의 경우, opcode는 0이었고, 마지막 6비트는 실제 코드를 포함하고 있었으며, 즉석에서 값을 사용한 연산자는 정면의 정상적인 opcode 필드를 사용했다.[33]

32비트 명령어의 한 가지 단점은 코드 밀도 감소인데, 이는 임베디드 컴퓨팅의 특성이 워크스테이션에 있는 것보다 더 불리하고 서버 시장 RISC 아키텍처는 원래 서비스하도록 설계되었다.이 문제를 해결하기 위해 ARM, Power ISA, MIPS, RISC-VAdapteva Epiphany와 같은 여러 아키텍처에는 선택적으로 짧고 기능이 축소된 압축 명령 집합이 있다.일반적으로 이러한 지침은 레지스터의 개수와 즉시 값을 위한 비트를 적게 노출하며, 종종 지시에서 하나의 레지스터 번호를 제거하기 위해 2-인스트레이션 형식을 사용한다.레지스터가 16개인 시스템의 2-operand 형식은 레지스터 번호에 대해 8비트를 요구하고, opcode나 기타 용도에 대해서는 8비트를 남긴다.SH5는 비록 반대 방향으로 진화했지만 원래 16비트 인코딩에 더 긴 32비트 명령을 추가했음에도 불구하고 이 패턴을 따른다.

하드웨어 활용률

주어진 수준의 일반 성능에 대해 RISC 칩은 설계자가 원래 레지스터 세트의 크기를 늘리고 내부 병렬 처리를 증가시킬 수 있었던 핵심 논리 전용 트랜지스터가 훨씬 적을 것이다.

RISC 아키텍처의 다른 특징은 다음과 같다.

  • 프로세서 평균 처리량이 사이클당[needs update] 1지시에 근접한 경우
  • 동일한 비트 위치에서 opcode와 함께 단일 단어를 사용하여 더 간단한 디코딩
  • 모든 범용 레지스터는 모든 지침에서 소스/대상으로서 동등하게 사용될 수 있으며, 컴파일러 설계를 단순화한다(변동 지점 레지스터는 종종 분리되어 보관됨).
  • 명령 시퀀스에 의해 수행되는 복잡한 주소 지정을 포함한 간단한 주소 지정 모드
  • 하드웨어에 데이터 유형이 거의 없음(: 바이트 문자열 또는 BCD 없음)

RISC 설계는 또한 명령 스트림과 데이터 스트림이 개념적으로 분리되는 하버드 메모리 모델을 특징으로 할 가능성이 더 높다. 즉, 코드가 저장된 메모리를 수정하는 것은 적어도 CPU가 별도의 명령과 데이터 캐시를 가지고 있기 때문에 프로세서에 의해 실행되는 명령에는 영향을 미치지 않을 수 있다는 것을 의미한다.특별 동기화 지침이 발행된다. 별도의 명령과 데이터 캐시가 있는 CISC 프로세서는 일반적으로 오래된 프로세서와의 역호환성을 위해 자동으로 동기화를 유지한다.

많은 초기 RISC 설계도 점프나 분기 직후에 명령 공간인 분기 지연 슬롯이 있는 특성을 공유했다.이 공간의 지시는 분기의 취사 여부에 관계없이 실행된다(즉, 분기의 효과가 지연된다).이 지침은 CPU의 ALU를 분기를 수행하는 데 일반적으로 필요한 추가 시간 동안 계속 사용하게 한다.오늘날 지점 지연 슬롯은 일부 RISC 설계를 구현하기 위한 특정 전략의 불행한 부작용으로 간주되며, 현대 RISC 설계는 일반적으로 이를 없앤다(예:[citation needed] PowerPC 및 더 최신 버전의 SPARC 및 MIPS).

1975년경 최초의 RISC 라벨 설계에 기인하는 일부 측면에는 당시의 메모리 제한 컴파일러수동 조립 부호화를 용이하게 하기 위한 기능을 이용할 수 없었으며, 복잡한 주소 지정 모드는 필요한 추가 메모리 접근으로 인해 수행하는데 많은 사이클이 필요하다는 관찰이 포함된다.많은 레지스터를 위한 공간을 남겨두기에 충분할 정도로 작은 구현을 산출하여 느린 메모리 액세스 수를 줄일 수 있다면 그러한 기능은 단순한 명령의 순서에 의해 더 잘 수행될 것이라고 주장하였다.이러한 간단한 설계에서 대부분의 지침은 길이가 균일하고 구조가 유사하며, 산술 연산은 CPU 레지스터로 제한되며 별도의 부하저장 명령 액세스 메모리만 있다.이러한 속성은 이전보다 파이프라인 단계의 균형을 더 잘 유지할 수 있게 하여 RISC 파이프라인을 훨씬 더 효율적으로 만들고 더 높은 클럭 주파수를 허용한다.

그러나 RISC와 다른 설계의 또 다른 자극은 실제 프로그램에 대한 실제 측정에서 비롯되었다.Andrew Tanenbaum은 이러한 많은 것들을 요약하여 프로세서가 종종 과도한 크기의 즉시성을 가지고 있다는 것을 보여주었다.예를 들어, 그는 프로그램의 모든 상수의 98%가 13비트로 적합할 것이라는 것을 보여주었지만, 많은 CPU 설계는 그것들을 저장하기 위해 16비트 또는 32비트를 전용했다.이는 메모리 액세스 수를 줄이기 위해 고정 길이 기계는 명령어 자체의 사용되지 않은 비트에 상수를 저장하여 CPU가 필요로 할 때 즉시 준비될 수 있음을 시사한다(기존 설계에서 즉각적인 어드레싱과 유사함).이것은 32비트 명령어에 적절한 크기의 상수를 위한 여지를 남기기 위해 작은 opcode가 필요했다.

많은 실제 프로그램들이 그들의 대부분의 시간을 간단한 작업을 실행하는 데 소비하기 때문에, 일부 연구자들은 가능한 한 빨리 그러한 작업을 수행하는 데 초점을 맞추기로 결정했다.CPU의 클럭 속도는 명령의 가장 느린 하위 작동을 실행하는 데 걸리는 시간에 의해 제한된다. 그 주기 시간을 줄이면 종종 다른 명령의 실행을 가속한다.[34]"축소된 명령"에 초점을 맞추면 결과 기계가 "축소된 명령 집합 컴퓨터"(RISC)라고 불리게 된다.목표는 높은 주파수에서 단일 클럭 처리량을 달성하기 위해 쉽게 파이프라인으로 연결할 수 있도록 지시사항을 매우 단순하게 만드는 것이었다.

나중에, RISC 프로세서의 가장 중요한 특징 중 하나는 외부 메모리가 부하 또는 저장소에 의해서만 액세스할 수 있다는 점에 주목했다.다른 모든 지시사항은 내부 등록부로 제한되었다.이것은 프로세서 설계의 많은 측면을 단순화했다: 명령어를 고정 길이로 허용하고, 파이프라인을 단순화하며, 단지 두 가지 지시사항에 대한 메모리 액세스(캐시 미스 등) 완료 지연을 처리하기 위한 논리를 분리한다.이는 RISC 설계를 부하/저장소 아키텍처라고 부르도록 만들었다.[35]

다른 아키텍처와 비교

일부 CPU는 매우 작은 명령 집합을 갖도록 특별히 설계되었지만, 이러한 설계는 전통적인 RISC 설계와는 매우 다르기 때문에 최소 명령 집합 컴퓨터(MISC) 또는 전송 트리거 아키텍처(TTA)와 같은 다른 이름을 부여받았다.

RISC 아키텍처는 전통적으로 x86 기반 플랫폼이 지배적인 프로세서 아키텍처로 남아 있는 데스크톱 PC와 범용 서버 시장에서 거의 성공을 거두지 못했다.그러나 이는 ARM 기반 프로세서가 고성능 시스템을 위해 개발되고 있기 때문에 바뀔 수 있다.[36]카비움, AMD, 퀄컴 등 제조사는 ARM 아키텍처 기반 서버 프로세서를 출시했다.[37][38]ARM은 2017년 크레이와 제휴해 ARM 기반 슈퍼컴퓨터를 생산하고 있다.[39]데스크톱에서 마이크로소프트(MS)는 퀄컴과의 파트너십 일환으로 2017년 퀄컴 스냅드래곤 기반 기기에서 윈도10 PC 버전을 지원할 계획이라고 밝혔다.이들 장치는 32비트 x86 코드를 ARM64 코드로 변환하는 x86 프로세서 에뮬레이터를 통해 32비트 x86용으로 컴파일된 Windows 애플리케이션을 지원한다.[40][41]애플은 자사의 Mac 데스크탑과 노트북 컴퓨터를 인텔 프로세서에서 애플 실리콘이라고 불리는 ARM64 기반의 SoC로 바꿀 것이라고 발표했다. 애플 M1 프로세서를 사용하는 최초의 컴퓨터는 2020년 11월에 출시되었다.[42]애플 실리콘이 탑재된 맥은 x86-64 바이너리를 x86-64~ARM64 번역기인 로제타2로 구동할 수 있다.[43]

그러나 데스크톱 영역 밖에서 ARM RISC 아키텍처는 스마트폰, 태블릿 및 많은 형태의 임베디드 장치에서 광범위하게 사용되고 있다.초기 RISC 설계는 현재의 CISC 설계와 크게 다르지만, 2000년까지 RISC 라인의 최고 성능 CPU는 CISC 라인의 최고 성능 CPU와 거의 구별할 수 없었다.[44][45][46]

RISC 아키텍처의 사용

RISC 아키텍처는 현재 스마트폰과 태블릿 컴퓨터에서부터 2020년 11월 현재 TOP500 목록에서 가장 빠른 푸가쿠, 그리고 그 목록의 다음 세 가지 목록인 서밋, 시에라, 선웨이 타이후라이트 같은 세계에서 가장 빠른 슈퍼컴퓨터에 이르기까지 다양한 플랫폼에서 사용되고 있다.[47]

로우엔드 및 모바일 시스템

21세기 초까지 대부분의 로우엔드 및 모바일 시스템은 RISC 아키텍처에 의존했다.[48]예를 들면 다음과 같다.

데스크톱 및 랩톱 컴퓨터

워크스테이션, 서버 및 슈퍼컴퓨터

2022년 스티브 퍼버, 존 L. 헤네시, 데이비드 A. 패터슨소피 M. 윌슨은 축소된 명령 집합 컴퓨터(RISC) 칩의 발명, 개발 및 구현에 기여한 공로로 미국 공학 아카데미로부터 찰스 스타크 드레이퍼 상을 받았다.[53][54]

참고 항목

참조

  1. ^ Berezinski, John. "RISC: Reduced Instruction set Computer". Department of Computer Science, Northern Illinois University. Archived from the original on 28 February 2017.
  2. ^ a b Flynn, Michael J. (1995). Computer Architecture: Pipelined and Parallel Processor Design. pp. 54–56. ISBN 0867202041.
  3. ^ "Japan's Fugaku gains title as world's fastest supercomputer". RIKEN. Retrieved 24 June 2020.
  4. ^ Fisher, Joseph A.; Faraboschi, Paolo; Young, Cliff (2005). Embedded Computing: A VLIW Approach to Architecture, Compilers and Tools. p. 55. ISBN 1558607668.
  5. ^ Reilly, Edwin D. (2003). Milestones in computer science and information technology. pp. 50. ISBN 1-57356-521-0.
  6. ^ Grishman, Ralph (1974). Assembly Language Programming for the Control Data 6000 Series and the Cyber 70 Series. Algorithmics Press. p. 12. OCLC 425963232.
  7. ^ Dongarra, Jack J.; et al. (1987). Numerical Linear Algebra on High-Performance Computers. pp. 6. ISBN 0-89871-428-1.
  8. ^ a b c Cocke, John; Markstein, Victoria (January 1990). "The evolution of RISC technology at IBM" (PDF). IBM Journal of Research and Development. 34 (1): 4–11. doi:10.1147/rd.341.0004.
  9. ^ IBM System/370 System Summary (Technical report). IBM. January 1987.
  10. ^ Šilc, Jurij; Robič, Borut; Ungerer, Theo (1999). Processor architecture: from dataflow to superscalar and beyond. pp. 33. ISBN 3-540-64798-8.
  11. ^ a b c d e f 혁명 자금 지원: 1999년 ISBN 0-309-06278-0페이지 239에 의한 정부 전산연구 지원
  12. ^ Nurmi, Jari (2007). Processor design: system-on-chip computing for ASICs and FPGAs. pp. 40–43. ISBN 978-1-4020-5529-4.
  13. ^ Hill, Mark Donald; Jouppi, Norman Paul; Sohi, Gurindar (1999). Readings in computer architecture. pp. 252–4. ISBN 1-55860-539-8.
  14. ^ Starnes, Thomas (May 1983). "Design Philosophy Behind Motorola's MC68000". Byte. p. Photo 1.
  15. ^ Patterson, David (30 May 2018). "RISCy History". AM SIGARCH.
  16. ^ a b c "Example: Berkeley RISC II".
  17. ^ a b c d e f g h i j Patterson, David A.; Sequin, Carlo H. (1981). RISC I: A Reduced Instruction Set VLSI Computer. 8th annual symposium on Computer Architecture. Minneapolis, MN, USA. pp. 443–457. doi:10.1145/285930.285981. PDF로
  18. ^ a b Patterson, D. A.; Ditzel, D. R. (1980). "The case for the reduced instruction set computer". ACM SIGARCH Computer Architecture News. 8 (6): 25–33. CiteSeerX 10.1.1.68.9623. doi:10.1145/641914.641917. S2CID 12034303.
  19. ^ Sequin, Carlo; Patterson, David (July 1982). Design and Implementation of RISC I (PDF). Advanced Course on VLSI Architecture. University of Bristol. CSD-82-106.
  20. ^ a b c d Chow, Paul (1989). The MIPS-X RISC microprocessor. pp. xix–xx. ISBN 0-7923-9045-8.
  21. ^ a b 누르미 2007, 페이지 52-53
  22. ^ Weaver, Vincent; McKee, Sally. Code Density Concerns for New Architectures (PDF). ICCD 2009.
  23. ^ Tucker, Allen B. (2004). Computer science handbook. pp. 100–6. ISBN 1-58488-360-X.
  24. ^ Waterman, Andrew; Lee, Yunsup; Patterson, David A.; Asanovi, Krste. "The RISC-V Instruction Set Manual, Volume I: Base User-Level ISA version 2.0". University of California, Berkeley. Technical Report EECS-2014-54. Retrieved 1 March 2022.
  25. ^ Esponda, Margarita; Rojas, Ra'ul (September 1991). "Section 2: The confusion around the RISC concept". The RISC Concept — A Survey of Implementations. Freie Universitat Berlin. B-91-12.
  26. ^ Stokes, Jon "Hannibal". "RISC vs. CISC: the Post-RISC Era". Ars Technica.
  27. ^ Borrett, Lloyd (June 1991). "RISC versus CISC". Australian Personal Computer.
  28. ^ Jones, Douglas W. "Doug Jones's DEC PDP-8 FAQs". PDP-8 Collection, The University Of Iowa Department of Computer Science.
  29. ^ Dandamudi, Sivarama P. (2005). "Ch. 3: RISC Principles". Guide to RISC Processors for Programmers and Engineers. Springer. pp. 39–44. doi:10.1007/0-387-27446-4_3. ISBN 978-0-387-21017-9. the main goal was not to reduce the number of instructions, but the complexity
  30. ^ Walls, Colin (18 April 2016). "CISC and RISC".
  31. ^ Fisher, Joseph A.; Faraboschi, Paolo; Young, Cliff (2005). Embedded Computing: A VLIW Approach to Architecture, Compilers and Tools. p. 57. ISBN 9781558607668.
  32. ^ Alexander, W. Gregg; Wortman, David (November 1975). "Static and Dynamic Characteristics of XPL Programs". IEEE Computer: 41–48.
  33. ^ Soares, João; Rocha, Ricardo. "Encoding MIPS Instructions" (PDF).
  34. ^ 앤드류 슐먼 1990의 "프로그래머 관점에서 본 마이크로프로세서"
  35. ^ Dowd, Kevin; Loukides, Michael K. (1993). High Performance Computing. O'Reilly. ISBN 1565920325.
  36. ^ Vincent, James (9 March 2017). "Microsoft unveils new ARM server designs, threatening Intel's dominance". The Verge. Retrieved 12 May 2017.
  37. ^ Russell, John (31 May 2016). "Cavium Unveils ThunderX2 Plans, Reports ARM Traction is Growing". HPC Wire. Retrieved 8 March 2017.
  38. ^ AMD's first ARM-based processor, the Opteron A1100, is finally here, ExtremeTech, 14 January 2016, retrieved 14 August 2016
  39. ^ Feldman, Michael (18 January 2017). "Cray to Deliver ARM-Powered Supercomputer to UK Consortium". Top500.org. Retrieved 12 May 2017.
  40. ^ "Microsoft is bringing Windows desktop apps to mobile ARM processors". The Verge. Vox Media. 8 December 2016. Retrieved 8 December 2016.
  41. ^ "How x86 emulation works on ARM". Microsoft Docs. 15 February 2018.
  42. ^ a b "Introducing the next generation of Mac" (Press release). Apple Inc. 10 November 2020.
  43. ^ "macOS Big Sur is here" (Press release). Apple Inc. 12 November 2020.
  44. ^ Carter, Nicholas P. (2002). Schaum's Outline of Computer Architecture. p. 96. ISBN 0-07-136207-X.
  45. ^ Jones, Douglas L. (2000). "CISC, RISC, and DSP Microprocessors" (PDF).
  46. ^ Singh, Amit. "A History of Apple's Operating Systems". Archived from the original on 3 April 2020. the line between RISC and CISC has been growing fuzzier over the years
  47. ^ "Top 500 The List: November 2020". TOP 500. Retrieved 2 January 2021.
  48. ^ 단다무디 2005, 페이지 121-123
  49. ^ Bennett, Amy (2005). "Apple shifting from PowerPC to Intel". Computerworld. Retrieved 24 August 2020.
  50. ^ Vaughan-Nichols, Steven J. "Review: The ARM-powered Samsung Chromebook". ZDNet. Retrieved 28 April 2021.
  51. ^ DeAngelis, Marc (22 June 2020). "Apple starts its two-year transition to ARM this week". Engadget. Retrieved 24 August 2020. Apple has officially announced that it will be switching from Intel processors to its own ARM-based, A-series chips in its Mac computers.
  52. ^ "Microsoft to launch a new ARM-based Surface this fall". www.msn.com. Retrieved 28 April 2021.
  53. ^ "Recipients of the Charles Stark Draper Prize for Engineering". nae.edu.
  54. ^ "Charles Stark Draper Prize for Engineering". nae.edu.

외부 링크