레이블이 ASIC/SoC인 게시물을 표시합니다. 모든 게시물 표시
레이블이 ASIC/SoC인 게시물을 표시합니다. 모든 게시물 표시

2015년 3월 9일 월요일

[ASIC/SoC] 저전력 SoC 설계 기술 - 02.저전력 기술 설명

저전력기술에는 다음과 같은 기술들이 있는데 하나씩 알아보자.

1. 클록게이팅

< 클록게이팅 기술 >

RTL 수준에서 쉽게 구현이 가능한 기술로 데이터 값의 변화가 없는 레지스터의 클록을 차단하여 동적 파워 소모를 차단하고자 하는 기법이다. 다른 저전력 기술에 비해 구현이 용이하다는 장점이 있으나, 게이팅 로직 추가로 인한 전력 소모 부담이 존재한다.

2. 파워게이팅

< 파워게이팅 구성도 >

특정 기간 동안 동작하지 않는 블록의 전원을 차단하여 전력을 절감하고자 하는 기술로 동적/정적 전력 소비에 모두 효과적이다. 하지만 전원이 차단되기 직전의 상태값을 저장하기 위한 retention 레지스터, 파워 on/off 용 스위치, Power Management Unit 로직 등이 추가로 필요하며, 이로 인한 전력 소모 및 설계 비용이 상승하게 된다. 

3. 다중문턱전압

< 다중문턱전압 구현 방식 >

다중문턱전압 방식은 트랜지스터의 문턱전압과 누설전류 사이의 특징을 이용하여 time-critical 한 경로에 있는 로직들은 low-Vth 소자를 사용하고, 그 외 경로에는 high-Vth 소자를 사용하여 누설전력을 줄이고자 한 기술이다.

4. 다중 동작전압 및 DVFS

      < 동작전압 vs. 처리속도 >                      < 다중동작전압 구성도>


트랜지스터는 동작전압이 낮을수록 소모 전류가 줄어드는 반면, 게이트 간 신호 Delay는 증가하여 시스템 동작 속도가 저하된다. 이러한 특징을 이용한 다중 동작전압 기법은 고속 동작이 필요한 CPU, RAM 등의 블록과 저속 동작이 허용되는 주변장치의 전원을 분리하여 불필요한 Power 소모를 줄이고자 한 저전력 설계 기술이다. 또한 DVFS(Dynamic Voltage Frequency Scaling)는 전압뿐 아니라 주파수도 task deadline에 따라 스케일링하여 전력 효율을 극대화 한다. 하지만 시스템 복잡도 및 변동성이 증가게 된다.

이에 따라 EDA 벤더들이 저전력을 위한 기술을 체계적으로 구축하여 적용하고 있으며 앞으로 계속적으로 발전하여 효과적인 솔루션을 제공할 것으로 기대하고 있다.

참조 문서 : 정보통신기술진흥센터 - 저전력SoC설계를 위한 파워인식 EDA 툴 최신 동향

2015년 2월 28일 토요일

[ASIC/SoC] 저전력 SoC 설계 기술 - 01.저전력 설계 기술이 필요한 이유

이번에는 최근 웨어러블과 IoT 등으로 반도체에서 핵심이 되고 있는 '저전력' 기술에 대해서 알아보자.

< 공정기술 변천에 따른 Leakage-Dynamic Power 동향 >

전자 설계 자동화(EDA : Electronic Design Automation) 이란 PCB부터 IC 설계까지 컴퓨터 프로그램을 이용한 전자제품 설계를 뜻하는 용어로 1980년대 초 본격적인 상용 EDA 툴 시장이 형성되었다. 이 후 EDA 툴은 성능(speed), 칩 면적(area), 생산성 최적화 등을 중심으로 빠르게 발전하였다. 하지만 최신 반도체 칩의 높은 직접도 및 빠른 동작속도에 따른 동적소비전력 증가나 공정기술 발전에 의한 누설전류 급증현상은 과거 무시 가능하였던 전력 문제를 부각시켰다. 따라서 저전력 기술이 필요한 이유와 기술에 대해서 알아보자.

< 반도체 소모 전력 분석 >

반도체 칩 소비전력은 동적전력(Dynamic Power)와 정적전력(Static Power)로 구성된다. 동적전력은 용량성 부하(C, L)이 충방전하면서 소모되는 전력으로 트렌지스터 short circuit 전류(Isc)와 스위칭 전류(Iswitch)에 의해 발생되며, 트랜지스터 동작주파수 및 동작 전압 제곱 값에 비례한다. 반면 정적전력은 문턱아래 누설(sub-threshold leakage), 게이트 산화막 누설(gate oxide leakage), P-N접합 다이오드 누설 등 트랜지스터의 구조적 특징에 의해 발생하는 누설전력으로, 동작전압에 비례하고 문턱전압(Vth)에 반비례하는 특성을 지닌다.

< 문턱전압과 누설전류 상관관계 >

따라서 저전력 구동전압과 동작주파수를 낮추고 높은 문턱전압을 갖는 공정을 선택할 수 있지만, 이 경우 트랜지스터 특성으로인해 회로의 동작속도가 제한되고 게이트 간 신호 Delay가 길어져 회로 성능 저하가 유발된다.
(누설 전류는 공정이 낮아질수록 이동하면 안되는 전자가 이동하는 현상)

< 저전력 설계 기술 적용 현황 >

이러한 이유로 FinFET, FD-SOI 등 새로운 공정기술 연구가 활발히 진행되고 있으며, 다양한 저전력 기법들이 적용되고 있다.

참조 문서 : 정보통신기술진흥센터 - 저전력SoC설계를 위한 파워인식 EDA 툴 최신 동향

2014년 11월 18일 화요일

[ASIC/SoC] CISC vs RISC

지난번 ARM을 설명하다보니 언급되었던 CPU의 명령어 처리 방식 중 하나인 CISC와 RISC가 있는데 이번에는 이 두가지에 대하여 알아보도록 하자.

CISC : Complex Instruction Set Compute의 약자로 CPU(Central Processing Unit)내부에 많은 명령어들을 담고 있는 명령어세트를 말한다.

RISC : Reduced Instruction Set Compute의 약자로 마찬가지로 CPU 내부에 명령어세트 이지만 실행속도를 높이기 위해 많이 사용되는 명령어들만을 사용하고 있으며 다른 부분들은 소프트웨어로 대신하는 방법이다.

CISC의 대표적은 것들은 Intel의 대부분 CPU가 CISC 방식을 사용하고 있으며 반면 RISC 방식의 대표적인 것은 단연 ARM 이다.

범용 컴퓨터의 경우 OS를 기반으로 어떤 소프트웨어든지 범용적으로 사용할 수 있도록 가능한한 많은 명령어들을 CPU에서 처리함으로써 소프트웨어를 만드는 것이 단순해지고 컴파일 속도가 빠르다. 그러나 CPU에서 많은 명령어들을 처리하다보니 CPU의 구조가 복잡하고 가격이 비싸고 전력소모가 많은 것이 단점이다.

따라서 자주 쓰이지 않는 명령어들은 소프트웨어로 처리하고 자주 사용되는 명령어만 간략화 하여 CPU의 성능을 높인 것이 RISC 이다. 1970년대 중반부터 IBM을 비롯한 컴퓨터 관련기업 및 대학에서 컴퓨터가 자료를 처리하는데 사용되는 명령어들 중 20% 명령어가 전체 사용횟수(실행시간)의 80%를 차지한다는 것을 알게 되었고 그에 따라 간단한 명령만을 만들어 전체 실행시간을 단축시켰다. 다만 CPU에서 대부분의 명령어를 처리했던 CISC 방식과는 달리 RISC는 CPU에서 처리하지 못하는 명령어를 소프트웨어에서 처리해야한다. 따라서 CISC방식(컴파일)된 소프트웨어는 RISC에서 사용되지 못했으며 아무래도 CPU에서 처리하지 못하는 명령어들을 소프트웨어에서 처리하다보니 소프트웨어 개발기간이 오래걸리거나 호환성이 떨어지고 특수 목적(임베디드)용으로만 사용되게 되었다.

하지만 모바일 시대인 만큼 집에서 컴퓨터를 사용하는 시대는 지나갔고 스마트폰을 통해 모든 것을 해결하는 시대이므로 가장 중요한 것이 포터블이 되어 저전력과 빠른 속도에 최적화 되어있는 RISC 방식이 지금의 대세 아키텍쳐라고 할 수 있다. 그리고 가장 대표적인 것이 역시 ARM([오늘의 반도체 용어] What is ARM) 코어 ARM이 어디까지 전설을 이어갈지 궁금하다.

2014년 11월 4일 화요일

[ASIC/SoC] Fan In & Fan Out

이번에는 지난 PAD 포스트에서 언급되었던 ASIC/SoC에서 중요한 Fan In 과 Fan Out에 대하여 포스팅 하도록 하겠다. 방금 문득 생각이 들었는데 본 포스팅에 ASIC과 SoC에 대하여 언급하였는데 반도체 용어들에 대해서는 새로운 프로젝트를 통하여 정리해 보도록하고 이번 포스팅에서 Fan In과 Fan Out만 알아보자.

Fan In과 Fan Out 의 경우 RTL 설계에서는 크게 생각하지 않을 수도 있는 부분 중에 하나인데 이유는 합성 툴이 상황에 따라 적절한 게이트를 선택하기 때문이다. 하지만 어떤 문제가 발생하여 디버깅 할때나 게이트 레벨 Netlist를 확인할 때 필요하기 때문에 알아두도록 하자.

Fan-In은 게이트가 수용할 수 있는 입력의 최대 수 이다. 예를들어 AND 게이트라고 할 경우 2-Input AND 게이트도 있고 5-Input AND 게이트도 있을 수 있다. 일반적으로는 2-Input과 5-Input AND 게이트가 입력 개수만 다르고 똑같은거 아닌가? 라고 생각할 수 도 있는데 실제로는 그렇지 않다. 2개의 입력을 받을 수 있는 AND게이트와 5개의 입력을 받을 수 있는 AND 게이트는 수용할 수 있는 전류, 크기, 캐패시턴스 등 전혀 다른 게이트라고 할 수 있다. 2개의 입력값을 받을 수 있는 AND게이트에 5개의 입력값을 넣게 된다면 타이밍이 느려져 Setup Violation(본 블로그 [반도체기초]Setup Time/Hold Time 참조)이 발생하게 된다. 그렇다면 무조건 많은 Fan-In을 받을 수 있는 게이트를 선정하면 되느냐? 그것도 아니다. 크기가 커지고 빠른 동작으로 인한 노이즈 발생 및 Hold Time Violation 등을 고려해야 한다. 모자른 것보다 많은게 좋지만 그래도 역시 가장 좋은건 적절한 게이트를 선정하는 것이 되겠다. 

Fan-Out은 Fan-In의 반대라고 생각하면 된다. Fan-In에서 설명한 AND 게이트로 말하면 게이트의 Output에 붙일 수 있는 다른 게이트 입력의 최대 수 이다. PAD 포스팅에서도 설명했지만 출력에 얼마나 많은 회로를 붙일 수 있느냐에 따라 다른 게이트를 선택해야 하지만 역시나 적절한 부품이 가장 좋은 선택이 되겠다.  

마지막으로 정리 차원에서 그림으로 나타내 보면 아래와 같다.

설계에 따라 예상되는 Fan-In과 Fan-Out에 개수에 따라서 적절한 부품을 선택하는 것이 엔지니어의 실력이라고 할 수 있겠다.

2014년 11월 3일 월요일

[ASIC/SoC] PAD 에 대하여

ASIC이나 SoC를 진행하다보면 반드시 PAD를 달아야 하는데 사실 PAD는 Pre-sim 뿐만 이니라 Post-sim까지 진행하고 난 뒤에 붙여도 실제 칩 동작에는 큰 영향이 없다. 심지어 Back-End까지 다 진행하고 난 후에 PAD를 붙이는 경우도 있다고 한다. 그런데 이런 PAD를 왜 붙여야 하는지 알아보도록 하자.

PAD란? I/O 회로를 패키지 또는 기판에 연결하기 위해 사용되는 칩 가장 자리에 위치한 금속 영역 또는 입출력 Buffer를 말한다.


가장자리에 검은색 부분이 Pad 이다. 이런 Pad는 이미 모델로 만들어져 삼성전자, 하이닉스, UMC, TSMC 같은 Fab을 통해서 라이브러리로 제공받을 수 있으며 Front-End 엔지니어는 그냥 가져다가 붙이기만 하면된다.

자 그럼 Pad는 Fab에서 제공해주는 라이브러리를 그냥 사용하면 되는데 종류가 굉장히 많다. 내가 설계한 블럭에는 어떤 Pad를 붙여야 하지?
다음 사항을 고려해서 선택해야 한다.
Current, Delay, Area, Port direction, Slew rate, Noise, Drive strength 정도를 설계한 블럭과 같이 고려하여 선택하여야 한다.

Current는 Pad를 통해 연결되는 회로가 얼마나 많은 Load를 필요로 하는가에 달려 있다. Fan Out이라고 생각해도 되는데 Fan In과 Fan Out에 관해서는 다음 포스팅에서 다루도록 하고 Pad를 선택할 때 무조건 높은 Current로 Pad를 선정하게 되면 뒤에 Load가 적을 경우 빠른 동작으로 인해 신호에 Overshoot가 발생하여 노이즈가 발생하게 된다. 이 문제는 나아가서 EMC 방사 노이즈로 큰 문제가 될 수 도 있다. 너무 낮은 Current Pad를 선택하게되면 많은 Load가 걸렸을 때 Pad가 타거나 신호 동작이 느려져 원하는 타이밍에 동작하지 않게 된다. Current가 곧 Drive strength라고도 볼 수 있으며 이것만으로도 Delay, Slew rate, Noise 등이 관련되어 있다는 것을 알 수 있으므로 선택시 많은 고민을 해야 한다.

Port direction은 Pad의 경우 input, output, bidirection 있는데 설계한 블럭에 맞도록 선택해 주어야 하며 Bidirection의 경우 3-state buffer로 설계하여 정확한 동작이 되도록 회로를 추가해야 하니 참고 하도록 하자.



Area는 같은 스펙의 Pad 처럼 보이는 Pad Limit와 Core Limit의 차이가 있다. Pad Limit 는 Core 크기 보다 Pad의 개수가 더 많아 Pad의 개수로 Chip의 크기가 결정될 경우 Pad Limit를 사용하며 반대로 Core의 크기가 크고 Pad개수가 적으면 Chip의 크기가 Core의 크기로 결정되므로 Core Limit Pad를 선택하여 사용하면 된다. 정리하면 Core Limit pad는 fat and shorter로 설계되며 Pad Limit pad는 long and narrow로 설계된다.

이외에도 노이즈를 제거하기 위한 슈미트 트리거(Schmitt trigger) 회로를 추가하거나 본 블로그에도 한번 포스팅했던 [반도체기초] 풀어[Pull-Up) 풀다운(Pull-Down) 저항 및 Hi-Z 도 옵션으로 Pad에 추가 할 수 있도록 설계되어 있다. 당연히 이런 부가적인 회로들이 더 Pad에 들어가게되면 Pad가 커지는 단점이 발생하게 된다.

따라서 Pad의 선택은 본인이 설계한 블럭의 입출력 포트들이 어떻게 사용되는지에 따라 부족하지도 않고 과하지도 않게 선택되어야 한다.

P.S. 혹시나 잘못된 부분 지적해주시면 정말 감사드리겠습니다.