pccx: 병렬 컴퓨트 코어 익스큐터¶
공지: 현재 활발히 개발 중입니다 > pccx는 리소스 제약이 있는 엣지 디바이스에서 트랜스포머 기반 대규모 언어 모델(LLM)을 가속하도록 설계된 확장 가능하고 모듈화된 신경망 처리 장치(NPU) 아키텍처입니다.
1. 아키텍처 개요¶
pccx는 디바이스에 독립적인 하드웨어-소프트웨어 공동 설계 프레임워크입니다. 대상 디바이스의 특정 물리적 리소스 예산에 맞게 코어 아키텍처를 확장하여 엣지 하드웨어의 메모리 대역폭과 컴퓨트 병목 현상을 해결하는 데 집중합니다.
1.1 에코시스템 구조¶
이 프로젝트는 최대한의 이식성과 확장성을 보장하기 위해 세 개의 레이어로 엄격히 분리됩니다:
/architecture(로직 레이어) — 핵심 RTL(레지스터 전송 레벨) 로직과 생성 파라미터를 포함합니다.논리 파이프라인, 명령어 스케줄링, 커스텀 64비트 ISA 를 정의합니다.
이 레이어는 특정 하드웨어 벤더나 인터페이스 프로토콜과 무관합니다.
/device(구현 레이어) — 특정 하드웨어 타겟에 pccx 아키텍처를 매핑합니다.사용 가능한 리소스 예산(예: DSP 수, 로컬 메모리 크기)에 따라 컴퓨트 코어 수, 시스톨릭 어레이 크기, 메모리 포트 너비를 조정합니다.
/driver(소프트웨어 레이어) — C/C++ 하드웨어 추상화 레이어(HAL)와 고수준 API를 제공합니다.명령어 디스패칭과 메모리 매핑을 관리하며, 고수준 AI 모델과 pccx 하드웨어 사이의 브릿지 역할을 합니다.
2. 주요 기술 기능¶
2.1 분리형 데이터플로우 & 커스텀 ISA¶
이 아키텍처는 행렬 및 벡터 연산에 최적화된 커스텀 64비트 ISA 를 활용합니다. 파이프라인 스톨을 제거하고 처리량을 극대화하기 위해 명령어 디코딩과 실행을 분리하는 분리형 데이터플로우 파이프라인을 채택합니다.
2.2 W4A8 동적 정밀도 승격¶
효율성과 정확도를 모두 유지하기 위해:
컴퓨트: 병렬 2D 시스톨릭 어레이가 고밀도 INT4(가중치) × INT8(활성화) 연산을 실행합니다.
승격: 비선형 연산(Softmax, RMSNorm, GeLU) 중에 수치 정밀도를 유지하기 위해 복합 벡터 연산(CVO) 코어 내에서 자동으로 BF16 / FP32로 정밀도를 승격합니다.
2.3 계층적 메모리 구조¶
행렬 코어: 확장 가능한 어레이 크기의 GEMM 연산 전용.
벡터 코어: GEMV 및 요소별 연산을 처리합니다.
공유 인터커넥트: 중재 오버헤드 없이 코어와 로컬 캐시 간의 동시 접근을 허용하는 유연한 데이터 버스 시스템.
3. 문서¶
자세한 기술 사양은 pccx v002 아키텍처 의 다음 섹션에서 확인할 수 있습니다:
명령어 세트 아키텍처 (ISA) — 64비트 커스텀 명령어 세트 사양.
하드웨어 아키텍처 — 하드웨어 아키텍처 및 플로어플랜.
소프트웨어 스택 — pccx 드라이버 및 SDK 문서.
v001 아키텍처는 아카이브: v001 실험적 아키텍처 에 아카이브되어 있습니다.
4. 라이선스¶
이 프로젝트는 Apache License 2.0 하에 라이선스가 부여됩니다. 오픈소스 하드웨어 개발을 위한 안전한 생태계를 보장하면서 아키텍처를 특허 관련 위험으로부터 보호하며 자유로운 사용과 수정을 제공합니다.
5. 에코시스템¶
github.com/hwkim-dev/pccx-FPGA-NPU-LLM-kv260
활성 v002 SystemVerilog 원본 — ISA 패키지, 컨트롤러, 컴퓨트 코어 (GEMM / GEMV / CVO), 메모리 계층. 타겟 디바이스는 Xilinx Kria KV260 (Zynq UltraScale+ ZU5EV).
이 사이트의 모든 v002 RTL 레퍼런스 페이지는 해당 .sv 파일로
직접 연결됩니다.
github.com/hwkim-dev/pccx — 이 사이트를 빌드하는 Sphinx 프로젝트.
hwkim-dev.github.io/hwkim-dev — 블로그, 다른 프로젝트, 소개.