쌓인 기록에서 찾기
무엇을 찾으세요?
날짜를 몰라도 됩니다. 제목·Key Point·요약·태그를 한꺼번에 뒤집니다.
검색 범위부터 2026년 9월 17일 (목)까지585건
3건 · "부동소수점"조건 지우기 ×
001▲ 123 · 댓글 3190년대 3D 그래픽 칩을 FPGA로 재현하다작성자가 FPGA에서 1990년대 3dfx Voodoo Graphics를 SystemVerilog로 구현한 zSST를 개발했다.하드웨어 · 시스템 · Recreating Voodoo Graphics and a Late-1990s Gaming PC on an FPGA
90년대 3D 그래픽 칩을 FPGA로 재현하다
Key PointPC 게이밍 역사의 분기점이던 Voodoo 칩의 내부 구조를 재구현한 기술적 성과로, 하드웨어 아키텍처와 고정 파이프라인 설계의 실제 작동 원리를 보여주는 사례다.
핵심 요약
- 작성자가 FPGA에서 1990년대 3dfx Voodoo Graphics를 SystemVerilog로 구현한 zSST를 개발했다.
- z486 CPU와 함께 Xilinx KV260 보드에서 DOS PC 환경을 완성해 Tomb Raider를 원본 3dfx 렌더러로 구동한다.
- zSST는 텍스처 필터링, 미맵, 깊이/알파 테스트, 안개, 블렌딩, 디더링 등 Voodoo의 주요 기능을 지원한다.
- 고정소수점과 부동소수점 두 가지 설정 인터페이스를 모두 지원하며 CPU와 렌더러는 100 MHz로 동작한다.
- 1999년 공개된 Glide 소스 코드와 SST-1 명세서, MAME 등 기존 자료를 참고해 개발했다.
- 원본 Voodoo는 삼각형 래스터화, 텍스처 매핑, 프레임버퍼 연산을 고정 파이프라인으로 처리해 초당 5천만 픽셀을 출력했다.
002▲ 100 · 댓글 321980년대 Intel 8087 칩의 마이크로코드 역공학 프로젝트Intel 8087 부동소수점 코프로세서는 1980년 출시되어 현대 컴퓨터의 부동소수점 표준이 되었으며, IBM PC에 설치되어 연산 속도를 최대 100배 향상시켰다.하드웨어 · 시스템 · Microcode in Intel's 8087 floating-point chip: the scale instruction
1980년대 Intel 8087 칩의 마이크로코드 역공학 프로젝트

Key Point부동소수점 연산의 표준이 된 40년 전 칩의 내부 회로를 물리적으로 역공학하는 과정이 기술사와 아키텍처 이해에 어떻게 기여하는지 보여준다.
핵심 요약
- Intel 8087 부동소수점 코프로세서는 1980년 출시되어 현대 컴퓨터의 부동소수점 표준이 되었으며, IBM PC에 설치되어 연산 속도를 최대 100배 향상시켰다.
- Opcode Collective는 8087의 마이크로코드를 역공학하고 있으며, FSCALE(부동소수점 스케일) 명령어를 분석했다.
- FSCALE은 2의 거듭제곱으로 숫자를 스케일링하는 명령어이며, 곱셈보다 훨씬 빠르게 동작한다.
- FSCALE의 마이크로코드는 140개 이상의 마이크로명령어와 3단계 서브루틴 호출로 구성되어 있으며, 많은 특수 사례를 처리한다.
- 8087의 다이는 마이크로코드 ROM(1648개 마이크로명령어 포함), 마이크로코드 엔진, 16비트 지수부와 64비트 유효숫자부로 구성된 데이터패스를 포함한다.
- 8087은 80비트 부동소수점 숫자를 8개의 스택 레지스터에 저장하며, 각 값에는 유효/특수/영/빈 상태를 나타내는 태그가 붙어있다.
003▲ 116 · 댓글 44Rust 동적 언어 인터프리터, 64비트 값 표현으로 17% 성능 향상Plush 언어 인터프리터의 Value 타입을 Rust 태그 열거형(16바이트)에서 64비트 단일 워드로 변경했다.인프라 · 데브옵스 · Replacing a Rust Enum with a 64-Bit Word Made My Interpreter 17% Faster
Rust 동적 언어 인터프리터, 64비트 값 표현으로 17% 성능 향상

Key Point메모리 구조 최적화만으로 메모리 낭비를 50% 줄이면서 오히려 성능을 높인 저수준 인터프리터 튜닝 기법이 실제로 작동하는 방식을 보여준다.
핵심 요약
- Plush 언어 인터프리터의 Value 타입을 Rust 태그 열거형(16바이트)에서 64비트 단일 워드로 변경했다.
- 메모리 정렬로 인한 낭비를 제거하고 저비트 태깅 기법을 사용해 각 값을 64비트 이내로 압축했다.
- 힙 객체 주소는 8바이트 정렬되어 최하위 3비트가 항상 0이고, 정수는 최하위 2비트를 차용해 태그를 내장했다.
- Fixnum(62비트 정수), Flonum(부동소수점), Immediate(nil, true, false, 함수 ID 등), 두 종류의 포인터를 인코딩한다.
- 문자열 구조 비교와 같은 기능을 위해 포인터 두 종류를 구분해 동등성 비교를 최적화했다.
- 추가 비트 연산이 필요했지만 CPU 캐시 효율과 메모리 대역폭 개선으로 종합 성능이 17% 향상되었다.