검수요청.png검수요청.png

반도체 설계

위키원
sms1208 (토론 | 기여)님의 2024년 10월 8일 (화) 16:21 판 (새 문서: '''반도체 설계'''(Semiconductor Design)란 기본적으로 트랜지스터를 반도체 칩에 탑재하는 기술이다. 이때 원하는 기능을 칩이 갖도록 하...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
이동: 둘러보기, 검색

반도체 설계(Semiconductor Design)란 기본적으로 트랜지스터를 반도체 칩에 탑재하는 기술이다. 이때 원하는 기능을 칩이 갖도록 하면서 성능 향상이나 비용 절감을 고려해야 한다. 칩의 성능이나 비용 등은 설계기술에 따라 좌우된다.

반도체 설계를 전문으로 하는 기업을 팹리스라고 한다. 설계를 제외한 웨이퍼 생산, 패키징, 테스트 등은 모두 외주로 진행되며, 외주를 통해 생산이 완료된 칩의 소유권이나 영업권은 팹리스에 있어 자사 브랜드로 판매한다.

개요

반도체 설계(Semiconductor Design)는 집적 회로(IC)와 같은 반도체 장치의 물리적 및 논리적 구조를 계획하고 구현하는 과정을 말한다. 이 과정은 주로 전자 장치의 성능, 효율성, 크기 및 비용을 최적화하는 것을 목표로 하며, 컴퓨터, 스마트폰, 자동차, 의료 기기 등 다양한 산업 분야에서 중요한 역할을 한다.

최근에는 반도체 설계에 인공지능(AI)과 머신러닝(ML)을 적용하여 최적화를 이루고 있다. 이 기술들은 칩의 복잡성이 증가함에 따라 설계 자동화 및 성능 개선에 크게 기여하고 있다. 또한, 차세대 반도체 설계에는 극자외선(EUV) 리소그래피와 같은 새로운 제조 기술이 도입되며, 이를 통해 보다 미세한 공정을 가능하게 하고 있다.

반도체 설계 내용

사양 정의 (Specification Definition)
  • 설계의 목표와 요구사항을 정의한다. 이를 통해 설계 대상의 성능, 전력 소모, 크기, 신뢰성 등의 기준을 설정한다.
  • 클라이언트의 요구사항을 바탕으로 디자인 사양을 구체화하며, 시스템 수준에서의 목표를 설정한다.
시스템 설계 (System Design)
  • 전체 반도체 시스템의 구조를 정의하고, 주요 기능을 개별 모듈로 분해한다.
  • 이 단계에서 각 모듈 간의 인터페이스와 데이터 흐름을 명확히 한다.
논리 설계 (Logical Design)
  • 설계 목표에 따라 논리 회로를 구현하고, 이를 하드웨어 설명 언어(HDL)인 VHDL 또는 Verilog를 이용해 기술한다.
  • 논리 설계는 주로 논리 게이트와 플립플롭 같은 디지털 회로의 구성 요소로 구성된다.
  • 논리 시뮬레이션을 통해 설계가 예상대로 작동하는지 검증한다.
물리 설계 (Physical Design)
  • 논리 설계를 물리적인 레이아웃으로 변환하는 단계이다.
  • 트랜지스터와 배선의 구체적인 배치와 연결을 설계하고, 이를 기반으로 칩의 레이아웃을 생성한다.
  • 물리 설계 단계에서 주로 레이아웃 툴을 사용하여 최적화 작업을 수행하며, 전력 소모와 열 배출 등을 고려하여 최적의 배치를 찾는다.
검증 (Verification)
  • 시뮬레이션과 검증 툴을 통해 논리 설계와 물리 설계가 사양에 맞는지 확인한다.
  • 논리 검증(Logical Verification)은 기능적 정확성을 테스트하고, 타이밍 검증(Timing Verification)은 신호 전달 지연을 확인한다.
  • 물리적 검증(Physical Verification)에서는 디자인 룰을 확인하고, 레이아웃이 제조 가능한지 검토한다.
프로토타이핑 및 제조 (Prototyping and Fabrication)
  • 설계된 반도체는 프로토타입 형태로 제작되어 실제로 작동하는지 테스트한다.
  • 검증이 완료되면 반도체 제조 공정을 통해 대량 생산이 이루어진다.
테스트 (Testing)
  • 생산된 칩이 사양에 맞게 작동하는지 테스트합니다. 이 과정에서는 칩의 기능, 성능, 신뢰성 등을 측정한다.
  • 테스트 결과를 통해 최종 제품의 품질을 보증하고, 불량품을 제거하여 최종 출하 전 검사를 완료한다.

반도체 설계 방식

반도체 설계 방식에는 다양한 방식이 있으며, 각각의 방식은 설계 목표, 칩의 복잡도, 성능 요구사항에 따라 적합하게 선택됩니다. 주요 반도체 설계 방식으로는 다음이 있습니다:

전체 주문형 설계 (Full Custom Design)

전체 주문형 설계는 반도체의 모든 회로 요소를 개별적으로 설계하는 방식이다. 설계자는 트랜지스터 수준에서부터 시작하여 필요한 모든 세부 사항을 수작업으로 정의한다.

  • 장점: 가장 높은 수준의 성능, 전력 효율성, 소형화를 구현할 수 있다.
  • 단점: 설계 시간과 비용이 매우 높습니다. 복잡하고 시간이 많이 걸리며, 전문 지식이 필요하다.
  • 사용 사례: CPU, GPU와 같은 고성능 칩 설계, 아날로그 IC 설계에서 자주 사용된다.

준 주문형 설계 (Semi-Custom Design)

전체 주문형 설계와 사전 설계된 표준 셀(Standard Cell) 라이브러리를 결합한 방식이다. 설계자는 논리 설계와 배치를 조정하고, 개별 트랜지스터 수준이 아닌 표준 셀을 사용하여 회로를 구성한다.

  • 장점: 주문형 설계보다 설계 시간이 단축되고, 비교적 유연하며 효율적인 설계가 가능하다.
  • 단점: 표준 셀 라이브러리를 사용하기 때문에 전체 주문형 설계보다 최적화 수준이 떨어질 수 있다.
  • 사용 사례: 다양한 디지털 IC 설계, ASIC(Application-Specific Integrated Circuit) 설계에서 많이 사용된다.

표준 셀 설계 (Standard Cell Design)

표준 셀 라이브러리를 사용하여 설계하는 방식으로, 미리 설계된 논리 게이트, 플립플롭, 멀티플렉서 등의 셀을 조합하여 회로를 구성한다. 대부분의 디지털 회로는 표준 셀 설계 방식으로 설계된다.

  • 장점: 설계 시간이 짧고, 설계 프로세스가 단순하며 반복 가능성이 높다.
  • 단점: 셀의 성능 및 전력 소비 최적화에는 제한이 있을 수 있다.
  • 사용 사례: 디지털 ICASIC, SoC(System on Chip) 설계에서 널리 사용된다.

게이트 어레이 설계 (Gate Array Design)

기초적인 트랜지스터 배치가 사전에 고정되어 있는 반도체 웨이퍼를 사용하여 회로를 설계하는 방식이다. 이후 제조 과정에서는 특정 기능을 수행할 수 있도록 배선만을 조정한다.

  • 장점: 설계 비용이 낮고, 빠르게 생산할 수 있다.
  • 단점: 성능과 효율성이 제한적이며, 주문형 설계에 비해 덜 유연하다.
  • 사용 사례: 저비용, 빠른 개발이 필요한 애플리케이션에서 사용된다.

프로그래머블 논리 설계 (Programmable Logic Design)

FPGA(Field Programmable Gate Array)와 같은 프로그래머블 논리 소자를 사용하여 회로를 설계한다. 프로그래밍 가능하기 때문에 사용자가 원하는 대로 기능을 설정할 수 있다.

  • 장점: 매우 유연하며, 설계 수정이 쉬워 프로토타이핑에 적합합니다. 초기 개발 비용이 낮다.
  • 단점: 주문형 설계나 표준 셀 설계에 비해 성능, 전력 효율성이 떨어진다.
  • 사용 사례: 프로토타입 개발, 시험적 설계, 소규모 생산에 많이 사용된다.

ASIC 설계 (Application-Specific Integrated Circuit Design)

특정 애플리케이션을 위해 맞춤형으로 설계된 IC로, 표준 셀, 게이트 어레이, 전체 주문형 설계 방식 중 하나 또는 조합하여 설계된다.

  • 장점: 특정 목적에 최적화된 설계로, 성능과 효율성이 매우 높다.
  • 단점: 설계 비용이 높고, 설계 시간이 길며, 대량 생산이 아니면 경제성이 떨어진다.
  • 사용 사례: 특정 기능이 요구되는 고성능 시스템, 예를 들어 통신 장비나 산업용 장비의 제어 회로 등에 사용된다.

이들 설계 방식은 설계 목표와 필요에 따라 선택되며, 각각의 방식은 설계 비용, 시간, 성능에 영향을 미치는 요소로 작용한다.

반도체 설계 과정

반도체 설계 프로세스(출처: VLSI Physical Design: From Graph Partitioning to Timing Closure)

반도체 설계 과정은 많은 부분에서 소프트웨어 개발과 유사하다. 반도체 칩의 사양(Specification)을 정하고 HDL(High-Level Description Language)로 불리는 프로그래밍 언어를 사용하여 칩의 동작 방식을 기술한다. HDL은 VHDL, Verilog, System C가 대표적이며, 소프트웨어 개발용 프로그래밍 언어와 크게 다르지 않다. 이렇게 개발된 소스코드는 컴파일러를 통하여 RTL(Register Transfer Level)로 변환되며 일종의 IL(Intermediate Language) 혹은 목적 코드(Object Code)에 해당한다. RTL 코드는 최종적으로 넷리스트(Netlist)로 변환되는데 반도체의 기본소자인 게이트(Gate) 간의 연결 관계를 표현하는 것으로 결국 논리적인 회로도(Schematic)를 나타낸다. HDL에서 넷리스트로 변환하는 과정을 논리 합성(Logical Synthesis)이라고 한다.

논리 합성을 거쳐 생성된 넷리스트는 의도한 대로 동작하는지 검증(Verification)하는 단계를 거친다. 검증이 완료된 넷리스트는 P&R(Placement & Route) 과정을 거쳐 물리적인 도면(Physical Layout)으로 변환된다. P&R은 넷리스트상의 단위소자인 라이브러리(Library)를 배치(Placement)하고 핀(Pin)들이 연결되도록 배선(Route)하는데 이때 주어진 디자인 제약조건(Design Constraint)을 충족하는 배치와 배선 경로를 탐색해야 하기 때문에 매우 복잡한 문제를 풀어야 한다. 디자인 제약조건은 예를 들면 칩의 면적을 한정하거나 배선의 최대 길이를 제한하거나 하는 규칙들이다. 배선이 길면 핀 간 배선의 저항에 의해 전입이 떨어져 회로가 정상 동작을 하지 못하며 신호가 지연되어 타이밍 문제를 일으킨다.

P&R 과정을 거치면 물리적인 도면이 생성되며 이는 GDS(Graphics Design System) 형식의 파일로 저장되는데 이 과정을 물리 합성(Physical Synthesis)이라고 한다.

GDS 파일은 반도체의 물리적인 형상을 레이어(Layer)와 폴리곤(Polygon)을 이용하여 표현한다. GDS 파일은 70년대에 제정된 표준으로 현재는 OASIS라고 불리는 새로운 형식의 파일로 점차 대체되고 있지만 실무에서는 구분 없이 통칭하여 GDS라고 부른다. GDS 파일은 PDF와 같은 벡터 그래픽 파일과 유사한 형식이지만 베지에 곡선(Bezier Curve)이나 폰트(Font) 같은 복잡한 요소는 배제되고 Rectangle, Polygon, Path 같은 기본적인 도형 요소들로 구성된다. 이러한 요소들의 집합이 셀(Cell)이라고 불리는 단위로 정의되어 있으며 셀을 반복 배치하거나 계층으로 구성하여 작은 크기의 데이터로 복잡한 도면을 표현한다. 최신 반도체 칩의 경우 수조 개 이상의 폴리곤이 저장될 정도로 대용량인 경우가 많고 용량은 수백 GB에 이르기도 한다. 때문에 이러한 파일을 처리하기 위해서는 Out-Of-Core 알고리즘에 대한 고려가 필요하며 효율적인 Spatial Acceleration 아키텍처를 설계하여 요소에 대한 접근을 최적화해야 한다.

Exynos 9820 Die Photo(출처: https://www.chiprebel.com/exynos-9820)

이렇게 생성된 GDS 파일은 DRC(Design Rule Check) 및 LVS(Layout vs. Schematic) 검증 과정을 거친다. DRC는 물리적인 형상이 만족해야 할 규칙을 검증하는 과정으로 예를 들면 Gate와 Metal이 Contact과 영역이 겹치는지 (따라서 물리적으로 접촉되었는지) 검사하는 규칙 등이 있다. LVS는 물리적인 형상으로부터 거꾸로 논리적인 회로 (Schematic)를 재건(Reconstruction)하여 원래의 회로와 같은지 검증하는 과정이다.

물리적인 설계 이후에는 생산 가능한 설계(DFM : Design For Manufacture)를 도출하기 위한 단계를 거친다. P&R을 통하여 산출한 도면은 웨이퍼 표면에 형성되어야 하는 타깃 패턴(Target Pattern)이며, 실제로 웨이퍼에 이러한 타깃 패턴을 형성하는 것은 또 다른 험난한 과정이다. 웨이퍼 패터닝은 감광 물질(포토레지스트, Photoresist)을 도포한 후 포토마스크라고 불리는 패턴이 새겨진 유리판에 빛을 통과시켜 빛을 받은 부분과 받지 못한 부분이 다르게 화학 반응을 하도록 현상하고(Develop) 선택적으로 패턴을 녹여내는 에칭(Etching) 과정을 거쳐 생성된다. 이때 빛의 회절 현상이나 포커스 값과 화학 반응의 정도에 따른 변수 등이 작용하여 의도한 패턴 형성을 방해하게 된다. 이러한 현상을 극복하기 위해서 OPC(Optical Proximity Correction) 같은 기법을 동원하여 타깃 패턴에 가깝게 형성되도록 하는 포토마스크 패턴을 역으로 계산하는 과정을 거치기도 한다.

양산에 들어가기 전 마지막 단계를 MTO(Mask Tape Out)라고 하며 모든 검증이 완료된 후 생산에 들어단다. 양산 과정에서도 수율 확보를 위한 다양한 활동을 하는데 대표적인 예로 MI(Metrology & Inspection)를 들 수 있다. MI는 광학현미경이나 SEM/TEM (Scanning/Transmission Electronic Microscope) 같은 전자현미경을 동원하여 불량 발생을 모니터링한다. 발견된 불량은 이물질이나 공정 외적인 요소로 인해 발생한 불량(Random Defect)인지 설계상 취약점으로 인해 발생하는 불량(Systematic Defect)인지 판별하고 근본 원인(Root Cause)에 대한 분석을 진행한다.

반도체 설계의 5대핵심 지표

반도체 설계는 파운드리(Foundry)에서 전달해주는 Process Design Kit을 바탕으로, 전력(Power), Perfomrance, 면적(Area) 즉 PPA라는 성능, 전력 소모, 집적도를 최적화하여 경쟁력 있는 제품을 만드는 것이다.

PPA가 가장 중요하다고 보면 된다. PPA를 지표화하는 단위로 TOPS 같은 단위가 있다. 좀 더 나아가면, PPA에 더불어 양산 단가도 중요하다. 이 모든 것들을 가장 잘 하고 있는 기업이 엔비디아(NVIDIA)이다.

이를 위해서는 전력 소모, 발열, 면적, 대역폭, 지연 시간 등 5대 핵심 지표를 총체적으로 고려해야 한다. 특히 최근 들어 인공지능과 같이 방대한 연산량이 필요한 애플리케이션이 늘어나면서, 고성능과 저전력을 동시에 만족시키는 반도체에 대한 수요가 높아지고 있다. 하지만 이들 지표는 서로 상충되는 경우가 많다. 고성능으로 만들면 전력 소모가 심해지는데 주로, Trade off라고 부른다.

반도체 개발을 하다보면 Trade-off와 Saturation이 항상 따라다닌다. 그리고 칩 사이즈가 너무 커지면 인터커넥트도 고려할 점이 많아지고, 양산 수율도 떨어지게 된다. 따라서 반도체 설계자는 제품의 용도와 목표 스펙에 맞추어 각 지표의 우선순위를 정하고, 체계적인 설계 전략을 수립해야 한다. 다양한 최적화 기법과 첨단 공정 기술을 활용하여 지표 간의 트레이드오프를 극복하고, 최상의 성능과 효율을 끌어내는 것이 반도체 설계의 핵심 과제라고 할 수 있겠다. 특히 AGI(Artificial General Intelligence)를 구현하기 위해서는 기존의 CPU, GPU를 뛰어넘는 초고성능, 초저전력 반도체가 필요할 것으로 보인다.

Power(전력)

전력 소모는 반도체 칩의 성능과 발열, 배터리 수명을 결정짓는 가장 중요한 요소 중 하나이다. 전력 소모는 크게 정적 전력(Static Power)과 동적 전력(Dynamic Power)으로 나눌 수 있는데 정적 전력은 회로가 동작하지 않을 때도 흐르는 누설 전류에 의한 것이고, 동적 전력은 회로의 스위칭 동작에 의해 소모되는 전력을 말한다.

정적 전력을 줄이기 위해서는 트랜지스터의 문턱 전압(Threshold Voltage)을 높이거나, 설계에서 사용 할 수 있는 다양한 종류의 문턱 전압(Multi-Vt) 기술을 사용하는 방법이 있다. 이는 성능 저하를 야기할 수 있어, 속도가 중요한 경로에는 Low-Vt 소자를 쓰고 느린 경로에는 High-Vt 소자를 쓰는 식으로 적절히 배분하는 것이 중요하다. 물론 이런 것들이 EDA Tool을 이용해서 자동화가 다 되어있다.

동적 전력을 최소화하기 위해서는 클럭 게이팅(Clock Gating), 파워 게이팅(Power Gating) 기법을 많이 사용한다. 클럭 게이팅은 불필요한 클럭 신호의 전파를 막아 순간적인 전력 낭비를 줄이는 기술이고, 파워 게이팅은 사용하지 않는 블록의 전원을 아예 차단하여 누설 전류를 원천 봉쇄하는 방식이다. 이외에도 DVFS(Dynamic Voltage & Frequency Scaling)를 통해 작업량에 따라 공급 전압과 동작 주파수를 가변적으로 조절함으로써 전력 효율을 높이기도 한다.

최근에는 모바일 기기나 사물인터넷(IoT) 영역에서 배터리로 장시간 동작해야 하는 제품들이 많아지면서, 저전력 설계의 중요성이 한층 커지고 있다. 배터리 용량을 늘리는 것도 중요하지만, 그에 못지않게 전력 소모를 체계적으로 관리하고 에너지 효율을 극대화하는 것이 관건이 되고 있죠. 애플리케이션 프로세서(AP)나 통신 모뎀 칩의 저전력화는 배터리 한 번 충전으로 쓸 수 있는 시간을 좌우하기 때문에 소비자의 구매 결정에도 직결되는 중대 사안이 되었다.

전력 소모를 최적화하기 위해서는 RTL 설계 단계부터 게이트 레벨, 트랜지스터 레벨에 이르기까지 체계적인 저전력 설계 기법이 동원되어야 한다. 나아가 칩 단위를 넘어 패키지, 시스템 레벨의 전력 관리 기술까지 총동원해야 하는 복합적인 엔지니어링 과제라고 할 수 있겠다. 앞으로도 전력 소모 최적화 기술의 진화가 반도체 산업의 경쟁력을 좌우할 것으로 전망된다.

Thermal / Signal / Aging (발열 및 전자기학, 칩 노화)

발열은 반도체 칩의 전력 소모에 따라 필연적으로 발생하는 현상이다. 전력 소모가 클수록 더 많은 열이 발생하게 되는데, 이는 칩의 성능과 신뢰성에 치명적인 영향을 미칠 수 있다. 반도체 내부의 트랜지스터와 배선에서 전류가 흐를 때 Joule Heating 형태로 열이 발생하고, 이 열은 칩 표면으로 전도되어 방출된다. 문제는 칩의 온도가 너무 높아지면 전자 이동도(Electron Mobility)가 감소하고 누설 전류가 증가하여 성능이 떨어진다는 점이다.

뿐만 아니라 장기적으로 고온에 노출되면 전기적 스트레스에 의해 소자의 특성이 열화되고 수명이 단축될 수 있다. 예를 들어 금속배선의 EM, 절연막의 TDDB, 트랜지스터 게이트 절연막의 HCI 등이 대표적인 고온 신뢰성 이슈이다. 특히 최근 들어 공정 미세화에 따른 전력 밀도 증가로 인해 칩 발열 문제가 더욱 심각해지고 있는 상황이다.

이에 따라 칩의 열 분포를 정밀하게 분석하고 효과적으로 냉각시키기 위한 방열 설계 기술이 중요해지고 있다. 칩 표면에 Heat Sink나 Heat Spreader를 부착하여 열 저항을 낮추고 방열 면적을 넓히는 것이 기본적인 방열 설계 방식이다. 최근에는 칩 내부에 Micro-Channel을 형성하여 냉각수를 흘려보내는 액체 냉각 기술이나, 상변화 물질(Phase Change Material)을 이용한 냉각 기술 등 다양한 첨단 방열 솔루션들이 개발되고 있다.

​또한 온도 센서와 능동형 냉각 장치(팬, 펠티어 소자 등)를 이용하여 칩의 온도를 실시간으로 모니터링하고 동적으로 제어하는 열 관리 기술도 중요하다. 칩 내부의 온도 분포를 고려하여 발열이 심한 블록은 서로 떨어뜨려 배치하거나, 온도에 민감한 아날로그 회로는 발열원에서 멀리 떨어뜨려 배치하는 식의 열 평준화 설계(Thermal Placement) 기법도 활용되고 있다.

Area (면적)

반도체 칩의 면적은 생산 단가와 직결되는 매우 중요한 지표이다. 실리콘 웨이퍼 위에 printed되는 다이(Die)의 크기가 작을수록 한 장의 웨이퍼에서 더 많은 칩을 생산할 수 있기 때문에 단위 칩 당 원가를 낮출 수 있다.

​설계 관점에서 칩 면적을 줄이기 위해서는 RTL 코드 최적화, 로직 합성 시 면적 제약 조건 부여, 게이트 사이징(Gate Sizing), 버퍼 리사이징(Buffer Resizing) 등 다양한 최적화 기법이 활용된다.

또한 FloorPlan 단계에서의 면적 최적화도 매우 중요하다.​

공정 기술이 발전함에 따라 트랜지스터 크기가 지속적으로 축소되어 왔다. 1970년대 말 3μm 수준이었던 게이트 길이가 지금은 3nm 시대에 접어들 정도로 집적도가 비약적으로 향상되었다. 하지만 최근 들어 미세화의 물리적 한계, 공정 비용 증가 등으로 인해 무어의 법칙 자체가 한계에 봉착한 상황이다. 선폭이 좁아질수록 공정 난이도가 기하급수적으로 높아지고 수율 확보가 어려워지면서, 오히려 웨이퍼당 칩 단가가 상승하는 역전 현상도 나타나고 있다.

​이에 따라 단순히 트랜지스터를 소형화하는 것을 넘어, 3차원 적층(3D Stacking), Chiplet 기술, 패키지 온 패키지(PoP) 등 혁신적인 설계/패키징 기술을 통해 집적도를 높이려는 시도들이 활발히 이루어지고 있는 상황이다. 또한 GAA(Gate-All-Around) 트랜지스터, MRAM(Magnetoresistive RAM)이나 ReRAM(Resistive RAM) 등 신소자 기술을 통해 면적 한계를 돌파하려는 노력도 가속화되고 있다.

Bandwidth (대역폭)

대역폭은 단위 시간 당 전송 또는 처리할 수 있는 데이터의 양을 의미하는 것으로, 반도체 시스템의 성능을 좌우하는 핵심 요소 중 하나이다. 아무리 고성능 CPU나 가속기가 탑재되어도 데이터 전송 속도가 뒷받침되지 않으면 연산 능력을 충분히 발휘할 수 없기 때문이다. 특히 슈퍼컴퓨터나 데이터센터용 프로세서의 경우 초당 수십 테라바이트(TB/s)에 달하는 막대한 데이터를 실시간으로 소화해야 하므로, 대역폭 확보가 설계의 최우선 과제라고 할 수 있다.

대역폭 병목 현상은 시스템 내의 어느 한 지점에서 데이터 전송 속도가 모자라 전체 성능이 제한되는 상황을 말한다. 외부 메모리와의 통신(Memory Bandwidth), 칩 내부 버스에서의 데이터 전송(Internal Bus Bandwidth), 입출력 채널에서의 데이터 송수신(I/O Bandwidth) 등 다양한 레벨에서 병목이 발생할 수 있다. 최근 들어 코어 수가 늘어나고 캐시 용량이 커지면서 오히려 외부 메모리와의 속도 격차로 인한 병목이 더 심화되는 추세이다.

NVIDIA가 가장 잘 하는 것 중 하나가 Interconnect에서 High Bandwidth를 만드는 것이다.

이를 극복하기 위해 HBM(High Bandwidth Memory), GDDR6 등 고대역 메모리 기술과 함께 다양한 설계 기법이 활용되고 있다. 또한 CPU, 가속기, 캐시 간의 통신 효율을 높이기 위해 수년 전부터 NoC(Network-on-Chip) 개념도 적극 도입되는 추세이다.

Latency (지연시간)

지연시간(Latency)은 데이터 처리 요청이 발생한 시점부터 그에 대한 응답이 나오기까지 소요되는 시간을 말한다. 프로세서 클럭 속도, 메모리 접근 시간, 버스와 인터커넥트 지연, 캐시 미스 패널티 등 다양한 요인의 영향을 받죠. 지연 시간은 프로세서의 실행 속도에 직접적인 영향을 미치므로, 지연 시간을 최소화하는 것이 시스템 성능 향상의 핵심 관건이 된다. 특히 딥러닝 워크로드의 경우 메모리 Latency가 전체 실행 시간의 상당 부분을 차지할 만큼 지연 시간에 민감한 편이다.

프로세서 파이프라인의 각 단계, 캐시 계층 간의 데이터 전송, 주변장치와의 입출력 등 데이터 경로 상의 다양한 지점에서 지연 시간이 발생할 수 있다. 이를 최소화하기 위해 명령어 레벨 병렬성(ILP)을 극대화한 슈퍼스칼라 구조나, 분기 예측(Branch Prediction), 비순차 실행(Out-of-Order Execution) 등의 기법을 통해 파이프라인 효율을 높이는 설계 기법이 전통적으로 활용되고 있다. 또한 데이터 의존성 및 자원 충돌을 최소화하기 위해 명령어 스케줄링 로직을 최적화하는 것도 중요하다.

최근 들어서는 실리콘 공정 기술의 물리적 한계로 인해 클럭 속도의 개선이 정체되는 대신, 코어 수를 늘리고 캐시 용량을 키우는 추세가 지배적이다. 그러나 Ahmdal's law에 따라, 병렬도 한계가 있다. 이에 따라 코어 간, 캐시 간의 통신 지연을 최소화하면서 대규모 병렬성을 효과적으로 활용하는 것이 지연시간 감소의 주된 전략으로 자리잡고 있다. 특히 데이터 지역성(Locality)을 최대한 활용하여 상위 계층 캐시에 대한 참조 비율을 높이고, 불필요한 하위 계층 접근을 최소화하는 것이 중요하다.

메모리 성능을 높이기 위해, Memory-level parallelism, MLP을 높이는 것이 대표적이다. 나아가 메모리에 대한 부담을 덜기 위해 연산 집약적 로직을 메모리 주변부에 배치하는 근접 연산(Near-Data Processing) 기술, Cache Prefetching을 통해 예상되는 데이터를 미리 가져오거나, 비동기 메모리 접근, 다중 메모리 뱅크, 인터리빙 기법 등이 있다.

참고자료

같이 보기


  검수요청.png검수요청.png 이 반도체 설계 문서는 반도체에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.