Embedded Computing and DSP

Embedded System * Embedded System * Application Specific * 사용 용도가 명확하고, 유저가 이를 바꿀 이유도 없음 * Reactive * Efficient * Specification * 가성비 추구 * Binary Compatibility 필요 x * General Processor와는 다르게 성능은 필요한 정도만 있으면 됨. 가격이 경쟁력 * 벤치마크 방법도 당연히 다름. * Features * Arithmatic / Datapath * Mem Arch * Add mode * Opt control * Special Purpose Peripherals * Arithmatic…

From Processor Customizations To HLS

HLS * 성능 올리려면 이제 비용이 너무 커짐. 다이 사이즈부터 전력까지. * 그래서 가성비가 중요해짐 * 임베디드에서는 바이너리 컴패티빌리티도 안 중요 * 걍 회로를 합성하자 * ISE ( Instruction Set Extension ) * 자주 쓰이는 복잡한 명령어 걍 하나의 Ad-hoc 명령어로 만들기 * HW 특징을 활용하면 cycle 수 단축 가능. * HW 특징 * Spatial Computation * 간단하게 패럴리즘 구현 가능 * No…

Statical ILP

VLIW & EPIC * compile time에 패럴리즘을 넣어봅시다 * 런타임에 패럴리즘 하는 건 비싸거든요 * 그리고 만들기 어렵기도 하고, 스케쥴링 로직에 의해서도 제한이 있음. * Scheduling Complexity 도 O(R^2)로 비싸요 * VLIW의 특징들 * cycles == instructions * latency dependent * Area와 Timing 에서 이득 * 단점: Binary incompatibility, code bloating Code Bloating Problem * 코드의 크기가 커지는 건…

Dynamical ILP

ILP(Instruction Level Parallelism) * Moore's Law가 붕괴되면서 필연적으로 나올 수 밖에 없는 개념 * Pipelining, Superscalar, VLIW and EPIC Pipelining * Simple Pipelining * 기본적인 파이프라이닝. * Control Hazard와 Data Hazard 존재 * Forwarding / Stalling * Rigid Sequencing. WB만 하고싶어도 MEM 사이클에 있긴 해야함 * 더 발전하기 위해 Dynamic Scheduling 도입 * Out of Order로 처리하자! Dynamically Scheduled…

xv6 디버깅

xv6 GDB로 디버깅하기 xv6은 QEMU 아래서 돌아간다. 그래서 기존 유저레벨 프로그램들과는 다르게 QEMU머신에 원격으로 접속해서 디버깅을 진행한다. 교수님이 공부하시던 옛날에는 VM 이런 거 없이 베어메탈 머신에 OS 깔아서 랜선 꼽아 디버깅을 진행했다고 한다. 얼마나 좋아진 세상인가 ㅋㅋ 기본 설정 디버깅 옵션 설정해 xv6 컴파일 이 옵션 사용해 xv6 컴파일 $ make…

Garbage Collection

Garbage collection이 왜 문제? concurrent한 데이터 구조는 당연히 여러 쓰레드가 접근하고 있습니다. 그래서 당연히 이 모두가 사용을 마쳤을 때 free를 해주어야 하겠죠? 근데 그 타이밍 잡기가 어렵습니다. 그래서 나온 게 Hazard Pointer와 Epoch-based Reclamination입니다. Hazard Pointer 가장 단순한 방식입니다. 포인터 사용하기 전 protect해 주고, 다 쓰면 unprotect해 줍니다. 그리고 collect를…

Non Blocking Linked List

Harris Linked List 어느 블로그에서 본 글 source 저 소스에 따르면 Concurrency 관련 논문들을 읽지 않는 이상 이게 뭔지 보통 모를 거래요. 왜냐? 가장 빠르고 단순한 Non blocking Linked list이지만, 실용적이지는 않다네요. Harris 링크드리스트에서 head와 tail 노드는 항상 존재합니다. 지워지지 않아요. 이 소스의 저자는 해리스 링크드리스트가 중국 직소 퍼즐(본문의…

Lock Free

Lock Free? Lock free가 진짜 락이 없다는 뜻은 아닙니다. Lock free는 하나의 작업은 꼭 완료가 된다는 조건이래요. (one of the ongoing operation is completed someday) 비슷한 조건으로 * Obstruction free : 하나의 쓰레드만 실행 될 때 그 작업은 무조건 완료됨 * Wait free : 모든 작업이 꼭 완료됨 가 있습니다. 하나의 작업이 꼭 완료가…