[컴퓨터 구조] 4. MIPS Data Transfer Instructions (1)

2024. 4. 6. 13:50·CS/컴퓨터 구조
반응형

Data Transfer Instructions

CPU 내부의 레지스터는 32개밖에 없다.

만약 4byte 데이터 배열 100개를 선언하는 것과 같이 레지스터의 저장 공간을 넘어서는 용량이 필요한 경우, 메모리를 활용해야 한다.

따라서 MIPS 모든 CPU는 레지스터와 메모리 사이에 데이터를 주고 받을 수 있는 명령어를 제공한다.

 

메모리에 데이터를 쓰는 동작은 Store (Write) 라고 한다.

메모리에서 데이터를 읽는 동작은 Load (Read) 라고 한다.

 

메모리에 접근할 때는 메모리 주소를 사용해야 하는데, 메모리 주소는 메모리 공간의 8bit = 1 byte 마다 하나의 주소값을 가진다.

(이를 byte - addressable 하다고 한다.)

 

레지스터와 메모리 사이에 데이터를 주고받을 때는, 4 byte = 1 word 단위로 주고 받는다.

따라서 word 단위로 주고 받는 경우, 메모리의 주소값은 반드시 word의 크기인 4의 배수여야하며,

그 주소로부터 연속된 4칸의 공간에 4byte 데이터를 읽고 쓴다.

 

이때 데이터를 읽고 쓰는 순서에 따라 Big Endian 과 Little Endian 으로 구분할 수 있다.

 


Endianness

 

16진수 0x12345678을 4byte 공간에 저장한다고 하자.

이때 MSB를 메모리의 작은 주소에 저장하는 방식을 Big Endian 방식이라고 한다.

반면 MSB를 메모리의 큰 주소부터 저장하는 방식을 Little Endian 방식이라고 한다.

 

4byte data를 쓰고나서, 4byte 데이터를 읽을 때는 어떤 방식을 사용하든 동일하게 해석하므로 문제가 없다.

하지만 만약 이렇게 4byte를 쓰고나 2byte 데이터를 읽을 때는 차이가 발생한다.

 

 

Big Endian 방식은 낮은 주소에 높은 비트, 즉 원래 더 큰 값을 의미했던 데이터가 들어가있으므로,

2byte를 읽으면 상위 2byte의 데이터를 읽게 된다.

 

Little Endian 방식은 낮은 주소에 낮은 비트, 즉 원래 더 작은 값을 의미했던 데이터가 들어가있으므로,

2byte를 읽으면 하위 2byte의 데이터를 읽게 된다.

 

MIPS는 상위 2byte를 읽는 Big Endian 방식이라는 점에 유의하면서 메모리를 읽고 쓰는 명령어를 살펴보자.

 

메모리에 Word 데이터 읽고 쓰기

lw rt, address : load word, 메모리에서 word (4byte) 데이터를 읽어 레지스터에 저장한다.

lw rt, imm(rs) 형태로 사용한다. ( rt   <=   [rs + imm] )

 

lw $t0, 32($s0) 이라고 적으면, $s0 레지스터에 저장된 메모리 주소를 base 주소로 해서, 32byte 만큼 떨어진 주소에 있는 값을 읽어, $t0 레지스터에 저장하라는 의미이다.

 

sw rt, address : store word, 레지스터에서 word 데이터를 읽어 메모리에 저장한다.

sw rt, imm(rs) 형태로 사용한다. ( rt   =>  [rs + imm] )

 

위에서도 언급했듯, word 데이터를 주고받고 있으므로 주소값을 연산한 결과는 4의 배수여야 한다.

base address 로부터 떨어진 간격은 imm 필드의 값을 사용한다.

이 값의 단위는 byte이며, 범위는 -2^15 ~ 2^15 - 1 로 대략 -32000 ~ 32000 내외의 값이다.

 

메모리의 주소값과 메모리 크기

메모리의 가장 큰 주소값으로부터 메모리의 크기를 계산할 수 있다.

메모리의 가장 큰 주소값이 만약 0x7FFFFFFF 라고 해보자.

7 = 111 이므로 3bit 값이고

F = 1111 이므로 4bit 값이다.

 

따라서 이 주소값은 총 31 bit로 이루어진 주소값이다.

메모리의 용량은 2^(주소값 길이) 로 계산할 수 있다.

 

따라서 2 ^ 31 = 2 * 2 ^ 30 = 2 * 2^(10 * 3) = 2 * 10 ^ (3 * 3) = 2 GB

반응형
저작자표시 비영리 변경금지 (새창열림)

'CS > 컴퓨터 구조' 카테고리의 다른 글

[컴퓨터 구조] 6. MIPS Branch Instructions  (0) 2024.04.15
[컴퓨터 구조] 5. MIPS Data Transfer Instructions (2)  (0) 2024.04.14
[컴퓨터 구조] 3. MIPS Arithmetic & Logical Instruction  (0) 2024.04.06
[컴퓨터 구조] 2. Clock & Verilog  (0) 2024.04.06
[컴퓨터 구조] 1. MIPS Instruction & Register  (0) 2024.03.12
'CS/컴퓨터 구조' 카테고리의 다른 글
  • [컴퓨터 구조] 6. MIPS Branch Instructions
  • [컴퓨터 구조] 5. MIPS Data Transfer Instructions (2)
  • [컴퓨터 구조] 3. MIPS Arithmetic & Logical Instruction
  • [컴퓨터 구조] 2. Clock & Verilog
에버듀
에버듀
개발은 좋은데 뭘로 개발할까
  • 에버듀
    Blog. 에버듀
    에버듀
  • 전체
    오늘
    어제
    • 분류 전체보기 (615)
      • 개인 프로젝트 (43)
        • 토이 프로젝트 (3)
        • [2020] 카카오톡 봇 (9)
        • [2021] 코드악보 공유APP (22)
        • [2022] 유튜브 뮤직 클론코딩 (9)
        • [2025] 한글 SQL 데이터베이스 (0)
      • 팀 프로젝트 (22)
        • [2020] 인공지능 숫자야구 (4)
        • [2022] OSAM 온라인 해커톤 (10)
        • [2024] GDSC 프로젝트 트랙 (6)
        • [2025] 큰소리 웹 페이지 (2)
      • CS (335)
        • 자료구조 (19)
        • 어셈블리 (41)
        • 멀티미디어응용수학 (7)
        • 컴퓨터 구조 (29)
        • 알고리즘 분석 (4)
        • 컴퓨터 네트워크 (38)
        • 프로그래밍언어론 (15)
        • HCI 윈도우즈프로그래밍 (26)
        • 기초데이터베이스 (29)
        • 운영체제 (23)
        • 오토마타 (24)
        • 문제해결기법 (11)
        • 블록체인 (22)
        • 소프트웨어공학 (21)
        • 기계학습심화 (12)
        • 컴퓨터그래픽스와 메타버스 (8)
        • 분산시스템특론 (6)
      • 자기계발 (45)
        • 생각 정리 (23)
        • 대외활동 (11)
        • 동아리 (7)
        • 자격증 (3)
        • 머니 스터디 (1)
      • 알고리즘 (PS) (107)
        • BOJ (101)
        • Programmers (5)
        • 알고리즘 이모저모 (1)
      • WEB(BE) (8)
        • express.js (1)
        • Spring & Spring Boot (7)
      • WEB(FE) (2)
        • html, css, js (1)
        • React.js (1)
      • Tool & Language (6)
        • Edit Plus (1)
        • Git (1)
        • Python3 (2)
        • Java (2)
      • Infra (12)
        • AWS (1)
        • Oracle Cloud (8)
        • Firebase (2)
        • Network (1)
      • Android (18)
        • Java (6)
        • Flutter (12)
      • Window (2)
        • Visual Studio 없이 WPF (1)
        • MFC (1)
      • 독서 (14)
        • Inside Javascript (7)
        • Database Internals (6)
        • 한 글 후기 (1)
  • 링크

    • github
    • website
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
에버듀
[컴퓨터 구조] 4. MIPS Data Transfer Instructions (1)
상단으로

티스토리툴바