이 영역을 누르면 첫 페이지로 이동
컴퓨터와 수학, 몽상 조금 블로그의 첫 페이지로 이동

컴퓨터와 수학, 몽상 조금

페이지 맨 위로 올라가기

컴퓨터와 수학, 몽상 조금

컴퓨터공학, 딥러닝, 수학 등을 다룹니다.

3. MIPS 아키텍처

  • 2020.10.12 17:23
  • 학부 수업/컴퓨터구조
반응형

MIPS는 MIPS 테크놀로지에서 개발한 RISC ISAInstruction Set Architecture이다. PS2, 닌텐도 등 Embedded Core 장치에 주로 사용되다가 현재는 많이 밀려났으나, 현대 RISC ISA의 정석에 가까운 구조로 공부하기에 유용하다.

MIPS의 설계원칙

  1. 간단하기 위해선 규칙성이 중요하다.
  2. 작은 것이 빠르다.
  3. 자주 생기는 일은 빨리 처리하라.

MIPS의 레지스터

MIPS는 32비트 기준으로 32개의 레지스터를 가지며, 레지스터 번호는 0~31로 할당된다.

어셈블러는 임시 변수에는 t0, t1과 같은 이름을 부여하며, 저장되어 있는 변수에는 s0, s1과 같은 이름을 부여한다.

산술연산

MIPS의 산술연산은 3개의 피연산자로 구성된다. 이때, 산술연산의 operand는 항상 레지스터를 참조하는 것에 유의하자.

add a, b, c # a gets b+c

add 뿐만이 아닌 모든 산술연산이 위의 규칙을 따르는데, 이는 MIPS의 설계 원칙인 규칙성을 따른 것이다.

예시

f = (a+b) - (c+d);

위 C 코드를 MIPS로 컴파일하면 다음과 같이 변환된다. (레지스터로 데이터를 load하는 부분은 생략)

add $t0, $s1, $s2
add $t1, $s3, $s4
sub $s0, $t0, $t1

Memory Operand

MIPS에서 데이터는 메모리에 저장된다. 산술 연산을 실행하기 위해서는 이 데이터를 메모리에서 레지스터로 load해야 하고, 이 결과는 다시 메모리에 store되어야 한다.

32비트 기준으로 메모리는 1 byte 주소를 갖기에, 8-bit으로 표현가능한 상한인 4GB의 메모리를 가질 수 있다.

워드는 메모리에 정렬되어 저장되는데, 워드의 주소는 4배수이다.

MIPS는 Big Endian을 사용하는데, 0x1234를 12 34 와 같이 나타내는 방법이다. 즉, 메모리의 왼쪽 끝단 (MSB)의 주소가 가장 작다.

Immediate Operands

상수는 명령어에 명시하여 속도를 향상시킬 수 있다. 특정 작은 값을 더하는 연산이 많이 발생할 때, 아예 해당 값을 명령어 안에 포함시켜 메모리에서 불러오는 단계를 생략함으로서 속도를 향상시킬 수 있다.

addi $s3, $s3, 4

MIPS 구조 정리

명령어는 32-bit 워드를 사용한다.

R, I, J 타입의 오직 세 가지의 명령어 구조가 있다.

타입 명령어 구조
R OP rs (source) rt (target) rd (destination) shamt (Shift Amount) funct (Extends OP code)
I OP rs rt 16 bit address or Const.
J OP 26 bit address

R은 산술연산 등이 포함되고, I는 직접연산, J는 Jump를 포함한다.

RISC 답게 단순하고 구조화된 명령어 구조를 가지며, 컴파일러의 성능에 의존하는 경향이 있다.

반응형

'학부 수업 > 컴퓨터구조' 카테고리의 다른 글

5.5 프로그램의 실행 과정  (0) 2020.10.12
5. 메모리 접근 (Addressing)  (0) 2020.10.12
4. MIPS의 명령어 구조와 명령어들  (0) 2020.10.12
2. 명령어와 CPU 아키텍처 (Instructions and CPU Architectures)  (0) 2020.10.12
1. 프로세서의 응답시간, 클럭, 수율 (Latency, Clock Frequency, Yield of Processor)  (0) 2020.09.20

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 5. 메모리 접근 (Addressing)

    5. 메모리 접근 (Addressing)

    2020.10.12
  • 4. MIPS의 명령어 구조와 명령어들

    4. MIPS의 명령어 구조와 명령어들

    2020.10.12
  • 2. 명령어와 CPU 아키텍처 (Instructions and CPU Architectures)

    2. 명령어와 CPU 아키텍처 (Instructions and CPU Architectures)

    2020.10.12
  • 1. 프로세서의 응답시간, 클럭, 수율 (Latency, Clock Frequency, Yield of Processor)

    1. 프로세서의 응답시간, 클럭, 수율 (Latency, Clock Frequency, Yield of Processor)

    2020.09.20
다른 글 더 둘러보기

정보

컴퓨터와 수학, 몽상 조금 블로그의 첫 페이지로 이동

컴퓨터와 수학, 몽상 조금

  • 컴퓨터와 수학, 몽상 조금의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (276)
    • Tech Trend (3)
    • Deep Learning (77)
      • 공부 노트 (21)
      • 논문 리뷰 (44)
      • 논문 스키밍 (1)
      • 영상처리 (11)
    • Engineering (3)
      • Tips (2)
      • Experiences (1)
    • Blog (42)
      • 회고 & 계획 (16)
      • 내 이야기 (8)
      • 리뷰 (3)
      • 군대에 간 공돌이 (9)
      • ML엔지니어 취업 도전기 (1)
      • 여행 (4)
    • 학부 수업 (141)
      • 머신러닝 (16)
      • C프로그래밍 (8)
      • 자료구조 (11)
      • 알고리즘 (17)
      • 디지털시스템 (25)
      • 컴퓨터구조 (11)
      • 확률과 통계 (21)
      • 선형대수학 (14)
      • 이산수학 (18)
      • 데이터시각화 (0)
    • 강의 (9)
      • 딥러닝 기초 (7)
      • Python (2)

공지사항

인기 글

정보

백지오의 컴퓨터와 수학, 몽상 조금

컴퓨터와 수학, 몽상 조금

백지오

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
반응형

나의 외부 링크

  • profile
  • github
  • linkedin

방문자

  • 전체 방문자
  • 오늘
  • 어제
Powered by Tistory / Kakao. © 백지오. Designed by Fraccino.

티스토리툴바