RISC-V 조립 언어
*Open-source Instruction Set 아키텍처는 프로세서 디자인 혁명 * 필수
RISC-V (pronounced "risk-five")는 프로세서 아키텍처 디자인의 패러다임 교대를 나타냅니다, 뛰어난 유연성과 성능을 제공하면서 라이센스 제한을 제거하는 오픈 소스 지침 세트 아키텍처를 제공합니다. UC Berkeley에서 원래 개발 된 RISC-V는 2030을 통해 매년 50 %의 프로젝트 성장으로 빠르게 업계 채택을 얻었으며 현대 임베디드 시스템 개발자, AI / ML 엔지니어 및 컴퓨터 아키텍처 연구원에 대한 근본적인 지식을 가지고 있습니다.
건축 개요
RISC-V는 현대 컴파일러 기술에 최적화된 깨끗한 모듈형 디자인과 고전적인 감소된 명령 세트 컴퓨터(RISC) 원리를 따릅니다. 아키텍처는 32 비트 (RV32) 및 64 비트 (RV64) 구현을 지원하며 특정 응용 프로그램에 대한 옵션 모듈을 통해 확장 할 수있는 기본 명령 세트가 있습니다.
키 디자인 원칙
RISC-V 아키텍처는 다른 프로세서 아키텍처에서 구별하는 몇 가지 기본 설계 원칙을 구현합니다. 명령 세트는 기초 ISA를 위한 일관된 32 비트 지시 길이를 유지하고, 지시 fetch를 간단하게 하고 논리를 해독합니다. 건축은 기억 접근을 위한 분리되는 지시와 더불어 기록기에 단지 일만 arithmetic 가동이 있는 적재 상점 디자인을 채택합니다. 이 접근은 복잡성을 줄이고 성능 예측성을 향상시킵니다.
모듈형 확장 시스템은 특정 응용 프로그램에 필요한 기능을 포함 할 수 있으며 실리콘 영역 및 전력 소비를 줄입니다. 오픈 소스 자연은 라이센스 수수료 및 공급 업체 잠금을 제거, 사용자 정의 프로세서 개발 및 업계 전반에 걸쳐 혁신을 촉진.
회사연혁
RISC-V는 기초 정수 지시 세트에 있는 32의 다목적 기록기 (x0-x31), RV32I 또는 RV64I에서 64 조금 넓은 각 32 조금을 제공합니다. 등록 x0은 0에 hardwired이며, 수정할 수 없으며, 작업에 대한 일정한 0값을 제공하고, 명령 인코딩을 단순화합니다.
등록 설정 및 ABI 이름
| | Register | ABI Name | Description | Calling Convention | | | --- | --- | --- | --- | | | x0 | zero | Hard-wired zero | N/A | | | | x1 | ra | Return address | Caller-saved | | | | x2 | sp | Stack pointer | Callee-saved | | | | x3 | gp | Global pointer | N/A | | | | x4 | tp | Thread pointer | N/A | | | | x5-x7 | t0-t2 | Temporary registers | Caller-saved | | | | x8 | s0/fp | Saved register/Frame pointer | Callee-saved | | | | x9 | s1 | Saved register | Callee-saved | | | | x10-x11 | a0-a1 | Function arguments/return values | Caller-saved | | | | x12-x17 | a2-a7 | Function arguments | Caller-saved | | | | x18-x27 | s2-s11 | Saved registers | Callee-saved | | | | x28-x31 | t3-t6 | Temporary registers | Caller-saved | |
회사 소개
RISC-V 호출 컨벤션은 다른 컴파일러와 라이브러리 간의 호환성을 보장하기 위해 등록자에게 특정 역할을 정의합니다. Argument registers a0-a7는 기능에 첫 번째 8 개의 인수를 전달합니다. 추가 인수는 스택에 전달됩니다. 반환 값 사용 a0-a1, a0 유지 기본 반환 값 및 a1 에 사용되는 64 비트 반환 RV32.
임시 등록 t0-t6는 계산을 위한 찰상 공간을 제공하고 기능 호출의 맞은편에 보존할 필요가 없습니다. Saved registers s0-s11는 함수 호출에 적합한 변수를 만들 수 있어야 합니다. 스택 포인터 스프는 항상 유효한 스택 메모리를 점한다, 프레임 포인터 fp (s0에 대한 별) 옵션으로 현재 스택 프레임 내에서 고정 참조 지점을 유지합니다.
Instruction Set 건축
RISC-V Base Instruction Set는 단순성 및 일반성을 유지하면서 범용 컴퓨팅의 완전한 기반을 제공합니다. RV32I에는 arithmetic, 논리, 기억 접근 및 통제 교류 가동을 포함하는 37개의 지시가 있습니다. RV64I는 64 비트 운영을위한 12 가지 추가 지침을 확장합니다.
교육 형식
RISC-V는 등록 사양과 같은 일반적인 요소에 대한 일관성있는 필드 위치를 유지하면서 작업의 다른 유형을 인코딩하는 6 가지 기본 명령 형식을 사용합니다.
R 형 지침 (Register-Register)
카지노사이트
R-type 지침은 두 소스 등록자 사이의 작업을 수행하고 대상 등록에서 결과를 저장합니다. 예제는 ADD, SUB 및 논리 작업과 같은 arithmetic 작업을 포함하고, OR, XOR.
카지노사이트
I 형 지침 (Immediate)
카지노사이트
I-type 지침은 등록 및 12 비트 즉각적인 값에서 작동합니다. 이 체재는 즉시 arithmetic, 짐 지시 및 몇몇 체계 가동을 포함합니다.
카지노사이트
S 형 지침 (점포)
카지노사이트
S-type 지침은 기본 등록에서 12 비트 오프셋으로 메모리에 등록합니다.
카지노사이트
B 형 지침 (Branch)
카지노사이트
B 형 지침은 12 비트 PC-relative 상쇄와 등록 비교에 따라 조건부 지점을 수행합니다.
카지노사이트
U 형 지침 (Upper Immediate)
카지노사이트
U 형 지침로드 20-bit 즉시 등록의 상단 비트에 값.
카지노사이트
J 형 지침 (Jump)
ο 회원 관리
J-type 지침은 20bit PC-relative offset으로 무조건 점프를 수행합니다.
카지노사이트
기초 정수 지시 (RV32I/RV64I)
Arithmetic 지시
RISC-V는 등록 등록 등록 및 등록 - 즉시 운영에 대한 arithmetic 지침의 포괄적 인 세트를 제공합니다. 이 지침은 수학 계산 및 주소 계산의 기초를 형성한다.
카지노사이트
메모리 액세스 지침
RISC-V는 메모리 액세스에 대한 별도의 지침과 함께 등록에 대한 모든 arithmetic 작업 작업을 수행하는 로드스토어 아키텍처를 사용합니다. 메모리의 지시 전송 데이터를 기록하는 동안, 기록기에서 메모리에 지시 전송 데이터를 저장하는 동안.
카지노사이트
통제 Flow 지시
제어 흐름 지침은 분기, 점프 및 함수 호출을 구현하여 프로그램 실행을 관리합니다. RISC-V는 두 조건 및 무조건 제어 전송 지침을 제공합니다.
카지노사이트
상위 Immediate 지침
즉시 지침로드 20 비트는 등록자의 상단 부분으로 일정하며 즉시 arithmetic 지침과 결합 할 때 전체 32 비트 일정의 구조를 가능하게합니다.
카지노사이트
RV64I 연장
RV64I는 64 비트 가동을 위한 추가 지시로 기본적인 32 비트 지시를 놓습니다. 이 지침은 32 비트 작업과 호환성을 유지하면서 64 비트 값의 효율적인 조작을 제공합니다.
64 비트 Arithmetic 이름 *
카지노사이트
시스템 설명서
RISC-V는 환경 통화, 휴식 지점 및 제어 및 상태 등록 (CSR) 액세스에 대한 시스템 지침을 포함합니다. 이 지침은 시스템 소프트웨어 구현 및 디버깅 지원이 가능합니다.
카지노사이트
관련 제품
RISC-V 어셈블리 언어는 일반적인 운영을 위해 편리한 mnemonics를 제공하는 하나 이상의 기본 지침을 확장하는 수많은 의사가 포함되어 있습니다.
카지노사이트
프로그래밍 예제
Hello World 프로그램
오프화이트
Fibonacci 책임
카지노사이트
배열 합계 기능
오프화이트
표준 연장
M Extension(Integer Multiplication 및 Division)
M extension adds integer 곱셈 및 사업부 지시에 기초 지시 설정.
카지노사이트
확장 (Atomic Instructions)
확장은 동기화 및 잠금없는 프로그래밍을위한 원자 메모리 작업을 제공합니다.
카지노사이트
F 및 D 확장 (플로팅 포인트)
F extension adds single-precision float-point support, D extension adds double-precision float-point.
카지노사이트
회의 프로그래밍 기술
기능 Calling Convention
RISC-V는 다른 컴파일러와 라이브러리 간의 호환성을 보장하는 표준 호출 협약을 따릅니다. 이 협약을 이해하는 것은 고급 언어 코드와 인터페이스 할 수있는 어셈블리 기능을 작성하는 데 필수적입니다.
카지노사이트
위치 독립 코드
Position-independent code (PIC)는 공유 라이브러리 및 현대 운영 체제에 필수적인 모든 메모리 주소에서 실행할 수 있습니다.
카지노사이트
최적화된 메모리 작업
카지노사이트
Debugging 및 개발 도구
사이트맵 통합
RISC-V 어셈블리 프로그램은 RISC-V 지원 GDB를 사용하여 debugged 할 수 있습니다. 디버깅 프로세스는 디버깅 정보와 RISC-V에 특정 GDB 명령을 사용하여 컴파일합니다.
```bash
Compile with debug information
riscv64-unknown-elf-gcc -g -o program program.s
Debug with GDB
riscv64-unknown-elf-gdb program
GDB commands for RISC-V
(gdb) info registers # show all registers (gdb) info registers x1 # show specific register (gdb) x/10i $pc # disassemble 10 instructions at PC (gdb) stepi # single step instruction (gdb) break *0x10000 # set breakpoint at address ```의 경우
시뮬레이션 및 에뮬레이션
RISC-V 프로그램은 실제 하드웨어에서 실행하기 전에 다양한 시뮬레이터 및 에뮬레이터를 사용하여 테스트 할 수 있습니다.
```bash
Spike simulator (ISA simulator)
spike pk program
QEMU system emulation
qemu-system-riscv64 -machine virt -bios none -kernel program
QEMU user mode emulation
qemu-riscv64 program ```에 대하여
성능 최적화
자주 묻는 질문
RISC-V 프로세서는 신중한 교육 스케줄링에서 파이프라인을 최소화하고 처리량을 극대화합니다.
```asm
Poor scheduling - data dependency stalls
lw t0, 0(a0) addi t1, t0, 1 # stall: depends on t0 sw t1, 4(a0) # stall: depends on t1
Better scheduling - interleave independent operations
lw t0, 0(a0) lw t2, 8(a0) # independent load addi t1, t0, 1 # t0 now available addi t3, t2, 1 # independent operation sw t1, 4(a0) sw t3, 12(a0) ```의 경우
루프 최적화
```asm
Unrolled loop for better performance
unrolled_sum: # a0 = array, a1 = count (must be multiple of 4) li t0, 0 # sum
unroll_loop: beqz a1, sum_done
lw t1, 0(a0) # load 4 elements
lw t2, 4(a0)
lw t3, 8(a0)
lw t4, 12(a0)
add t0, t0, t1 # accumulate
add t0, t0, t2
add t0, t0, t3
add t0, t0, t4
addi a0, a0, 16 # advance by 4 words
addi a1, a1, -4 # decrement count by 4
j unroll_loop
sum_done: mv a0, t0 ret ```에 대하여
시스템 프로그래밍
관련 상품
RISC-V는 운영 체제 및 처리 런타임 오류를 구현하기위한 포괄적 인 예외 처리 메커니즘을 제공합니다.
```asm
Exception vector table
.section .text.vectors .align 2 exception_vector: j handle_reset # Reset j handle_nmi # Non-maskable interrupt j handle_hard_fault # Hard fault # ... additional vectors
Exception handler
handle_exception: # Save all registers addi sp, sp, -256 sd x1, 8(sp) sd x2, 16(sp) # ... save all registers x1-x31
# Read exception cause
csrr t0, mcause
csrr t1, mepc
csrr t2, mtval
# Handle specific exceptions
li t3, 8 # Environment call
beq t0, t3, handle_ecall
# Default handler
j default_exception
handle_ecall: # System call handling # a7 contains system call number # a0-a6 contain arguments
# Restore registers and return
# ... restore all registers
addi sp, sp, 256
mret # return from exception
```의 경우
메모리 관리
카지노사이트
모범 사례 및 일반 패턴
오류 처리
카지노사이트
데이터 구조 Manipulation
카지노사이트