Skip to main content

Categories

God shall bless us; and all the ends of the earth shall fear him.

RISC V 명령어 셋 아키텍처

computer-architecture
RISC V 명령어 셋 아키텍처

명령어 셋 구조

Instruction Set Architecture

ISA란 무엇일까요? 어떤 인터페이스로 보아야 할까요, 아님 구현으로 보아야 할까요?

코드에서 구현과 인터페이스의 분리를 하여 이점을 얻는 것처럼, CPU에도 동일하게 적용하면 어떨까요? 인터페이스는 사용자를 위해, 구현은 디자이너에게 맞기는 겁니다.

이런 방법으로 같은 아키텍처를 다양한 벤더가 구현할 수 있습니다. 예를 들어 볼까요? ARMv8-A 아키텍처로 ARM Cortex-A 시리즈, Qualcomm Snapdragon 800 시리즈, Apple A15 Bionic 시리즈, Samsung Exynos M 시리즈를 구현했습니다.

메모리 밴드윗 ~

그렇다면 진짜 ISA란 무엇일까요?

프로그래머와 하드웨어의 계약(contract)입니다 프로그래머에게 ISA란 프로그램이 어떻게 실행될 지에 대한 모델, 하드웨어 디자이너에게 ISA란 프로그램을 맞게 실행시키기 위한 정형적인 정의입니다.

현대의 ISA는 저장된 프로그램(stored program) 컴퓨터 모델을 따릅니다. 폰 노이만의 메모: 전자 컴퓨팅 기기의 논리적 디자인에 대한 첫 논의 프로그램: 명령어의 순열 하나의 스토리지가 같은 프로그램과 데이터를 보관하는데 사용됩니다.

  • 스토리지
  • 프로그램 카운터
  • ALU

Instruction Types

ALU Opertions

  • arithmetic (add, sub, mult, div)
  • logical (and, or, xor, srl, sra)
  • data type conversions (cvtf2d, cvtf2i)

Data Movement

  • memeory reference (lb, lw, sb, sw)
  • register to register (movi2fp, movf)

Control

  • test/compare (slt, seq)
  • branches and jumps (beq, bne, j, jr)
  • support for procedure call (jal, jalr)
  • operating system entry (trap)

Components of Instructions

  • Operations
  • Number of operands
  • Operand specifiers
  • Instruction encodings
  • Instruction classes

ISA Basics: Register Organization

The Index Register

????

General Registers

GPR
Merge accumulators(data) and index(address).

Stack Machines

Register state in PC and SP

Memory Organization

Little Endian(Intel)
Big Endian(MIPS)

Data types

32-bit floating point 8-bit exp, 23-bit mantissa

ISA Principles

Role of the Optimizaing Compiler

Instruction set Deisign

KISS Keep it simple, stupid

Frequency: make common case fast

Orthogonality(modularity): Simple rules, few exceptions

Generality:

Locality and concurrency

KISS and FOG