20151208

1. Preparing for a Post Moore’s Law World, Prof. Todd Austin (slides)
– C-FAR 연구 센터가 있음. 미래 아키텍쳐를 연구하기 위한 연구소. idle core가 늘어나고 있고, dennard scaling이 끝나가고 있으며, 실리콘의 결함이 늘어나고 있는 문제를 해결하기 위한 것.
– dark silicon, diminishing ILP gain 등의 문제가 있음.
– density scaling이 확실히 떨어지고 있다. (Courtesy david brooks @ havard 자료)
– 요즘 중요한 가치는 가치는 scalability이다. 그런데 technology scaling이 얼마 남지 않았다. 혁신해서 이러한 문제를 해결해야 한다.
– 이를 해결하기 위해 CMP를 개발함. dark silicon and the end of multicore scaling 논문에서 CMP의 scalability에 대해 연구함.
– Dennard scaling. 트랜지스터 크기가 반으로 줄면 2배 더 많은 트랜지스터 넣을 수 있음. 1.4배 빨라지지만 전력 소모량은 그대로임. 이러한 dennard scaling이 끝남. 크기를 줄이는 것이 성능은 높이지만 전력 소모량은 늘어나게 됨 (leakage). 이로 인해 dark silicon이 발생함.
– parallelism, customization을 동시에 고려한다면 dark silicon problem과 Amdahl’s Law로 인한 한계를 극복할 수 있다. 하지만 이러한 설계는 매우 비용이 많이 든다. 설계에 드는 비용을 극단적으로 줄일 수 있어야 한다.
– r/K selection 이론이 있다. unstable한 환경에서는 여러 자식을 낳고, stable한 환경에서는 소수의 자식을 낳는다. 누구나 설계할 수 있는 환경을 제공해야 한다.
– SW 환경에서는 기본적인 것들을 open source로 만들고 혁신하는 것에 집중하는데, HW에서는 모두 proprietary로 구성한다. Open source를 사용할 필요가 있다.
– 하드웨어 비용 절감을 위해 modularization을 적용할 필요가 있다.
– instruction은 1950년대의 개념이다. 이를 뛰어넘어 SW를 더 효율적이고 효과적으로 표현하고 연산하는 것에 대한 연구가 필요하다.


2. More is Less: Improving the Energy Efficiency of Data Movement via Opportunistic Use of Sparse Codes
– data movement에 필요한 에너지가 전체 에너지 소모에 큰 부분을 차지한다.
– DDR4에서는 0을 전송할 때에만 에너지 소모가 발생한다. 내부 구조 상 0일 때에만 전류가 흐르기 때문이다.
– sparse representation으로 에너지 소모를 줄일 수 있다. bandwidth가 줄어든다는 문제, static energy의 증가한다는 문제가 있다.
– data bus inversion, 0이 많아서 에너지 소모가 많은 경우에 inverse한 표현을 사용함으로써 에너지 소모를 줄일 수 있다.
– data bus inversion에 sparse code를 사용해 에너지를 많이 소모하는 0을 더 줄일 수 있다.
– 하지만 bandwidth 제약을 준다는 점, 긴 비트열을 코딩하면 bursting이 발생한다는 문제가 있다.
– 이 연구에서는 opportunistic하게 sparse code를 적용해 에너지 소모를 줄이고자 하는 것.
– 8 bit 데이터를 17bit의 0을 최대 3개 포함하는 것으로 바꾼다.
– 한편, LPDDR3는 toggling할 때 에너지를 소모한다는 특징을 갖는다.
– Synopsis design compiler. Cadence NSim을 사용해 실험함.
– 왜 DDR4 디자이너가 0이 더 많은 전력 소모 되도록 만들었나? 하는 질문이 있었음.
– ‘DBI를 실제 시스템에서는 사용하지 않는데 왜 그런가’ 하는 질문이 있었음.


3. Improving DRAM Latency with Dynamic Asymmetric Subarray
– device latency = I/O + Peripheral + Sub-array
– DRAM 내부 subarray 사이에 데이터를 이동하는 구조를 제안하고, 이 사이에 동적으로 이동시킴으로써 성능 향상을 도모한다.
– 핵심은 CHARM은 migration의 오버헤드가 크다는 것인데, 여기서는 적은 오버헤드로 subarray 어디든지 migrate하도록 하겠다는 것이다.
– 그 외에는 잘 이해되지 않았음…


4. Gather-Scatter DRAM: In-DRAM Address Translation to Improve the Spatial Locality of Non-unit Strided Accesses (paper, slides)
– 현재 시스템의 설계는 cache line 단위로 읽고 쓰는 것에 최적화되어 있다. 따라서 non-unit strided access는 낮은 spatial locality를 보이게 된다. 이를 해결하고자 이 논문에서는 Gather-Scatter DRAM을 제안한다. 이 논문에서 제안하는 아이디어는 (non-unit) strided pattern을 갖는 데이터를 하나의 read/write 명령으로 읽고 쓰도록 하겠다는 것이다.
– database는 row store 또는 column store로 저장될 수 있다. row store에서 column을 읽거나, column store에서 row를 읽으면 non-unit strided access가 발생한다. 이러한 strided access는 긴 latency와 불필요한 메모리 대역폭 소모 등의 문제를 일으킨다.
– Figure: motivation ([MICRO’15] Gather-Scatter DRAM: In-DRAM Address Translation to Improve the Spatial Locality of Non-unit Strided Accesses)
GS-DRAM motivation.PNG
GS-DRAM goal
– GS-DRAM을 구현하는 것에는 두 가지 challenge가 있다. 첫 번째 문제는 row store에서 column을 읽는다고 할 때, chip conflict가 발생한다는 것이다. 이 문제는 column-ID based data shuffling을 통해 해결한다 (scatter). 두 번째 문제는 한 개의 rank내의 chip들이 동일한 주소 버스를 공유함으로 인해 addressing의 flexibility가 떨어진다는 점이다. 이는 pattern ID를 도입해 해결한다 (gather).
– Figure: two challenges ([MICRO’15] Gather-Scatter DRAM: In-DRAM Address Translation to Improve the Spatial Locality of Non-unit Strided Accesses)
GS-DRAM shuffling
GS-DRAM translation logic
– GS-DRAM을 도입함으로써 필요한 시스템 수준의 변화에 대해 논의하고 있음. 캐시, ISA, 시스템 소프트웨어에서 필요한 변화에 대해 이야기하고 있다.
– 캐시에서는 non-zero pattern으로 가져온 캐시 라인이 연속적이지 못한 물리 주소를 갖고 있다는 문제가 있다. 그리고 같은 캐시 라인이 서로 다른 pattern으로 참조 가능하다는 문제가 있다. non-zero pattern으로 가져온 캐시 라인을 구분하기 위해 cache tag에 pattern ID를 추가한다. 그리고 같은 캐시 라인이 서로 다른 pattern으로 참조 가능하다는 문제를 해결하기 위해 메모리 시스템의 작동 방식을 변경한다. ISA에서는 pattload, pattstore라는 명령어를 추가해 특정 pattern ID를 읽고 쓸 수 있는 인터페이스를 추가한다. 시스템 소프트웨어 수준에서는 pattern을 적용할 수 있는 메모리 할당 명령어인 pattmalloc을 추가한다.
– Figure: a system with GS-DRAM ([MICRO’15] Gather-Scatter DRAM: In-DRAM Address Translation to Improve the Spatial Locality of Non-unit Strided Accesses)
a system with GS-DRAM
– gem5 시뮬레이터를 사용해 실험했으며, McPAT + DRAMPower로 전력 소모량 실험함.
– ‘이 방법이 한 개의 칩만 있는 DRAM에서도 적용 가능한가?’ 하는 질문이 있었음. 이 방법을 더 낮은 레벨에도 적용할 수 있을 것이라 본다고 함. MAT, bank 레벨에서도 적용할 수 있을 것.
– protection mechanism에 대한 질문이 있었으나, 언제 발생하는지, 왜 질문했는지 이해하지 못했음.
– main idea, goal, 각 메커니즘이 수행하는 역할은 이해하겠음. 하지만 왜 column-ID based shuffling이 chip conflict를 줄여주는지, 왜 pattern ID based column address 생성이 그런 접근 패턴을 만들어낼 수 있는지는 이해하기 어려움. 이렇게 했더니 잘 되었다(?) 정도의 이해밖에 안 됨.
– column-ID based shuffling에 대해서는 준기 형께서 설명해주심. 원래 chip conflict가 발생했을 때에는 서로 다른 column-ID가 하나의 chip에 매핑됨. 하지만 column-ID based shuffling을 적용하면, column ID를 기준으로 shuffling하므로 서로 다른 chip에 매핑될 수 있음.


5. DynaMOS: Dynamic Schedule Migration for Heterogeneous Cores (paper, slides)
– OoO의 instruction reordering으로 2배의 성능을 낼 수 있다. 하지만 reordering은 6배의 에너지를 소모한다.
– 그런데 대부분의 경우 프로그램이 반복하기 때문에, 불필요한 reordering이 발생한다 (redundancy).
– fine-grained hetereogeneous core에 대한 연구가 있었음 (Composite
cores: Pushing heterogeneity into a core).
– OoO의 reordering을 기록해두고, in-order core가 에너지 소모 없이 최적의 instruction sequence를 실행하도록 할 수 있다.
– astar의 경우 instruction predictability가 떨어지기 때문에, 이러한 기법의 성능 향상 가능성이 떨어진다.
– DynaMOS는 trace를 기록해두고, 언제 instruction이 반복되는지 탐지한다.
– OinO mode에 대한 내용은 자세히 이해하지 못함… 어떻게 해서 OoO와 in-order core 사이의 transitionㅇ이 가능한지 설명하는 것 같았음 (correctness)


6. Long Term Parking: Criticality-aware Resource Allocation in OOO Processors
– OoO processor는 자원을 너무 많이 할당한다는 문제가 있다.
– LTP는 오랜 시간 걸리는 명령에 depend하는 명령을 다른 곳에 둠으로써, 자원 낭비를 줄이는 것. load에 depend하는 명령어들이 대기하려면 LSQ, IQ 등의 자원을 사용하게 됨. 이를 줄여 명령어 stall을 없애고자 하는 것.
– LTP를 사용하면 register file size, LSQ 크기를 줄여도 성능 저하 일으키지 않을 수 있다.


7. The Inner Most Loop Iteration counter: a new dimension in branch history
– 지난 25년간 branch predictor는 local / global history를 이용함.
– branch predictor에 대한 발표인데, 무슨 내용인지 잘 모르겠다.


8. GPU Register File Virtualization
– GPU에서 빠른 context switch 위해 큰 register file을 사용하고 있음. 하지만 그 크기가 너무 커서 전력 소모가 심함. 그런데 실제로 register liveness 확인해보니 모두 live한 것은 아님. 일부만 live하다.
– 짧게 live한 레지스터에 대해서는 register file을 공유(register file virtualization)함으로써 register file의 크기를 줄일 수 있다.


9. WarpPool: Sharing Requests with Inter-Warp Coalescing for Throughput Processors
– GPU가 높은 성능을 내려면 memory system이 충분히 지원해줘야 하는데, 현재의 시스템에서는 L1 throughput이 충분하지 않다. 이를 해결하기 위한 방법으로 inter-warp locality를 활용하자고 제안한다. warp 안에서는 locality가 보이지 않을 수 있어도, warp 간에 locality가 있을 수 있다. 이를 활용하면 L1 throughput을 높일 수 있다.


10. Ultra-Low Power Render-Based Collision Detection for CPU/GPU Systems
– mobile device 시장이 크게 성장하고 있음. 사용자는 현실적인 그래픽에 대한 요구를 하고 있으나, 배터리는 충분하지 않음. GFXBench 3.0을 실행하는 경우에 4시간 정도밖에 견디지 못함.
– collision detection은 서로 다른 두 물체의 충돌을 탐지하는 메커니즘.
– collision detection에서 bounding volume은 두 가지 방식으로 정의할 수 있다. cuboid와 convex hull이 있다. cuboid는 정확도와 비용 모두 낮다. convex hull은 정확도는 조금 더 높으나 비용이 매우 높다. 여기서 적용하고자 하는 것은 image-based collision detection이다. CD를 pixel granularity로 하고자 하는 것이다.
– 물체들을 평면에 project한 다음, rasterize한다. 그리고 깊이로 sorting하여 충돌을 탐지한다.


11. Execution Time Prediction for Energy-Efficient Hardware Accelerators
– interactive system은 사용자에게 빠른 시간 안에 응답해야 함. 그리고 요구 시간보다 빠르게 응답하는 것은 불필요하다. interactive computer system에서 요구 시간을 예측하여 DVFS하고자 함. deadline을 예측할 수 있다면 DVFS를 사용해 낮은 frequency로 실행할 수 있다.
– 실제로 실험해본 결과, 많은 job이 deadline 이전에 끝나는 것을 볼 수 있었다. 하지만 execution time에 변동이 있다는 어려운 점이 있었다.
– history-based execution time predictor인 PID controller를 사용했을 때, 잘 따라가는 모습을 보이지만 시간 상 delay가 있다.
– 이 연구에서는 job이 끝나는 시간을 정확히 예측하기 위해, job input data를 사용한다. input이 statue machine의 상태 변화를 일으킨다고 가정하고, 각 상태가 일정 시간만큼 유지된다고 가정한다. 상태 전이를 기준으로 deadline을 예측한다.


12. Border Control: Sandboxing Accelerators (paper, slides)
– Dennard scaling이 끝남에 따라, accelerator를 사용해 성능 향상을 하고자 하는 시도가 늘어나고 있다. Programmability와 performance 향상을 위해 accelerator를 시스템과 통합하고자 하는 시도가 늘어나고 있다 (Microsoft’s Xbox One, AMD Kaveri, ARM ACP, IBM CAPI 등). 하지만 이렇게 메모리 주소 공간을 accelerator와 공유하는 것은 시스템에 위협이 될 수 있다. accelerator가 시스템의 중요 정보를 유출할 수도 있으며, crash를 일으킬 수도 있다. Trusted accelerator만 사용하면 문제가 없을 것이지만, third-party accelerator를 사용하게 되는 상황에서는 이러한 문제가 심각해질 수 있다.
– Accelerator를 안전하게 하게 하려는 시도, accelerator의 성능을 높이려는 시도는 많이 있었다. 하지만 두 가지 목표를 모두 달성한 것은 지금까지 없었다. IOMMU, CAPI는 주소 변환에 항상 trusted hardware interface를 사용하므로 안전성은 보장할 수 있으나, TLB를 사용하지 못해 성능이 떨어진다. 반면에, 높은 성능을 위해 TLB와 cache를 사용하게 되면 accelerator가 IOMMU를 우회하여 물리 메모리에 직접 접근할 수 있게 된다. 이는 보안 상의 위협을 일으킬 수 있다. Border Control에서는 accelerator가 TLB와 cache를 사용할 수 있게 함과 동시에 physical memory의 보안성을 높이고자 하는 시도이다.
– Figure: Weakness of conventional systems ([MICRO’15] Border Control: Sandboxing Accelerators)
Border Control full IOMMU.PNG
Border Control bypassable IOMMU.PNG
Border Control bypassable IOMMU attacked.PNG
– 이를 해결하고자 Border Control을 도입한다. Border Control은 protection table과 border control cache를 갖는다. Border Control은 초기화되는 시점에서 accelerator에 메모리에 대한 아무런 권한도 주지 않는다. 그리고 IOMMU가 accelerator를 대신하여 주소 변환을 할 때, 해당하는 물리 주소를 Border Control에 주소 요구를 알려서 해당 주소에 대한 접근만 가능하도록 한다 (protection table에 권한 업데이트 발생). Accelerator 하나 당 한 개의 protection table이 필요하다. 그리고 최근에 사용된 protection table entry를 border control cache에 캐싱한다 (border control이 critical path에 있음). 이렇게 하면 메모리에 대한 부정한 접근이 발생하는 것을 방어할 수 있다.
– Figure: Overview of Border Control ([MICRO’15] Border Control: Sandboxing Accelerators)
Border Control.PNG
– Border Control은 여러 개의 프로세스가 한 개의 accelerator를 공유하는 것을 허용한다. 이 때, Border Control은 각각의 프로세스의 접근 권한을 보지 않고 통합하여 (union) 확인한다. 이러한 선택이 보안성을 떨어뜨리는 것처럼 보일 수 있으나, Border Control의 본래 목적이 accelerator를 시스템에서 sandboxing하는 것이므로 타당하다. 프로세스 사이 간섭의 위험성은 사용자가 해결해야 하는 문제이다.
– gem5-gpu를 사용해 실험함. Rodinia benchmark를 사용함. baseline은 빠르지만 안전하지 않은 bypassable IOMMU를 사용하는 것을 사용해 비교함.
– 논문에서 “Border Control FAQ” section을 두어 설명한 것이 인상적이었다. 전반적으로 시스템 설계 공간에 대한 옵션을 보여주면서도, 왜 이러한 설계가 타당한지 잘 설명해주었다.
– 논문 및 발표 자료에서 그림이 깔끔하고 직관적이었다. 발표 자체도 군더더기 없이 깔끔했음.
– 주소 변환 및 메모리 보호 기법에 대해 찾아볼 때에 이 논문을 기준으로 찾아보면 될 것 같음.


1. [MICRO’15] Neural Acceleration for GPU Throughput Processors 읽기 (paper, slides)
– GPU가 어플리케이션 가속의 목적으로 쓰이곤 한다. 사물 인식, 게임, 데이터 분석, 날씨 예측, 멀티미디어 등에 쓰임. 이러한 어플리케이션들은 approximate해도 괜찮다는 특징이 있다. Approximation을 사용하면 GPU 성능과 효율을 높일 수 있다는 장점이 있다. Approximation 기법들 중에서 neural approximation이 좋은 성능을 낸다. GPU에 neural approximation을 적용해본 연구는 없었고, GPU에 neural approximation을 적용하고 성능 향상 가능성을 보고자 하는 것이 이 연구이다. 이 논문에서는 NGPU를 제안하며, NGPU를 사용하면 2.4배의 속도 향상과 2.8배의 에너지 절감을 이룰 수 있다 (10% quality 저하 이내에서).
NGPU approximate computing motivation.PNG

– CMOS scaling으로 얻을 수 있는 이득은 줄어들고 있음. 이를 해결하기 위한 방법으로 acceleration과 approximation을 적용할 수 있다. 가속기 중에서는 GPU가 인기를 끌고 있음. GPU는 프로그래밍 모델이 있다는 점과 성능 우수성 덕분에 널리 쓰이고 있음. 이러한 GPU에서 쓰이는 어플리케이션의 특징은 approximate해도 된다는 것이다. Approximation 기법 중에서 neural acceleration이 괜찮은 성능을 보인다. Neural acceleration은 프로그램 segment를 neural network로 변환하는 neural transformation에 의존한다. 확인해본 결과, CUDA 어플리케이션들이 평균적으로 56%의 실행 시간이 approximable하다.
NGPU approximable region.PNG
– 한편, 왜 SW가 아닌 HW로 구현하느냐? Neural approximable한 영역을 neural approximation 코드로 변경해서 실행할 수는 있음. 이 경우에는 성능 저하가 발생한다. 명령어를 처리하는 부분과 메모리 접근 과정, sigmoid 함수에서 오버헤드가 발생한다.
– 왜 CPU neural accelerator를 사용하지 않느냐? CPU와 GPU의 특성이 다르고, CPU accleration 방식을 그대로 GPU에 적용하면 area overhead가 심하다.
– GPU를 위한 neural transformation을 고안함. 프로그래머가 approximable region임을 표시할 수 있도록 pragma를 사용하도록 함. 그리고 compilation workflow는 네 단계로 이루어짐. 1) input/output identification, 2) code observation, 3) topology selection and training, 4) code generation. 1) input/output identification 단계에서는 approximable region의 입출력이 무엇인지 compiler의 언어 분석 기법을 사용해 확인함. 2) code observation 단계에서는 입력의 변화에 따라 출력이 어떻게 바뀌는지 확인함. 이를 바로 다음 단계에서 training set과 test set으로 사용함. 3) topology selection and training 단계에서는 approximable region을 표현할 수 있는 multilayer perceptron을 구성함. input과 output은 정해져 있으니, inner layer의 neuron 수를 결정해야 함. 탐색 공간을 줄이기 위해 어느 정도 제약을 둔다. Backpropagation 기법을 활용해 MLP를 찾음. 다음으로 해당 MLP에 적합한 code를 생성한다.
– 이 때 생성한 코드들이 GPU에 neural network를 구성하도록 한다. 이를 위해 GPU ISA에 수정을 가해 세 가지 명령어를 추가한다. 데이터를 주고 받는 명령어 하나씩, 그리고 neural network를 구성하는 명령어 하나이다.
– Neural accelerator를 붙인 streaming multiprocessor의 구조는 아래와 같음.
NGPU SM pipeline.PNG
– Weight FIFO는 neural network의 weight을 저장하기 위한 것. Input, output FIFO는 neural network의 입출력을 저장. Sigmoid unit은 lookup table로 구성된 sigmoid 함수. Acc Reg는 accumulation을 위한 레지스터. Controller는 neural network의 실행을 조작하는 것을 담당한다.
– 한편, approximation level을 조작하기 위한 knob을 제공한다. Neural network를 사용한 approximation이 적게 호출될수록 더 높은 퀄리티를 내지만, 효율은 떨어진다.
– GPU에 대한 배경지식이 부족해 몇 가지 설명을 이해하기 힘들었음. 이 블로그에서 잘 설명해서 어느 정도는 이해할 수 있었음.
– Related work section에서 approximate computing과 관련된 논문들을 소개하고 있으므로, 관심이 있다면 읽어보면 좋을 듯 함.
– GPU 어플리케이션이 approximable한 특성을 갖는다는 것을 확인하고, neural network를 사용해 GPU를 가속했다는 점에서 신선함. 그리고 GPU 내부 구조 변경을 어떻게 할 것인지, ISA는 어떻게 바뀌어야 하는지 등을 확인했다는 점에서 유의미함. 하지만 어떻게 보면 MICRO’12에 나온 것을 GPU에 적용한 것으로 볼 수도 있음. 그리고 neural network의 training이 현실적으로 적용 가능한지 의문스러움. 프로그래머가 approximable region을 정해준다는 점도 깔끔해보이지는 않음. 현재로서는 프로그래머가 approximable region을 정해주는 것이 맞겠지만, 프로그래머에게 너무 많은 책임을 지우는 것이 아닌가 싶기도 함. Critical한 곳이 프로그래머의 실수로 approximable region으로 지정될 가능성도 있기 때문이다.


14. Neuromorphic Accelerators: A Comparison Between Neuroscience and Machine-Learning Approaches (paper)
– Neural network가 활발하게 쓰이고 있음. 더불어 neural network를 위한 가속기도 주목받고 있음. Neural network에는 크게 두 가지 연구 흐름이 있는데, machine learning과 neuroscience가 있음. 그리고 이 두 종류의 neural network는 서로 다른 특징을 갖는다. 이 연구에서는 각각을 가속기로 구현했을 때 어떤 장단점을 갖는지 확인함.
– Machine learning 분야에서의 neural network에 해당하는 것은 deep neural network(DNN), convolutional neural network(CNN), multi-layer perceptron(MP)등이다. Neuroscience 분야에서의 neural network는 machine learning에서의 neural network와 달리, 실제 생물체에서의 neuron을 emulate한다. IBM의 TrueNorth, Qualcomm의 Zeroth 등이 여기에 속한다. Neuroscience-inspired neural network는 spike를 사용해 정보를 유지하므로, 공간과 에너지 절약이 가능하다. 그리고 생체에 기반한 학습 기법인 spike-timing dependent plasticity(STDP)를 사용하므로, 지속적인 학습이 가능하다.
– 이 논문에서는 neuroscience의 neural network가 machine-learning의 neural network보다 더 좋은 성능을 내는지, 가속기로 구현했을 때 비용이 더 많이 드는지, 어떤 경우에 무엇을 사용하는 것이 좋은지에 대해 연구함.
– 결론은 다음과 같음. 동일한 인식 작업이 주어졌을 때, SNN+STDP의 정확도가 MLP+BP의 성능보다 낮음. 이는 STDP의 학습 메커니즘이 BP보다 좋지 않기 때문이다. Fully expand하면 SNN+STDP가 MLP+BP보다 더 저렴하지만, 합리적인 비용 내에서는 MLP+BP가 더 저렴하다. 실제로 지속적인 online learning을 요구하는 경우는 드물지만, 만약에 그런 경우라면 SNN+STDP를 사용하는 것이 좋다.
– BP는 neural network의 출력에 따라 synapse weight을 조절해 그 정확도를 증가시키는 학습 기법이라면, STDP는 입력 spike와 출력 spike의 연관성에 따라 적합한 network를 구성하는 방법.


15. Enabling Interposer-based Disintegration of Multi-core Processors (paper)
– Silicon interposer를 사용하면 여러 개의 stack을 한 package안에 넣을 수 있음. Silicon interposer를 사용하고자 하는 시도는 늘어나고 있으며, 이렇게 들어온 interposer를 어떻게 잘 써볼 것인가에 대해 연구하는 논문이다. 이 논문에서는 interposer를 사용해 어떻게 CPU chip을 disintegrate하여 비용 절감을 이룰 것인지 이야기한다. 이렇게 disintegration했을 때 추가로 communication overhead가 발생하게 된다. 이러한 performance-cost trade-off를 보이고, 새로운 NoC 구조를 제안한다.
– Chip의 생산 비용을 줄이려면 칩의 크기를 줄이면 됨. 같은 크기의 웨이퍼에서 더 높은 수율을 얻을 수 있다. 반면에 이렇게 크기가 작은 칩은 성능 또한 낮다는 문제가 있다. 이렇게 분할한 칩을 다시 연결하는 것에는 multi-socket, multi-chip modules, silicon interposer, 3D stacking의 대안이 있다. multi-socket, multi-chip module은 느리고, 3D stacking은 비용 문제가 있다. 따라서 silicon interposer가 가장 현실적인 대안이다.
– 한편 interposer를 넣는 것은 비용 부담이 될 수 있다. Passive interposer는 저렴하지만, flexible한 routing은 제공하지 못한다는 단점이 있다. Active interposer는 flexible한 routing을 제공하지만 수율이 낮아 비용이 높다. 이러한 trade-off에 대해 분석하고, minimally active interposer를 사용하면 합리적인 비용 수준에서 moderate routing flexibility를 제공함을 주장한다.
– 그리고 communication cost를 줄이고자 misaligned topology와 ButterDonut topology를 제안한다. 기존의 aligned topology에서는 chip-to-chip 메시지가 두 개 이상 발생하면 직렬화되어 성능이 떨어짐. misaligned topology는 라우터를 공유하는 구조이기 때문에, chip-to-chip 메시지가 두 개 이상 발생하더라도 처리 가능하다.
– 기존의 Double Butterfly, Folded Torus가 왜 좋은지, 두 가지를 어떻게 결합해 ButterDonut을 만들었는지는 이해되지 않음. 선행 연구이므로 논문을 읽는다면 이해할 수 있을 듯. NoC에 대한 background가 없는 것이 문제인 듯 하다.

Advertisements
Tagged with: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
Posted in 1) Memo

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

누적 방문자 수
  • 103,902 hits
%d bloggers like this: