컴퓨터구조(9)
-
pipelining
파이프라이닝은 processor에서 instruction을 수행하는 동안 놀고 있는 자원을 효율적으로 쓰기 위한 방식이다. 원래 processor에서는 Fetch 후 decode 하고 명령어에 따라 수행하고 ALU로 보내고 연산 후에 memory로 보내거나 register로 결과를 다시 레지스터로 보내거나 하는 과정을 거친 후에 다음 명령어가 실행되어서 반복되었다. 이런 수행을 다 기다린 후에야 pc를 증가시켜 다음 명령어를 수행할 수 있었는데 이런 비효율성을 해결하기 위해 pipelining을 이용하게 된다. Processor의 수행 과정을 나눠보면 1. Fetch 2. Decode 3. Depend on Instruction with ALU 4. PC + 4 파이프라이닝은 A명령어가 들어가고 첫번째 ..
2023.02.07 -
MIPS processor
a.out 같은 프로그램을 실행시켰을 때 storage에 있는 binary들이 메모리에 올라오고 Program Counter에서는 해당하는 바이너리 주소에 접근하여 fetch 해온다. 그리고 가져온 명령어에 따라 컴퓨터가 연산하여 작동하게 되는 것이다. processor의 datapath이다. pc에서 가져온 후에 decode를 통해 어떤 명령어인지 확인을 하고 명령어에 따라 I, R, J 타입을 구분해주고 그것에 따라 register 및 data를 처리해주고 ALU로 보내 연산하게 된다. PC는 한번 가져오면 +4를 해주어서 다음 PC 주소로 넘어간다. word 단위로 데이터를 저장하므로 4byte씩 이동하는 것 (32bit). ALU에서 나온 결과를 다시 data로 보내던가 data 메모리로 보내게 ..
2023.02.07 -
MIPS representing instruction
instruction들은 2진수로 번역되어야한다. green sheet에 번호들이 나와있다. 간단한 add 명령어를 2진수로 바꿔볼 것이다. add $t0, $s1, $s2 add 명령어는 R타입이고 opcode는 0, funct는 20인 16진수이다. register number를 보고 맞게 써주면 된다. 이런식으로 번역해주는 것이다.
2023.01.15 -
MIPS-32 ISA 명령어 type
MIPS의 instruction에서는 load/store add,sub,,.. Jump and Branch 과 같은 여러 명령어들이 있는데 공통적인 것들끼리 type을 나눠서 분류하고 관리하고 처리한다. MIPS에서는 모든 데이터 저장은 32bit 단위로 저장하지만 어떤걸 저장하는지는 타입마다 다르다. PC는 program counter로 다음에 실행될 명령어들의 위치를 저장해놓은 레지스터이다. 한 사이클이 완료되면 PC값들을 다음 주소로 옮겨줘야한다. HI, LO는 special register로 곱셈, 나눗셈 결과를 저장해놓는 레지스터이다. R-type op는 현재 명령어가 어떤 타입인지를 나타내는 것이다. R, I, J 타입이 있다. rs rt rd는 $s1 $t1 $t2 를 봤을 때 rs는 t1 ..
2023.01.14 -
MIPS 어셈블리어2
MIPS immediate instruction immediate instruction은 번역 시 즉각적인 명령으로 볼 수 있는데 왜냐하면 instruction 안에 레지스터가 아닌 상수를 넣어서 계산 하는 방식이기 때문이다. addi $s3, $s3, 4 addi $s3, $s3, -1 해당 명령어는 기존 명령어에서 immediate의 약자인 i가 붙는다. MIPS 레지스터 중에는 zero도 존재하는데 zero는 레지스터 값을 다른 레지스터로 옮길 때 주로 이용한다. add $t1, $s1, $zero s1에 있던 데이터를 zero와 더하게 되면서 t1으로 옮기게 되는 것이다. R-type 명령어 R-type 명령어 중 sll (set left logical) 이라는 명령어와 srl (set right..
2023.01.14 -
빅엔디안, 리틀엔디안
빅엔디안 빅 엔디안은 우리가 수를 읽는 방식과 같은 방식으로 낮은 주소에 큰 메모리를 저장하는 방식이다. 빅엔디안은 처음 메모리 공간을 할당 받고 메모리가 낮은 곳에서 높은 곳까지 내려간 후에 그 다음에 채워넣는 것이다. 리틀 엔디안 리틀 엔디안은 큰 주소에 큰 메모리를 저장하는 방식이다. 빅 엔디안과 반대이다.
2023.01.14