명령어 인코딩¶
1. 포맷 개요¶
pccx v002 의 모든 명령어는 64 bit 고정 길이 이며, 다음과 같은 최상위 구조를 갖습니다.
비트 |
필드 |
설명 |
|---|---|---|
|
opcode |
4-bit. 최대 16 종, 현재 5 종 사용. |
|
instruction body |
60-bit. 오피코드별 세부 레이아웃 (§ 3). |
2. 오피코드 테이블¶
Opcode |
Mnemonic |
기능 |
주요 필드 |
|---|---|---|---|
|
GEMV |
행렬 × 벡터 연산 |
dest_reg, src_addr, flags, shape_ptr, size_ptr, parallel_lane |
|
GEMM |
행렬 × 행렬 연산 |
GEMV 와 동일 레이아웃 |
|
MEMCPY |
디바이스 간 데이터 이동 |
from_device, to_device, dest_addr, src_addr, aux_addr, shape_ptr, async |
|
MEMSET |
Constant Cache 값 설정 |
dest_cache, dest_addr, a/b/c_value |
|
CVO |
Complex Vector Op (SFU) |
cvo_func, src_addr, dst_addr, length, flags, async |
|
reserved |
— |
향후 확장 |
3. 디코딩 플로우¶
명령어는 AXI-Lite 의 CMD_IN FIFO 로 호스트가 write 하며, 다음 경로로 디코딩됩니다.
flowchart TB
CMD[[AXI-Lite<br/>CMD_IN FIFO]] --> DEC["Decoder<br/>(ctrl_npu_decode)<br/>opcode[63:60] 분기"]
DEC -->|제어 μop<br/>메모리 μop<br/>CVO μop| DISP["Dispatcher<br/>(ctrl_dispatcher)"]
GS[[Global Scheduler<br/>의존성 / 해저드 체크]] -.-> DISP
DISP --> GEMM[GEMM ctrl]
DISP --> GEMV[GEMV ctrl]
DISP --> MC[MEMCTRL<br/>ACP / NPU]
DISP --> MS[MEMSET<br/>Constant]
DISP --> CVO[CVO ctrl]
4. μop 분해¶
각 오피코드는 디스패처 내부에서 다음 μop 들로 분해됩니다.
μop 타입 |
구성 요소 |
|---|---|
|
flags (6-bit) + size_ptr_addr (6-bit) + parallel_lane (5-bit) |
|
동일 레이아웃 |
|
data_route (8-bit) + dest_addr + src_addr + shape_ptr + async |
|
dest_cache (2-bit) + dest_addr + a/b/c_value (16-bit × 3) |
|
cvo_func (4-bit) + src_addr + dst_addr + length + flags + async |
5. 메모리 라우팅 인코딩¶
MEMCPY 의 from_device + to_device 조합은 Control Unit 내부에서 8-bit
route enum (data_route_e) 으로 확장됩니다.
Route |
Encoding |
경로 |
|---|---|---|
|
|
호스트 DDR4 → L2 Cache |
|
|
L2 Cache → 호스트 DDR4 |
|
|
L2 → GEMM L1 |
|
|
L2 → GEMV L1 |
|
|
L2 → SFU |
|
|
GEMM 결과 → L2 |
|
|
GEMV 결과 → L2 |
|
|
SFU 결과 → L2 |
6. 포인터 / 파라미터 레지스터¶
ISA 는 6-bit pointer 를 통해 소형 Constant Cache 항목을 참조합니다.
포인터 |
비트폭 |
저장 내용 |
|---|---|---|
|
6-bit |
텐서의 (M, N, K) shape 메타데이터 |
|
6-bit |
타일 크기, 루프 상한 등 |
|
6-bit |
64 엔트리 Constant Cache 인덱스 |
포인터 항목은 MEMSET 명령어로 사전 초기화됩니다. (명령어별 데이터플로우 의 MEMSET 섹션 참조)
7. 어드레스 공간¶
필드 |
비트폭 |
어드레스 공간 |
|---|---|---|
|
17-bit |
128 K 엔트리 (L2 Cache 블록 인덱스 기준) |
|
17-bit |
MEMCPY 의 보조 주소 (예: host DDR 오프셋) |
엔트리 크기는 디바이스 레이어에서 정의되며 (KV260 기준 128-bit word), 17-bit × 16 byte = 2 MB 의 선형 L2 주소 공간을 표현합니다.