본문으로 바로가기
반응형

함수형 프로그래밍 관점으로 RISC-V의 명령어에 대한 특징을 이야기하는 재미있는 글을 발견하였습니다. 그 동안 ISA와 프로그래밍의 패러다임을 연결해서 생각해 본적이 없었는데 글쓴이의 접근이 신선하게 느껴져서 소개해 봅니다.  


Interesting Random Facts about ARM, x86, RISC-V, AVR and MIPS Microprocessors


글에서는 RISC-V의 ISA(Instruction Set Architecture)에서는 negative, zero, overflow, carry 와 같은 status flag를 사용하지 않기 때문에 함수의 input 에 의한 output이 결정되는 함수형 프로그래밍 관점과 비슷하다는 언급을 하고 있습니다. 

(A key idea in functional programming is to not modify state, but only produce output based on input, and not some other state.

Interestingly you see this same thinking applied to the design of modern RISC CPUs. They don’t characterize it as such, but as a programmer I cannot help but think about it in those terms.)


예를 들어 x86의 경우 두번재 명령어 JE는 첫번째 명령어의 비교 결과에 의하여 영향을 받지만  

CMP AX, 42
JE equal


RISC-V 에서는 다음과 같이 하나의 명령어로 표현 할 수가 있으며, 해당 명령어는 외부 상태에 영향을 받지 않기 때문입니다. 

BEQ x1, x2, equal


좀 더 자세한 내용은 해당 글에서 살펴 보시길 추천드립니다.  

반응형