[include(틀:컴퓨터공학)] [include(틀:전기전자공학)] [목차] Microarchitecture, 마이크로아키텍처/컴퓨터조직 == 개요 == 마이크로아키텍처(microarchitecture) 또는 CPU 아키텍처 , GPU 아키텍처는 컴퓨터 공학에서 [[CPU]]나 [[GPU]] 같은 하드웨어가 작동하는 방식을 서술한 일종의 '''컴퓨터 설계도'''이며, 때문에 하드웨어의 운영에 대해 세세하게 기술이 되어 있다. 학술 모임에서는 컴퓨터 시스템이라는 용어가 쓰이는 반면, 컴퓨터 산업에서는 마이크로아키텍처라는 용어가 더 자주 쓰인다. 마이크로아키텍처와 [[명령어 집합]] 구조 ([[ISA]])는 함께 컴퓨터 아키텍처의 분야를 구성하고 있다. ISA 수준의 아키텍처[* [[MIPS]], [[RISC-V]], [[ARM(CPU)]]등.] 연구개발은 [[컴퓨터과학|컴퓨터 과학자]]과 전기전자공학도들이 협업하지만[* Computer architecture의 주요 혁신은 아카데미(ISCA, MICRO, ASPLOS, HPCA)기준 주로 EE전공자와 CS전공자들이 비등하게 이뤄냈지만 (당장 위의 top tier학회도 대부분 IEEE와 ACM이 공동 주최함), 인더스트리에서는 EE background를 가진 사람이 microarchitect들의 주류임 (e.g., Jim Keller). ], 마이크로아키텍쳐[* Branch predictor, DVFS, prefetcher, pipeline, cache microarchitecture, interconnect network, issue logic ,arithmetic logic unit]들의 발전은 주로 전기전자 전공자들이 주도한다. 이는 실제 칩의 생산시 필요한 지식이 좀더 로우 레벨이기 때문이다. == 상세 == [[파일:external/techreport.com/a72-block-diagram.gif]] [[http://techreport.com/review/28189/inside-arm-cortex-a72-microarchitecture|블록다이어그램으로 표현된 마이크로아키텍처의 전형적인 예시]] 위 사진은 [[ARM]] Cortex-A72의 모습이다. 마이크로아키텍처를 논하기 전에 과연 마이크로아키텍처와 그 상위의 [[CPU]] [[아키텍처]]라는 개념을 구상하고 만들어 내게 된 동기부터 살펴볼 필요가 있는데, 왜 CPU 아키텍처가 필요하게 되었는지에 대한 이해가 선행 되어야 CPU 아키텍처의 개념을 이해할 수 있고, CPU 아키텍처에 대한 개념을 이해해야 결국 그 하위에 속한 명령어셋 아키텍처와 마이크로아키텍처에 대한 개념을 확실히 이해할 수 있다. 일단 비유적으로 이야기 하자면 CPU는 클럭이라는 동기화 신호에 맞춰 디지털 데이터라는 원료를 처리하여 제품화된 디지털 데이터를 출력하는 작업을 수행하는 일종의 공장이라고 표현할 수 있다. 다음은 CPU공장이 조업하는 방식이다. * 우선 데이터를 어떤 제품으로 만들 것인가에 대한 작업지시서를 받아 온다.(명령어 인출) * 작업 지시서의 세부 작업 내용들을 해석하고 여러 개의 세부 지시서로 나누어 편집하여 공장내 각 부서에 전달하는 작업을 수행한다.(명령어 디코드 및 스케쥴링) * 세부 지시서에서 어떤 데이터를 가공할 것인가에 대한 내용에 따라 원자재 창고의 특정 위치에서 원자재를 인출해 온다.(데이터 인출) * 원자재 A는 세부 작업지시서에 내용에 따라 컨베이어벨트 2호기에 적재하여 이송시킨다.(데이터 적재) * 컨베이어밸트 2호기에는 원자재 쉬프트 장치와 덧셈 장치가 있으며 세부 작업지시서에 따라 쉬프트 장치와 덧셈장치가 원자재 A를 가공물B로 가공한다.(연산) * 가공이 끝난 가공물 B는 또다른 세부 작업지시서의 지시에 따라 제품 창고의 특정 위치로 이송된다.(데이터 쓰기) 위에서와 같이 공장의 예를 생각할 경우, 효율적인 공장의 설계와 조직을 위해서는 공장 설계자는 아래와 같은 내용을 고민하고 결졍해야만 한다. * 처음 가져오는 작업지시서의 서식을 어떻게 구성해야 정확하고 효율적으로 세부 지시서들을 편집할 수 있을 것인가? (명령어셋 아키텍처의 구현) * 작업지시서를 받은 관리부서는 어떻게 하면 빠르고 효율적으로 작업 지시서를 세부 지시서로 변환하여 각 라인을 통제하는 작업반장들에게 전달하여 작업 준비를 시킬 수 있을 것인가? (명령어 디코딩 및 전송) * 원자재 창고의 크기와 계층, 이송도로, 운송장비를 어떻게 구성해야 빠르고 효율적으로 많은 원자재를 적정량 만큼 꺼내올 수 있는가? (메모리 서브시스템/캐시메모리 구조) * 컨베이어 벨트는 과연 몇 개나 깔아야 하며 각 컨베이어 벨트의 속도와 용량은 얼마로 정해야 하는가? ( 슈퍼스칼라 및 파이프라인 구조) * 각 컨베이어 벨트의 가공장비는 몇 대를 어느 컨베이어에 어떤 종류를 배치할 것인가?(연산유닛의 숫자 및 기능 구현) * 세부 지시서들을 각 공장의 컨베이어나 이송장비나 가공장비에 어떻게 정확하면서도 적시에 전달할 수 있을 것인가? (컨트롤 구조) * 가공 완료된 제품은 어떻게 완제품창고로 빠르고 정확하게 이송하여 보관할 것인가?(메모리 서브시스템/캐시메모리 구조) 결국 CPU의 아키텍처라는 것은 위에 언급한 공장 설계자가 안고 있는 문제에 대한 답을 실제 설계로 구현해 내는 작업이라고 설명할 수 있다. 언급한 작업지시서의 서식이야 말로 바로 CPU의 명령어셋 아키텍처에 해당하며,[* 참고로 명령어셋 아키텍처라는 개념이 대두된 계기는 규모와 설비, 특히 건설 시점이 각각 다른 공장들의 작업지시서를 하나로 통일해야 할 필요성에 의한 것이다. 즉 작업지시서 서식을 동일하게 유지하면 83년도에 세운 공장과 85년도에 세운 공장 모두 같은 작업지시서를 가지고 조업지시를 내릴 수 있게 되고, 그 작업지시서의 순차적 묶음이 기계어-어셈블리어 를 거치면서 바로 오늘날의 범용 소프트웨어로 발전해 온 것이다.] 또한 그 작업지시서를 해석하고 수행해 내는 전반적인 구조를 가리켜서 바로 본 글의 주제인 마이크로아키텍처라고 칭한다. == 목록 == === [[인텔]] === ==== 일반 마이크로아키텍처 ==== ===== 틱-톡 전략 이전 ===== || {{{#ffffff 공정 }}} || {{{#ffffff 마이크로아키텍처 }}} || {{{#ffffff 코드네임 }}} || {{{#ffffff 출시일 }}} || || 800nm ||<|2> [[인텔 P5 마이크로아키텍처|P5 마이크로아키텍처]] ||P5 ||1993년 3월 || || 600nm ||P54C ||1994년 3월 || || 500nm || [[인텔 P6 마이크로아키텍처|P6 마이크로아키텍처]] ||P6 ||1995년 11월 || ||<|2> 350nm || [[인텔 P5 마이크로아키텍처|P5 마이크로아키텍처]] ||P54CQS/P54CS/P55C ||1995년 3월/1995년 6월/1997년 1월 || || [[인텔 P6 마이크로아키텍처|P6 마이크로아키텍처]] ||클라매스 ||1997년 5월 || ||<|2> 250nm || [[인텔 P5 마이크로아키텍처|P5 마이크로아키텍처]] ||틸라묵 ||1997년 8월 || ||<|2> [[인텔 P6 마이크로아키텍처|P6 마이크로아키텍처]] ||데슈츠/코빙턴/멘도시노/카트마이 ||1998년 1월/1998년 4월/1998년 8월/1999년 2월 || ||<|2> 180nm ||코퍼마인 ||1999년 10월 || || [[인텔 넷버스트 마이크로아키텍처|넷버스트 마이크로아키텍처]] ||윌라멧 ||2000년 11월 || ||<|2> 130nm || [[인텔 P6 마이크로아키텍처|P6 마이크로아키텍처]] ||투알라틴/베니아스 ||2001년 6월/2003년 3월 || ||<|2> [[인텔 넷버스트 마이크로아키텍처|넷버스트 마이크로아키텍처]] ||노스우드/갤러틴 ||2002년 1월/2003년 3월 || ||<|2> 90nm ||프레스캇/스미스필드 ||2004년 2월/2005년 5월 || || [[인텔 P6 마이크로아키텍처|P6 마이크로아키텍처]] ||도선 ||2004년 5월 || ===== 틱-톡 전략 ===== || [[틱톡전략|{{{#ffffff 틱-톡}}}]] || {{{#ffffff 공정 }}} || {{{#ffffff 마이크로아키텍처 }}} || {{{#ffffff 코드네임 }}} || {{{#ffffff 출시일 }}} || ||<|2> 틱 ||<|3> 65nm || [[인텔 넷버스트 마이크로아키텍처|넷버스트 마이크로아키텍처]][* 넷버스트 마이크로아키텍처 자체는 2000년 펜티엄4 출시 이후부터 코어2 출시때까지 계속 사용되어온 아키텍처이며, 180nm 공정부터 65nm 공정까지 공정개선을 이뤄가며 사용되었다.] || 프레슬러/시더밀 || 2006년 1월 || || [[인텔 P6 마이크로아키텍처|P6 마이크로아키텍처]] ||요나 ||2006년 1월 || || 톡 ||<|2> [[인텔 코어 마이크로아키텍처|코어 마이크로아키텍처]] ||메롬[* 인텔 공식 발표 자료에 따르면 콘로가 아니라 메롬(Merom)이다.[br][[파일:NXBqbHZ.jpg]]] ||2006년 7월 || || 틱 ||<|2> 45nm ||펜린 ||2007년 11월 || || 톡 ||<|2> [[인텔 네할렘 마이크로아키텍처|네할렘 마이크로아키텍처]] ||네할렘 ||2008년 11월 || || 틱 ||<|2> 32nm ||웨스트미어 ||2010년 1월 || || 톡 ||<|2> [[인텔 샌디브릿지 마이크로아키텍처|샌디브릿지 마이크로아키텍처]] ||샌디브릿지 ||2011년 1월 || || 틱 ||<|2> 22nm ||아이비브릿지 ||2012년 4월 || || 톡 ||<|2> [[인텔 하스웰 마이크로아키텍처|하스웰 마이크로아키텍처]] ||하스웰[br]하스웰 리프레시[br]데빌스캐년 ||2013년 6월[br]2014년 5월[br]2014년 6월 || || 틱 ||<|2> 14nm ||브로드웰 ||2014년 9월 || ===== P-A-O[* Process-Architectrue-Optimization.] 전략 ===== || [[P-A-O 전략|{{{#ffffff P-A-O}}}]] || {{{#ffffff 공정 }}} || {{{#ffffff 마이크로아키텍처}}} || {{{#ffffff CPU 코드네임}}} || {{{#ffffff 출시일}}} || || 공정 ||<|2> 14nm || [[인텔 하스웰 마이크로아키텍처|하스웰 마이크로아키텍처]] ||브로드웰 ||2014년 9월 5일 || || 아키텍처 ||<|3> [[인텔 스카이레이크 마이크로아키텍처|스카이레이크 마이크로아키텍처]] ||스카이레이크 ||2015년 8월 5일 || ||<|2> 최적화 || 14nm+ ||카비 레이크[br]카비 레이크 리프레시[br]앰버 레이크 ||2016년 8월 30일[br]2017년 8월 21일[br]2018년 8월 28일 || || 14nm++ ||커피 레이크[br]위스키 레이크[br]커피 레이크 리프레시[br]코멧 레이크 ||2017년 9월 23일[br]2018년 8월 28일[br]2018년 10월 8일[br]2019년 8월 21일 || || 공정 ||<|2> 10nm || [[인텔 코브 마이크로아키텍처#팜 코브|팜 코브 마이크로아키텍처]] ||캐논 레이크[* 생산은 2018년이지만 생산량이 매우 적기에 보여주기식에 불과하다.] ||2018년 5월 15일 || || 아키텍처 ||<|2> [[인텔 코브 마이크로아키텍처#서니 코브|서니 코브 마이크로아키텍처]] ||아이스 레이크 ||2019년 8월 1일 || || (백포트) || 14nm+++ ||로켓 레이크 ||2021년 3월 30일 || || 최적화 || 10nm SuperFin || [[인텔 코브 마이크로아키텍처#윌로우 코브|윌로우 코브 마이크로아키텍처]] ||타이거 레이크 ||2020년 9월 2일 || || 아키텍처 ||<|3> Intel 7 ||<|3> [[인텔 코브 마이크로아키텍처#골든 코브|골든 코브 마이크로아키텍처]] ||엘더 레이크 ||2021년 10월 27일 || || 최적화 ||랩터 레이크 ||2022년 10월 20일 || || 최적화 ||랩터 레이크 리프레시 ||2023년 예정 || || 공정 || Intel 4 || [[인텔 코브 마이크로아키텍처#레드우드 코브|레드우드 코브 마이크로아키텍처]] ||메테오 레이크 ||2023년 예정 || || 공정 || Intel 20A || ? ||애로우 레이크 ||2024년 예정 || || 공정 || Intel 18A || [[인텔 코브 마이크로아키텍처#라이언 코브|라이언 코브 마이크로아키텍처]] ||루나 레이크 ||2025년 예정 || ==== 저전력 마이크로아키텍처 ==== * 인텔 본넬 마이크로아키텍처 (2008년) * 인텔 솔트웰 마이크로아키텍처 (2011년) * 인텔 실버몬트 마이크로아키텍처 (2013년) * 인텔 에어몬트 마이크로아키텍처 (2014년) * [[인텔 골드몬트 마이크로아키텍처/사용 모델|인텔 골드몬트 마이크로아키텍처]] (2016년) * [[인텔 골드몬트 플러스 마이크로아키텍처/사용 모델|인텔 골드몬트 플러스 마이크로아키텍처]] (2017년) * [[인텔 트레몬트 마이크로아키텍처|인텔 트레몬트 마이크로아키텍처]] (2020년) * [[인텔 그레이스몬트 마이크로아키텍처|인텔 그레이스몬트 마이크로아키텍처]] (2021년) * [[인텔 크레스트몬트 마이크로아키텍처|인텔 크레스트몬트 마이크로아키텍처]] (2023년) === [[AMD]] === ==== CPU ==== ===== 일반 ===== * AMD K5 마이크로아키텍처 (1996년) * AMD K6 마이크로아키텍처 (1997년) * [[AMD K7 마이크로아키텍처]] (1999년) * [[AMD K8 마이크로아키텍처]] (2003년) * [[AMD K10 마이크로아키텍처]] (2007년) * [[AMD 불도저 마이크로아키텍처]] (2011년) * [[AMD 불도저 마이크로아키텍처#s-3|AMD 파일드라이버 마이크로아키텍처]] (2012년) * [[AMD 스팀롤러 마이크로아키텍처]] (2014년) * [[AMD 스팀롤러 마이크로아키텍처#s-3|AMD 엑스카베이터 마이크로아키텍처]] (2015년) * [[AMD ZEN 마이크로아키텍처]] (2017년) * [[AMD ZEN+ 마이크로아키텍처]] (2018년) * [[AMD ZEN 2 마이크로아키텍처]] (2019년) * [[AMD ZEN 3 마이크로아키텍처]] (2020년) * [[AMD ZEN 4 마이크로아키텍처]] (2022년) ===== 저전력 CPU ===== * [[AMD 밥캣 마이크로아키텍처|AMD 밥캣 저전력 마이크로아키텍처]] (2011년) * [[AMD 재규어 마이크로아키텍처|AMD 재규어 저전력 마이크로아키텍처]] (2013년) * [[AMD 퓨마 마이크로아키텍처|AMD 퓨마 저전력 마이크로아키텍처]] (2014년) * AMD K12 ARM 마이크로아키텍처[* ARMv8-A 명령어 세트 기반 마이크로아키텍처이다.] ==== 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년) * [[Radeon DNA|RDNA]] (나비) 마이크로아키텍처 (2019년) * [[Radeon DNA|RDNA]] 2 마이크로아키텍처 (2020년) === [[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년) * 암페어 마이크로아키텍처 (2020년) === [[VIA]] === * [[Cyrix]] Cayenne 마이크로아키텍처 (1997년) * [[Cyrix]] Joshua 마이크로아키텍처 (2000년) * IDT Centaur Samuel 마이크로아키텍처 (2000년) * VIA Samuel 2 마이크로아키텍처 (2001년) * VIA Ezra 마이크로아키텍처 (2001년) * VIA Ezra-T 마이크로아키텍처 (2001년) * VIA Nehemiah 마이크로아키텍처 (2003년) * VIA Nehemiah+ 마이크로아키텍처 (2003년) * [[VIA C7|VIA Esther 마이크로아키텍처]] (2005년) * [[나노(VIA)|VIA Isaiah 마이크로아키텍처]] (2008년) * VIA Isaiah II 마이크로아키텍처 (2014년) * VIA CenTaur CNS/CHA 마이크로아키텍처 (2019년) ==== Zhaoxin ==== * Zhaoxin Zhangjiang 마이크로아키텍처 (2015년) * Zhaoxin Wudaokou 마이크로아키텍처 (2017년) * Zhaoxin Lujiazui 마이크로아키텍처 (2019년) * Zhaoxin YongFeng 마이크로아키텍처 (2022년) [[분류:마이크로아키텍처]]