SystemVerilog로 VGA 드라이버 만들기
DE10-Lite FPGA와 SystemVerilog로 VGA 신호 타이밍을 만들고 이미지를 출력하는 과정을 설명합니다. 50MHz 보드 클럭을 25MHz로 나누고, 수평·수직 카운터와 ROM 이미지 데이터를 사용해 화면을 구성하며 알파 합성 방식도 비교합니다.
반도체와 컴퓨터 하드웨어의 설계·성능·제품 변화를 다룹니다.
DE10-Lite FPGA와 SystemVerilog로 VGA 신호 타이밍을 만들고 이미지를 출력하는 과정을 설명합니다. 50MHz 보드 클럭을 25MHz로 나누고, 수평·수직 카운터와 ROM 이미지 데이터를 사용해 화면을 구성하며 알파 합성 방식도 비교합니다.
Intel 문서에 실렸지만 실제 CPU에서는 실행되지 않는 FMA 명령어 vfmaddrnd231pd를 추적합니다. 작성자는 문서의 설명과 실험 결과를 대조해 명령어가 CPU에 구현되지 않았을 가능성을 제기합니다.
GeaStack은 TypeScript와 CSS로 작성한 앱을 여러 운영체제와 ESP32 같은 임베디드 기기에서 실행하는 도구 모음입니다. 중심에는 TypeScript를 C++로 정적으로 컴파일하는 컴파일러가 있으며, 저장소에는 앱 예제와 빌드·플래시 절차가 정리돼 있습니다.
V 언어로 커널을 처음부터 작성한 Unix-like 운영체제 Vinix가 Apple Silicon Mac 지원과 Alpine Linux 바이너리 호환을 내세우며 다시 주목받고 있습니다. 부팅 후 약 100MB RAM과 1GB 디스크만 사용하며, Linux 시스템 콜 인터페이스를 구현해 Chromium, GIMP, Blender 등 기존 패키지를 네이티브로 실행합니다. 현재 M1 GPU 드라이버 개발이 진행 중이며, Wine과 x86 변환 레이어를 기반으로 한 게이밍 지원도 로드맵에 포함되어 있습니다.
멀티스레드 프로그램에서 힙이 병목이 되는 이유를 설명하고, dlmalloc부터 snmalloc까지 주요 메모리 할당자를 스레드 안전성·CAS 경합·NUMA 지역성·파편화 관점에서 비교한 글입니다. 워크로드 유형별로 어떤 할당자를 고르고 무엇을 피해야 하는지 추천표까지 제시합니다. 임베디드·저지연·NUMA 환경에서 할당자 선택을 고민하는 개발자에게 유용한 참고 자료입니다.
NVIDIA가 Rust로 GPU 커널을 네이티브하게 작성해 PTX로 컴파일하는 CUDA Rust를 발표했습니다. SIMT 모델의 cuda-oxide와 Tile 모델의 cutile-rs 두 트랙으로 제공되며, Rust의 소유권·빌림 검사로 GPU 커널의 메모리 안전성을 컴파일 타임에 보장하는 것이 핵심입니다.
atomic exchange 루프로 만든 순진한 스핀락을 acquire/release 메모리 순서, test-and-test-and-set, 지수 백오프 순으로 개선해 4스레드 기준 246ns에서 43.0ns로 5.7배 빠르게 하고 에너지 소비도 64.92J에서 11.92J로 5.4배 줄이는 단계별 최적화 과정을 다룹니다. 캐시 라인 소유권 경쟁과 분기 예측 실패가 성능 저하의 원인임을 perf 수치로 보여주며, 저자는 std::mutex가 여전히 올바른 기본값이라고 강조합니다.
Rust로 작성한 단순한 내적(dot product) 루프가 자동 벡터화되지 않는 이유는 IEEE 754 부동소수점 덧셈이 결합법칙을 만족하지 않아 컴파일러가 연산 순서를 바꿀 수 없기 때문입니다. 저자는 수동 청킹과 Rust 1.98에서 안정화된 algebraic 연산자로 벡터화를 유도하는 과정을 어셈블리와 함께 보여주며, 컴파일러가 생성한 코드가 naive한 intrinsics 구현보다 빠르다는 결과를 확인합니다.