2024년 10월 17일 목요일

Efficient Processing of Deep Neural Network: from Algorithms to Hardware Architectures

Efficient Processing of Deep Neural Network: from Algorithms to Hardware Architectures

"인공지능"이 세상의 모든 기술관련 매체의 지면을 뒤덮고 있다. 반도체 회로 설계와 컴퓨터 구조 분야는 온통 "깊은 신경망(Deep Neural Networks)"의 효율적(저전력!) 구현에 모여있다. 돌이켜보면 20세기말1990년대의 논문은 온통 효율적인 곱셈기와 누산기 설계로 채웠었다. 그때는 디지털 신호처리, 특히 멀티 미디어 코덱이 대상이었다. 신호처리에 특화된 명령이 범용 프로세서에 들어가고 저전력 공정 기술이 발달하자 전용 칩보다 유연한 저전력 CPU 세상이 됐다. 21세기 들어 고속 CPU와 GPU로 톡톡히 재미를 보다가 한계에 다다르자 다시 전용 칩(ASIC)이란다. 무슨 이야기들을 하는지 들여다 보면 결국 곱셈 잘하는 방법, 곱셈 횟수 줄이는 방법이다. 예전과 다른 점이라면 빠른 연산회로 연구에서 연산 횟수 줄이기로, 반복적인 상수 곱셈(DSP 고속 알고리즘의 특징)의 재활용에서 곱셈할 필요 없는 경우 찾기와 메모리 계층적 활용 등이다. 연산회로(Computer Arithmetics)에서 컴퓨터 구조(Computer Architecture)로 추상화 수준이 높아졌다. 어쨌든 다시 반도체 설계가 돌아오니 반갑다. 무엇보다도 강연을 보기 편하다! (음... 다 아는 얘기구먼...) 인공지능과 신경망 역시 한시대를 유행했었으니까...


Computer architecture for deep learning applications/David Brooks/Havard
https://alchem.usc.edu/ceng-seminar/slides/2017/Brooks_USC_April2017.pdf

강연을 들어보면 신경망을 현존 컴퓨터 구조로 구현해 놓으니 곱셈기보다 메모리에서 소모하는 전력이 훨씬 많다고 한다(저전력 곱셈 연산기 회로는 이미 30년전에 끝내놓았으니까!). 신경망 알고리즘을 쪼개 파이프라인 병렬처리 구조를 취하고  전역 메모리 구조보다 지역 메모리를 사용하는 방향으로 가자는 주장이다. 당연한 것을 인공지능에 얹어 현란하게 말하고 있다는 느낌이 든다. 어쨌든 오늘의 신경망 컴퓨팅을 아주 잘 정리하고 있는 강연 두편을 들어보자.

Efficient Processing of Deep Neural Network: from Algorithms to Hardware Architectures #NeurIPS2019

원고: https://eyeriss.mit.edu/2019_neurips_tutorial.pdf

Lecture 15 | Efficient Methods and Hardware for Deep Learning

원고: https://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture15.pdf

깃-허브에 실행 모델들이 있다. (오픈-소스 만세!)

A Scalable Eyeriss Model in SystemC
https://github.com/nietzhuang/Cycle-accurate-Eyeriss-model

Hierarchical Mesh NoC - Eyeriss v2
https://github.com/karthisugumar/CSE240D-Hierarchical_Mesh_NoC-Eyeriss_v2

요즘 학생들은 30년전에 신경망, 병렬처리, 고속 신호처리 알고리즘들이 학계를 휩쓸었던 것을 모르는지 신경망이 마치 새로운 분야로 알고 있다. 그때와 달라진 점이라면 규모가 어마어마하게 커졌고 공부할 수 있는 환경이 무척 풍부해 졌다는 것이다. 7백여개의 입력 층 노드, 수십개의 은익층 노드 그리고 10여개의 출력층 노드를 갖는 필기체 숫자인식 신경망 쯤이야 널리고 널렸다. 불과 30년전에는 석사 논문 쯤으로 등장할 법한 내용들을 고등학교 수준에서 구현하는 것을 보면 말이다. 

  

돌고 도는 것이 패션 뿐 만은 아니다.

-----------------------------------------------------

블로그 관련글: "신경망(뉴럴 네트워크)": "뉴로모픽 컴퓨팅"의 "Hello, World!"
https://fun-teaching-goodkook.blogspot.com/2024/05/hello-world.html



2024년 10월 9일 수요일

오픈-소스 EDA 도구 활용 NSPL 0.5um CMOS 공정 표준-셀 디자인 킷

오픈-소스 EDA 도구 활용 NSPL 0.5um CMOS 공정 표준-셀 디자인 킷

Open-Source Std-Cell based Design Kit for NSPL/ETRI 0.5um CMOS process(2-Poly/3-Metal)

Github repo. link:
https://github.com/GoodKook/ETRI-0.5um-CMOS-MPW-Std-Cell-DK.git



2024년 10월 3일 목요일

"내 칩 MPW" NSPL 0.5um CMOS 공정용 표준-셀 디자인 킷 버젼-F 공개

"내 칩 MPW" NSPL 0.5um CMOS 공정용 표준-셀 디자인 킷 버젼-F 공개

-----------------------------------------------------------------------------
[주의] 이 디자인 킷은 실리콘 검증 되지 않았음. 사용자의 주의를 요함.
(2024년 4차 "내 칩 MPW"에서 실리콘 검증 신청 예정)
-----------------------------------------------------------------------------

"내 칩 MPW"의 NSPL 0.5um CMOS/2P3M 공정용 오픈-소스 표준 셀 디자인 킷(a.k.a 경희대학교 DK)이 버젼 F로 업-데이트 되었다. 표준-셀이 두가지 버젼으로 발행되었다. 두 표준 셀의 특징인 이전 버젼 E 와 같다.[링크

버젼 F는 E 와 비교하면 다음과 같다.

1. 이전에 비하여 수직 트랙 수를 13에서 12로 낮춰 밀집도(density)를 높였다.
2. 두 표준-셀 유형을 교차 사용 할 수 있다.
    a. 표준-셀 I 형: digital_ETRI050_m1f
    b. 표준-셀 II 형: digital_ETRI050_m2f

3. 표준 셀을 두 예제에 적용하여 특징을 보면 다음과 같다.

예제1: FIR_PE

합성통계:
12. Printing statistics.
=== fir_pe ===
   Number of wires:                778
   Number of wire bits:            870
   Number of public wires:         778
   Number of public wire bits:     870
   Number of ports:                  8
   Number of port bits:             25
   Number of memories:               0
   Number of memory bits:            0
   Number of processes:              0
   Number of cells:                850
     AND2X2                         30
     AOI21X1                        74
     AOI22X1                        21
     BUFX2                           9
     DFFPOSX1                       75
     INVX1                         126
     NAND2X1                       145
     NAND3X1                        94
     NOR2X1                         85
     OAI21X1                       175
     OAI22X1                         6
     OR2X2                          10

* 전역 셋과 리셋이 없는 플립-플롭 DFFPOSX1 만 사용됨

P&R 레이아웃: Density = 0.7

1. 표준 셀 유형 I 사용(digital_ETRI050_m1f)

    Area: 867.9x844.2um
    DRC: m2 spacing(36), m2 spacing(16)
    Stacked VIA: 32 / VIA1+VIA2=~3.5k

2. 표준 셀 유형 II 사용(digital_ETRI050_m2f)

    Area: 864.9x841.2um
    DRC: m2 spacing(1)
    Stacked VIA: 3 / VIA1+VIA2=~2k

* 두 유형 모두 면적 차이는 없으나 DRC와 적층 비아의 생성에 큰 차이가 있다. 유형 II 표준-셀은 경우 포트(핀)을 m2 에 지정하기 위해 셀 내부에 VIA1를 사용하고 있다. 자동 배선기가 생성하는 비아의 갯수가 적고 적층 비아도 줄어든다.

* 자동 배선기(Qrouter)의 옵션에 적층 비아 금지를 주었으나 완전히 배제하지는 못한다.

예제2: ALU8

합성통계:
Printing statistics.
=== ALU_wrapper ===
   Number of wires:                945
   Number of wire bits:            991
   Number of public wires:         945
   Number of public wire bits:     991
   Number of ports:                  8
   Number of port bits:             22
   Number of memories:               0
   Number of memory bits:            0
   Number of processes:              0
   Number of cells:                977
     $scopeinfo                      1
     AND2X2                         40
     AOI21X1                        95
     AOI22X1                        37
     BUFX2                           9
     DFFPOSX1                       24
     DFFSR                           3
     INVX1                         139
     MUX2X1                          3
     NAND2X1                       171
     NAND3X1                       145
     NOR2X1                         63
     NOR3X1                          4
     OAI21X1                       219
     OAI22X1                         7
     OR2X2                          17

* 전역 셋과 리셋이 있는 플립-플롭이 단 3개 사용됨

P&R 레이아웃: Density = 0.59

1. 표준 셀 유형 I 사용(digital_ETRI050_m1f)

    자동 배선 실패
    (밀집도를 낮춰 자동 배선할 경우 면적이 넓어져 내칩 MPW 제한을 벗어남)

2. 표준 셀 유형 II 사용(digital_ETRI050_m2f)

    Area: 969.9x952.2um
    LVS: Mismatch Net(2)
    DRC: m2 spacing(5), m3 spacing(2)
    Stacked VIA: 7 / VIA1+VIA2=~3.1k

3. 표준 셀 유형 I에 유형 II의 DFFRS 셀 사용

    Area: 969.9x949.9um
    LVS: Mismatch Net(1)
    DRC: m2 spacing(32), m1 spacing(25)
    Stacked VIA: 35 / VIA1+VIA2=~4.3k

* 자동 배선에 성공 했음에도 불구하고 LVS 검사에서 불일치 네트가 발생된다. LVS는 배치 밀집도를 낮추면 제거할 수 있지만 내칩 MPW의 면적 제한을 벗어날 수 있다. LVS에서 핀 불일치가 아닌 이상 10개 미만의 네트 불일치는 레이아웃 수정이 가능 하다.

* 유형 I 만의 표준 셀로 자동 배선 실패하였으나 전역 리셋 신호를 가진 플립-플롭 DFFSR을 유형 II의 셀로 교체 한 경우에 자동 배선 성공한다. 배선 메탈 층의 갯수가 제한된 공정에서 전역 신호의 사용이 주는 영향은 아주 크다.

* 두 예제 설계의 결과를 보면 표준 셀의 최적화가 주는 영향을 잘 알 수 있다. 동일한 레이아웃 이지만 포트를 m1과 m2에 각각 달리준 경우 자동 배치배선의 결과(DRC, LVS, Stacked VIA)에 큰 차이를 보여준다.

* 디자인 킷에 제공된 표준-셀은 아주 기본적인 것들 만 있다. 다양한 기능의 표준 셀을 만들어 그 효과를 살펴보자. m1과 m2 를 혼용하여 포트(핀) 설정도 가능 하다.

* 디자인 킷에 표준 셀 제작을 위한 기준틀과 스크립트를 포함 시켰놓았다. 고유의 인-하우스 셀 레이아웃을 제작해 보기 바란다.

--------------

디자인 킷 내려받기 깃허브 저장소:
https://github.com/GoodKook/ETRI-0.5um-CMOS-MPW-Std-Cell-DK.git

오픈-소스 내 칩 MPW 튜토리얼:
https://fun-teaching-goodkook.blogspot.com/2024/07/mpw.html

-------------


2024년 9월 30일 월요일

독일의 오픈-소스 도구를 활용한 반도체 설계 인증 교육과정

독일의 오픈-소스 도구를 활용한 반도체 설계 인증 교육과정
Development of Certificate Courses and Status Quo of Digital EDA Course using IHP-SG13G2 (C. Wittke)

OpenROAD 프로젝트 사이트(https://theopenroadproject.org/)에 올라온 최근 소식(2024년 9월 30일 현재)으로 독일에 반도체 설계 인증과정을 수립한다고 합니다. 발표 동영상을 보니 "내 칩 MPW"에서도 해볼만 합니다. 세계는 지금 오픈-소스 반도체 설계의 열풍이 불고 있군요.

Kudos to Christian Wittke (IHP) and Thorsten Knoll (HSRM) on their development of a Digital EDA Course using IHP-SG13G2 and OpenROAD ! See the video of Christian's ORConf 2024 talk at https://www.youtube.com/watch?v=Ozd_yXoExLo


IHP는 독일의 공공 연구소로 오픈-소스 PDK 를 개발한다. 자체 크린 룸을 가지고 있으며 MPW 서비스를 제공한다. 디지털 EDA 인증 과정 개발과 현재까지 진행 상황을 발표하겠다.

IHP와 이곳에서 진행하는 프로젝트에 대해서 설명은 이만하고 우리가 준비하고 있는 반도체 인증 교육 프로그램에 대하여 소개한도록 하겠다. 우리의 목표는 반도체 관련 분야의 진보된 교육과 훈련을 제공하는 것이다.

현재 서유럽(독일, 프랑스, 네델란드, 이태리)은 반도체 산업의 일력 부족이 심각하다. 10만여 인력 부족상태다. 2030년까지 13만 명에 이를 것으로 보인다. 향후 10년내 현재 인력들 마저 셋중 한명은 은퇴할 것이다. 과학기술(STEM)을 공부하는 학생들 중 반도체 분야에 전공하려는 숫자가 아주 적은 형편이다.

이에대한 해결책으로 새로운 인력층을 끌어들여야 한다. 대부분 남성 위주에서 여성, 은퇴후 재취업을 원하거나 이직을 고려중인 사람들이 관심을 유도해보려고 한다. 이 산업 분야의 매력을 보여주는 것도 중요하다. 그리고 실질적인 훈련이 되어야 한다.

[주] 반도체 분야가 한때 열풍이 불었던 시절이 있었다. 너도나도 베릴로그니 VHDL을 배우느라 여념이 없었다. 언어만 배워서 할 수 있는 일이란 없다는 것을 깨닳게 되자 흥미를 잃게됐다. 정보산업이 흥하면서 관심이 소프트웨어 개발에 쏠렸다. 범용 컴퓨터와 그래픽 기반 운영체제 상에서 즉시 결과를 보여주는 프로그래밍 언어는 배우는 재미가 있다. 결국 반도체, 특히 전용 반도체 하드웨어 설계 보다 범용 마이크로 프로세서를 활용한 응용 소프트웨어 개발에 치우쳤다. 범용 CPU가 고속화 되면서 전용 반도체 설계는 관심사에서 멀어졌다. 반도체 산업은 경쟁이 심하여 비밀주의와 폐쇄성이 높아지고 반도체 설계 교육은 기초와 이론에 머무를 뿐이었다. 특히 고가의 설계도구(컴파일러 소프트웨어)들은 장벽을 한층 높여 왔고 너무나 넓은 반도체 관련 학과목 간의 추상화 격차도 흥미를 잃게 만드는데 한몫했다. 간단한 인버터 레이아웃을 그리다가 하드웨어 언어로 넘어가더니 급기야 시스템 반도체 설계로 뛰어넘는 지경이다. 결국 학생들은 반도체 설계에서 멀어져만 갔다. 간단한 구문으로 애니메이션을 구현하는 것과 FPGA에 LED 켜보는 것에 드는 노고에 비해 결과로 얻는 흥미의 차이는 자명하지 않은가. 거대시설 산업이라 할 수 있는 소수의 반도체 공장에 비하면 정보산업 계통의 일자리는 넘치고 쉬워 보였을 것다.

정보통신 기술의 근간은 바로 반도체 였다는 점과 실질적인 반도체 산업을 떠받치는 기술에 주목하자. 시스템(CPU와 메모리로 구성되는 컴퓨터) 설계의 출발은 반도체 전자회로(트랜지스터)부터다.

우리의 강좌는 이들 사이의 간극을 좁힐 수 있는 실질적인 교육과 훈련을 제공하겠다. 연구소 및 기업체와 밀접한 협력 관계를 맺고 이들이 필요로하는 인증된 교육과정을 수립한다. IHP는 실제적인 훈련이 되도록 반도체를 설계하고 제작하는 공정시설(크린 룸)을 자체적으로 갖추고 있다.

[주] "내 칩 MPW"는 실질적 반도체 설계 교육에 요구되는 체계를 갖추고 있다. 현재 오픈 PDK로 SkyWater, GF, SG등은 130나노와 180나노 급 공정으로 4~5중 메탈 공정이다. "내 칩 MPW"서비스는 0.5um 공정이긴 하지만 반도체 설계 교육과 훈련에 공정의 선폭이 중요한 것이 아니다. 첨단 공정은 거대 설비에 맞겨두고 교육은 설계에 집중하자.

IHP는 독일 내 여러 관계사들과 협력하여 10여개의 과정을 갖춘 오픈-소스 기반의 2가지 인증교육과정을 준비하고 있는데 공개된 SG13G2 공정을 기반으로 한다.

https://github.com/IHP-GmbH/IHP-Open-PDK

인증과정 1. 디지털 회로 설계

- 반도체 설계 전반을 아우른다.
- 기초 회로(트랜지스터) 설계부터 행위 기술(RTL 합성)까지 다룬다.
- 시뮬레이션과 검증 기법 포함 한다.
- 제조 가능한 GDS 생성 까지.

[주] "내 칩 MPW"공정 표준-셀 디자인 킷은 합성, 자동배치배선, 사인 오프, GDS 생성과정을 모두 학습 할 수 있도록 준비되었다. SPICE, 베릴로그 HDL/VPI, C++/SystemC, FPGA를 활용한 Co-Simulation/Co-Emulation 체계를 갖추고 있다.

인증과정 2. 아날로그/디지털 혼합 신호 설계

- 전과정을 수행해 볼 수 있는 예제
- 디지털 설계와는 다른 단계 추가

[주] "내 칩 MPW" 공정은 '아날로그' 회로 설계가 준비되어 있다. PDK에 BJT(접합 트랜지스터), NMOS, PMOS, DIODE(다이오드), PCAP(컨덴서), PRES(저항) 등 아날로그 회로 설계용 PCELL 들을 제공한다. 조만간 이에 대한 방법도 튜토리얼로 준비할 예정이다.

디지털 설계과정을 소개한다.

오픈-소스 EDA 환경을 기반의 이 교육과정은 아래와 같은 내용을 포함한다.

- 교육과정은 오픈-소스 자체다.
- 교육 자료는 깃(공개 저장소)기반으로 공개한다.
- 칩을 만들기는 오픈-소스 도구들에 맞춰져 있다.
- OpenROAD 도구들과 IHP의 공개 PDK를 활용한다.
- 향후 공개될 더많은 "EDA 마법"들을 익히는데 도움이 될 것이다.

오픈-소스 도구들을 활용하므로써 누구나 칩을 설계 할 수 있게 한다는 것이 목표다. 현재 교육과정은 아래와 같은 절차를 거쳐 수립됐다.

탑-다운 방식:

- 선행 학습사항과 반도체 설계의 전체 과정
- 핵심 학습 부분 도출
- 학습 교재 구성 (교재의 장 구성, 강의와 자습, 실습 및 연습, 질문)
- 학습과정 시험실시 후 의견 수집 및 수정

정식과정은 5일간 이뤄지며 칩 설계에 필요한 10개의 강의로 구성됐다. 하루 두강좌이며 중간에 점심시간이 있다. 임원들을 위한 이틀짜리 요약강좌도 있다.

2024년 말까지 강좌안이 수립되면 2025년에 시험실시 될 것이다. 의견은 언재든 환영한다.

2025년 2월 10일부터 5일간 실험적으로 실시된다. 5일 강좌가 유용하지만 필요하다면 2일짜리 출장강좌도 가능하다. 시험 강좌에 참여는 무료다. 향후 정식강좌로 자리하면 유료화 한다. 어떤 문의든 환영한다.

시험 실시되는 강좌에 참여하기 바란다. 프랑크프루트 소재 IHP에 방문하여 공정 시설(크린룸)도 견학 할 수 있다. 위이퍼를 직접 들어보면 남다른 느낌이 들 것이다.

오픈-소스 코뮤니티에 감사한다. 그리고 독일의 공공 자금을 받고 진행하는 다른 오픈 PDK 프로젝트 들도 둘러보시라.

[주] 발표 후 질문 RF 반도체 설계에 대한 질문이 있었다. 이에 대해 아진 준비되지 않았다고 한다.