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

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