마이크로아키텍처
Microarchitecture, 마이크로아키텍처/컴퓨터조직
마이크로아키텍처(microarchitecture) 또는 CPU 아키텍처 , GPU 아키텍쳐는 컴퓨터 공학에서 CPU나 GPU 같은 하드웨어가 작동하는 방식을 서술한 일종의 '''컴퓨터 설계도'''이며, 때문에 하드웨어의 운영에 대해 세세하게 기술이 되어 있다.
학술 모임에서는 컴퓨터 시스템이라는 용어가 쓰이는 반면, 컴퓨터 산업에서는 마이크로아키텍처라는 용어가 더 자주 쓰인다. 마이크로아키텍처와 명령어 집합 구조 (ISA)는 함께 컴퓨터 아키텍처의 분야를 구성하고 있다.
[image]
블록다이어그램으로 표현된 마이크로아키텍처의 전형적인 예시
마이크로아키텍처를 논하기 전에 과연 마이크로아키텍처와 그 상위의 CPU 아키텍처라는 개념을 구상하고 만들어 내게 된 동기부터 살펴볼 필요가 있는데, 왜 CPU 아키텍처가 필요하게 되었는지에 대한 이해가 선행 되어야 CPU 아키텍처의 개념을 이해할 수 있고, CPU 아키텍처에 대한 개념을 이해해야 결국 그 하위에 속한 명령어셋 아키텍처와 마이크로아키텍처에 대한 개념을 확실히 이해할 수 있다.
일단 비유적으로 이야기 하자면 CPU는 클럭이라는 동기화 신호에 맞춰 디지털 데이터라는 원료를 처리하여 제품화된 디지털 데이터를 출력하는 작업을 수행하는 일종의 공장이라고 표현할 수 있다.
다음은 CPU공장이 조업하는 방식이다.
1. 개요
마이크로아키텍처(microarchitecture) 또는 CPU 아키텍처 , GPU 아키텍쳐는 컴퓨터 공학에서 CPU나 GPU 같은 하드웨어가 작동하는 방식을 서술한 일종의 '''컴퓨터 설계도'''이며, 때문에 하드웨어의 운영에 대해 세세하게 기술이 되어 있다.
학술 모임에서는 컴퓨터 시스템이라는 용어가 쓰이는 반면, 컴퓨터 산업에서는 마이크로아키텍처라는 용어가 더 자주 쓰인다. 마이크로아키텍처와 명령어 집합 구조 (ISA)는 함께 컴퓨터 아키텍처의 분야를 구성하고 있다.
2. 상세
[image]
블록다이어그램으로 표현된 마이크로아키텍처의 전형적인 예시
마이크로아키텍처를 논하기 전에 과연 마이크로아키텍처와 그 상위의 CPU 아키텍처라는 개념을 구상하고 만들어 내게 된 동기부터 살펴볼 필요가 있는데, 왜 CPU 아키텍처가 필요하게 되었는지에 대한 이해가 선행 되어야 CPU 아키텍처의 개념을 이해할 수 있고, CPU 아키텍처에 대한 개념을 이해해야 결국 그 하위에 속한 명령어셋 아키텍처와 마이크로아키텍처에 대한 개념을 확실히 이해할 수 있다.
일단 비유적으로 이야기 하자면 CPU는 클럭이라는 동기화 신호에 맞춰 디지털 데이터라는 원료를 처리하여 제품화된 디지털 데이터를 출력하는 작업을 수행하는 일종의 공장이라고 표현할 수 있다.
다음은 CPU공장이 조업하는 방식이다.
- 우선 데이터를 어떤 제품으로 만들 것인가에 대한 작업지시서를 받아 온다.(명령어 인출)
- 작업 지시서의 세부 작업 내용들을 해석하고 여러 개의 세부 지시서로 나누어 편집하여 공장내 각 부서에 전달하는 작업을 수행한다.(명령어 디코드 및 스케쥴링)
- 세부 지시서에서 어떤 데이터를 가공할 것인가에 대한 내용에 따라 원자재 창고의 특정 위치에서 원자재를 인출해 온다.(데이터 인출)
- 원자재 A는 세부 작업지시서에 내용에 따라 컨베이어벨트 2호기에 적재하여 이송시킨다.(데이터 적재)
- 컨베이어밸트 2호기에는 원자재 쉬프트 장치와 덧셈 장치가 있으며 세부 작업지시서에 따라 쉬프트 장치와 덧셈장치가 원자재 A를 가공물B로 가공한다.(연산)
- 가공이 끝난 가공물 B는 또다른 세부 작업지시서의 지시에 따라 제품 창고의 특정 위치로 이송된다.(데이터 쓰기)
- 처음 가져오는 작업지시서의 서식을 어떻게 구성해야 정확하고 효율적으로 세부 지시서들을 편집할 수 있을 것인가? (명령어셋 아키텍처의 구현)
- 작업지시서를 받은 관리부서는 어떻게 하면 빠르고 효율적으로 작업 지시서를 세부 지시서로 변환하여 각 라인을 통제하는 작업반장들에게 전달하여 작업 준비를 시킬 수 있을 것인가? (명령어 디코딩 및 전송)
- 원자재 창고의 크기와 계층, 이송도로, 운송장비를 어떻게 구성해야 빠르고 효율적으로 많은 원자재를 적정량 만큼 꺼내올 수 있는가? (메모리 서브시스템/캐시메모리 구조)
- 컨베이어 벨트는 과연 몇 개나 깔아야 하며 각 컨베이어 벨트의 속도와 용량은 얼마로 정해야 하는가? ( 슈퍼스칼라 및 파이프라인 구조)
- 각 컨베이어 벨트의 가공장비는 몇 대를 어느 컨베이어에 어떤 종류를 배치할 것인가?(연산유닛의 숫자 및 기능 구현)
- 세부 지시서들을 각 공장의 컨베이어나 이송장비나 가공장비에 어떻게 정확하면서도 적시에 전달할 수 있을 것인가? (컨트롤 구조)
- 가공 완료된 제품은 어떻게 완제품창고로 빠르고 정확하게 이송하여 보관할 것인가?(메모리 서브시스템/캐시메모리 구조)
3. 인텔
3.1. 일반 마이크로아키텍처
3.1.1. 틱-톡 전략 이전
3.1.2. 틱-톡 전략
3.1.3. P-A-O[5] 전략
3.2. 저전력 마이크로아키텍처
- 인텔 본넬 마이크로아키텍처 (2008년)
- 인텔 솔트웰 마이크로아키텍처 (2011년)
- 인텔 실버몬트 마이크로아키텍처 (2013년)
- 인텔 에어몬트 마이크로아키텍처 (2014년)
- 인텔 골드몬트 마이크로아키텍처 (2016년)
- 인텔 골드몬트 플러스 마이크로아키텍처 (2017년)
4. AMD
- 일반
- AMD K5 마이크로아키텍처 (1996년)
- AMD K6 마이크로아키텍처 (1997년)
- AMD K7 마이크로아키텍처 (1999년)
- AMD K8 마이크로아키텍처 (2003년)
- AMD K10 마이크로아키텍처 (2007년)
- AMD 불도저 마이크로아키텍처 (2011년)
- AMD 파일드라이버 마이크로아키텍처 (2012년)
- AMD 스팀롤러 마이크로아키텍처 (2014년)
- AMD 엑스카베이터 마이크로아키텍처 (2015년)
- AMD ZEN 마이크로아키텍처 (2017년)
- AMD ZEN+ 마이크로아키텍처 (2018년)
- AMD ZEN 2 마이크로아키텍처 (2019년)
- AMD ZEN 3 마이크로아키텍처 (2020년)
- 저전력
- AMD 밥캣 저전력 마이크로아키텍처 (2011년)
- AMD 재규어 저전력 마이크로아키텍처 (2013년)
- AMD 푸마 저전력 마이크로아키텍처 (2014년)
- AMD K12 ARM 마이크로아키텍처[7]
- GPU 마이크로아키텍처
- Rage 4 마이크로아키텍처 (1998년)
- Rage 6 (R100) 마이크로아키텍처 (2000년)
- R200 마이크로아이텍처 (2001년)
- R300 마이크로아키텍처 (2002년)
- R400 마이크로아키텍처 (2004년)
- R500 마이크로아키텍처 (2005년)
- TeraScale 마이크로아키텍처 (2007년)
- TeraScale 2 마이크로아키텍처 (2009년)
- TeraScale 3 마이크로아키텍처 (2010년)
- 1세대 Graphics Core Next 마이크로아키텍처 (2012년)
- 2세대 Graphics Core Next 마이크로아키텍처 (2013년)
- 3세대 Graphics Core Next 마이크로아키텍처 (2014년)
- 4세대 Graphics Core Next (폴라리스) 마이크로아키텍처 (2016년)
- 5세대 Graphics Core Next (베가) 마이크로아키텍처 (2017년)
- RDNA (나비) 마이크로아키텍처 (2019년)
- RDNA 2 (?) 마이크로아키텍처 (2020년 예정)
5. NVIDIA
- NV3 마이크로아키텍처 (1997년)
- NV4 (파렌하이트) 마이크로아키텍처 (1998년)
- NV10 (셀시우스) 마이크로아키텍처 (1999년)
- NV20 (켈빈) 마이크로아키텍처 (2001년)
- NV30 (랜킨) 마이크로아키텍처 (2003년)
- NV40 (퀴리) 마이크로아키텍처 (2004년)
- G80/G92 (1세대 테슬라) 마이크로아키텍처 (2006년)
- G200/GT215 (2세대 테슬라) 마이크로아키텍처 (2008년)
- 1세대 페르미 (GF100/GF104) 마이크로아키텍처 (2010년)
- 2세대 페르미 (GF110/GF114) 마이크로아키텍처 (2010년)
- 1세대 케플러 (GK104/GK110) 마이크로아키텍처 (2012년)
- 2세대 케플러 (GK208) 마이크로아키텍처 (2013년)
- 1세대 맥스웰 (GM107) 마이크로아키텍처 (2014년)
- 2세대 맥스웰 (GM204) 마이크로아키텍처 (2014년)
- 파스칼 마이크로아키텍처 (2016년)
- 볼타 마이크로아키텍처 (2017년)
- 튜링 마이크로아키텍처 (2018년)
[1] Process-Architectrue-Optimization.[2] 참고로 명령어셋 아키텍처라는 개념이 대두된 계기는 규모와 설비, 특히 건설 시점이 각각 다른 공장들의 작업지시서를 하나로 통일해야 할 필요성에 의한 것이다. 즉 작업지시서 서식을 동일하게 유지하면 83년도에 세운 공장과 85년도에 세운 공장 모두 같은 작업지시서를 가지고 조업지시를 내릴 수 있게 되고, 그 작업지시서의 순차적 묶음이 기계어-어셈블리어 를 거치면서 바로 오늘날의 범용 소프트웨어로 발전해 온 것이다.[3] 넷버스트 마이크로아키텍처 자체는 2000년 펜티엄4 출시 이후부터 코어2 출시때까지 계속 사용되어온 아키텍처이며, 180nm 공정부터 65nm 공정까지 공정개선을 이뤄가며 사용되었다.[4] 인텔 공식 발표 자료에 따르면 콘로가 아니라 메롬(Merom)이다. [image][5] Process-Architectrue-Optimization.[6] 생산은 2018년이지만 생산량이 매우 적기에 보여주기식에 불과하다.[7] ARMv8-A 명령어 세트 기반 마이크로아키텍처이다.