본문 바로가기

RISC-V

(24)
[RISC-V] CSR (Control and Status) 레지스터 소개 RISC-V 아키텍처는 시스템의 세부 속성을 설정할 수 있는 CSR(Control and Status) 레지스터를 제공합니다. 다음과 같은 모든 속성은 CSR 레지스터를 통해 설정합니다:익셉션 벡터 베이스 주소 설정MMU를 통한 가상 메모리 설정주요 Privilege Mode에서 트랩되는 방식CSR(Control and Status) 레지스터는 시스템의 주요 속성을 설정하므로 부팅 과정에서 대부분 설정됩니다. CSR 레지스터를 소개했으니 CSR 레지스터에 접근할 수 있는 Privilege Mode에 대해 알아봅시다. Privilege Mode과 CSR 레지스터 CSR 레지스터의 이름을 보면 접두사로 m 혹은 s가 보입니다. 주요 CSR 레지스터의 목록은 아래와 같습니다: Machine Mode: msta..
[RISC-V] 레지스터: 범용 레지스터 RISC-V 아키텍처에서 레지스터를 배우려면 어떤 내용을 알아야 할까요? RISC-V 아키텍처에서는 다음과 같은 레지스터를 제공합니다.범용 레지스터CSRs(Control and Status) 레지스터범용 레지스터먼저 범용 레지스터에 대해 알아 봅시다. 범용 레지스터는 어셈블리 명령어의 입력과 출력을 저장하는 용도로 사용됩니다. 개념 상 C 언어의 변수와 비슷한 개념입니다. 어셈블리 명령어를 분석하실 때 반드시 레지스터를 알아야 합니다. RISC-V 아키텍처에서 정의된 범용 레지스터의 목록은 다음과 같습니다.  Armv8 아키텍처와 비슷하게 레지스터의 갯수는 X0에서 X31까지 있습니다. 레지스터의 갯수가 많은 편입니다. 대부분 어셈블리 명령어의 인풋과 출력 결과를 저장하기 위해 사용되는데, 함수가 호출될..
[RISC-V] Privilege level(PL) 이란 Privilege Mode를 이해하려면 Privilege level(PL)의 개념을 먼저 알아야 합니다. Privilege Mode는 PL의 기반 위에서 정의했기 때문입니다.  Privilege level(PL) 사실 대부분 CPU 아키텍처에서 Privilege level(PL)를 정의합니다. Arm 아키텍처를 비롯한 인텔의 x86 아키텍처에서도 Privilege level이란 용어를 볼 수 있습니다. 그렇다면 Privilege level의 실체는 무엇일까요? 그 실체는 3가지로 분류할 수 있습니다:  메모리 공간 접근 권한 레지스터 접근 권한 명령어 접근 권한위에서 언급된 메모리 공간, 레지스터 및 명령어를 접근할 수 있는 권한 레벨을 부여할 수 있는데, 이것이 바로 Privilege level입니다...
[RISC-V] Privilege Mode(권한 모드)를 왜 잘 알아야 할까 RISC-V 프로세서와 관련된 세미나를 진행할 때 입문자들은 종종 다음과 같은 질문을 합니다. RISC-V 아키텍처에서 가장 중요한 기능이 무엇인가요? 이 질문에 저는 "RISC-V 아키텍처에서 정의된 권한 모드(Privilege Mode)가 가장 중요하다"라고 답합니다. 그 이유는 무엇일까요? 다음과 같이 요약할 수 있습니다.익셉션이 유발되면 권한 모드가 바뀌므로 익셉션의 동작 원리를 이해하려면 권한 모드를 알아야 한다.CSR(Control Status Regiser) 레지스터를 제대로 이해하려면 권한 모드를 알아야 한다.어셈블리 명령어의 동작 원리를 파악하려면 권한 모드를 알아야 한다.익셉션과 레지스터를 비롯한 RISC-V 아키텍처의 많은 기능은 권한 모드 기반 위에서 설계돼 있어 권한 모드를 이해하..
RISC-V IPI Call: Code walkthrough RISC-V IPI Call: Code walkthroughvoid smp_call_function_many(const struct cpumask *mask, smp_call_func_t func, void *info, bool wait){ smp_call_function_many_cond(mask, func, info, wait * SCF_WAIT, NULL);}EXPORT_SYMBOL(smp_call_function_many);void send_call_function_single_ipi(int cpu){ struct rq *rq = cpu_rq(cpu); if (!set_nr_if_polling(rq->idle)) arch_send_call_function_single_ipi(cpu);..
Useful material for RISC-V AMD: https://docs.amd.com/r/en-US/ug1629-microblaze-v-user-guide/Machine-Cause-Register-mcause SBI specification: https://www.scs.stanford.edu/~zyedidia/docs/riscv/riscv-sbi.pdfSBI Reference: https://docs.rs/sbi/latest/sbi/legacy/index.htmlThe RISC-V Advanced Interrupt Architecture: https://github.com/riscv/riscv-aia/releases
[RISC-V] How to run QEMU (Window) 윈도우  WSL 2 환경에서 아래 툴들을 설치하자. virt-edit 에서 Fedora 이미지의 /boot/extlinux/extlinux.conf 를 수정하기 위해 필요하다.  더 자세한 자료는 아래 링크를 참고하자.https://fedoraproject.org/wiki/Architectures/RISC-V/Installing#Boot_under_QEMU
RISC-V ISA-interpreter Below link is pretty good. https://www.cs.cornell.edu/courses/cs3410/2019sp/riscv/interpreter/# RISC-V Interpreter Credit to Danny Qiu for the creation of the original MIPS interpreter. www.cs.cornell.edu