1. .c 파일을 .exe 파일로 만들어서 실행을 시키면 명령어들이 8비트 * 4줄의 형태로 메모리에 한 세트씩 저장이 됨. 이때는 기계어가 저장됨.
  2. CPU의 control unit 이 메모리의 명령 한 세트를 로그함. → ALU 에서 연산함 → register 에서 연산의 결과값을 저장함.
  3. 메모리(RAM)가 있는데 구태여 레지스터를 쓰는 까닭은 속도 때문. 아무래도 메모리에 직접 접근하려면 그만큼 시간이 오래 걸리니까.
  4. ISA 의 기본 구성 요소는 Operator, 연산 결과, Operand1, Operand2 로 구성되어 있음. MIPS 32 bit Arch 에서는 32비트의 Instruction 으로 이루어져 있음. 이를 32비트에서 다 담지 못하는 경우도 있었는데 이를 위해 64비트 체계가 나옴.
  5. ISA에서 첫 8비트는 명령어인데 이는 하나의 약속이라고 보면 됨. ex 00001111 = add 라고 하자.
  6. MIPS 32 비트에서는 메모리에 직접 접근을 하지 않는다. 즉 ALU는 레지스터 하고만 데이터를 주고 받는다.

Untitled

  1. IA-32, IA-64 는 ISA 이고, (Intel Architecture), Intel, AMD, Cyrix 등은 CPU 이다.
  2. 8비트는 1바이트이다. 워드는 예를 들어 MIPS 의 32 비트로 컴퓨터 내부의 데이터 처리 및 전송의 단위이다.
  3. MIPS 의 경우 CPU 안에 레지스터가 총 35개가 있음. 일반적인 레지스터 32개와 PC, LO, HI 로 이루어짐. 이때 PC 는 Program Counter 의 준말로 메모리의 주소를 가리킴. 근데 이 레지스터의 비트 수가 32개이므로 얘가 가리킬 수 있는 메모리의 주소는 총 2^32 개임. 따라서 메모리의 최대 용량ㅇ은 2^32 비트가 되고 이는 곧 4G 임. 참고로 2^10 = 1kb 2^20 = 1M 2^30 = 1G 임.

Untitled

Untitled

일반 레지스터 32개의 넘버별 기능을 표로 정리해 둔 것이고 외울 필요는 없음. 다른 건 이해가 다 되는데 preserved across call 이 무엇인지 정확히는 이해가 잘 안감. function 이 바뀌는데 바뀌지 않는 값을 저장한다..? 무슨 말인지 다시 여쭤볼 것 .

  1. MIPS Instructions의 역할: 1. 수학 및 논리 지시, 2. 메모리 접근을 못하니까 외부 API 를 만들어서 메모리 접근을 하게끔 했는데 (그럼으로써 메모리 접근 성능과 연산 성능 두 마리 토끼를 잡을 수 있었음) 그때 만든 Load 와 Store 같은 Data Transfer Instructions 3. 조건적인 지시들, 4. 비조건적인 지시들 → 이 네 가지 필기를 잘 못해서 다시 여쭤보기.

Untitled

  1. MIPS Instruction Format 총 세 가지 종류가 있음. 1. add 2. addi 3. jump (이건 편의상 이렇게 예시로 이름 붙인 거고 이외에도 다른 명령어 많음~)

Untitled

그림을 보면 쉽게 이해할 수 있음. 그리고 그 메모리의 주소는 최댓값이 2^32 인데 jump 에서 target address 의 경우 기껏해야 26비트임. 즉 모든 메모리에 접근할 수 없다는 맹점을 가지고 있음 (이 부분 교수님께 질문드렸고, 이렇게 설명해주시고 근데 이제 64비트가 나와서 문제가 될 것이 없다라고 답변 주셨음.)