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

컴퓨터와 수학, 몽상 조금

페이지 맨 위로 올라가기

컴퓨터와 수학, 몽상 조금

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

5. 메모리 접근 (Addressing)

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

메모리 접근Addressing

지금까지 배운 MIPS 명령어들의 경우 5 비트의 레지스터 주소를 사용하는 경우가 일반적이었다. 그런데, MIPS 명령어에서 받을 수 있는 크기 (I 명령어의 경우, 16 비트)이상의 메모리 주소나 상수값이 입력되면 어떻게 할까?

이런 문제를 해결하기 위해 MIPS는 다양한 할당 방법을 제공한다.

직접 접근Immediate Addressing

I-구조 명령어는 16비트의 메모리 주소나 상수를 입력받는다. 이때, 입력할 상수값이 16비트보다 큰 경우, lui 명령어를 사용한다.

lui $s0, 61

위 명령어는 $s0의 앞 16비트에 61의 값을 담는다. 뒤쪽 16비트는 0으로 채워둔다.

이제 ori 명령어를 사용한다.

ori $s0, $s0, 2304

이제 $s0 뒤의 16비트에는 2304의 값이 채워졌다.

Psuedo-Direct Addressing

J-구조 명령어인 j(jump) 명령어는 opcode를 제외하고 26비트의 주소를 입력받는다. 이 역시 32비트의 메모리 주소보다 적은 값이다.

Psuedo-Direct 방법은 이를 해결하기 위한 방법이다. 이 방법은 현재 수행 중인 명령어들이 접근하는 메모리 위치가 근접하여, 현재 실행 중인 명령어와 이동하고자 하는 메모리 주소의 앞 4비트 주소가 같다고 가정한다.

먼저, 데이터는 항상 4비트 단위로 이동하므로, 26비트 address를 왼쪽으로 2칸 shift한다.(x4 하는 것과 같다.)

이제 모자란 4비트는 PC영역에 있는 현재 명령어의 주소 앞부분에서 4비트를 가져와 채운다. 

PC-relative Addressing

beq, bne 명령어에서 사용되는 방법으로, 이동할 메모리의 주소가 멀지 않다는 가정하에 현재 PC와의 상대 거리를 address에 저장한다.

목표 address가 (PC + 4) + offset*4라고 정의하고, offset을 address에 저장한다.

물론 이때도 거리가 너무 멀면 예외가 발생하는데, 이 경우 컴파일러가 코드를 다음과 같이 수정한다.

beq $s0, $s1, L1 # L1이 너무 멀다면
#수정
bne $s0, $s1, L2
j L1 # jump 명령어를 대신 사용
L2: ...

Base Addressing

Base Addressing은 우리가 여러차례 썼던 방법이다. 마치 배열에 포인터로 접근하는 것과 같이, 기준 메모리 주소를 갖고 있는 레지스터와 해당 주소로부터의 변위를 이용하여 목표 주소에 도달한다.

lw $s1, 100($s5) # s5에서 100 떨어진 메모리 주소를 s1에 저장
반응형

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

6. 컴퓨터의 정수연산 (Integer Arithmetic of Computer)  (0) 2020.10.27
5.5 프로그램의 실행 과정  (0) 2020.10.12
4. MIPS의 명령어 구조와 명령어들  (0) 2020.10.12
3. MIPS 아키텍처  (0) 2020.10.12
2. 명령어와 CPU 아키텍처 (Instructions and CPU Architectures)  (0) 2020.10.12

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 6. 컴퓨터의 정수연산 (Integer Arithmetic of Computer)

    6. 컴퓨터의 정수연산 (Integer Arithmetic of Computer)

    2020.10.27
  • 5.5 프로그램의 실행 과정

    5.5 프로그램의 실행 과정

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

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

    2020.10.12
  • 3. MIPS 아키텍처

    3. MIPS 아키텍처

    2020.10.12
다른 글 더 둘러보기

정보

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

컴퓨터와 수학, 몽상 조금

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

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (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.

티스토리툴바