CS 지식/컴퓨터구조
-
Computer systems Abstraction HDL(Hardware Description Language)을 사용할 때는 RTL level에서 함 RTL level: register에 담아놨다가 사용하는 방식 HDL -> gate level : synthesis synthesizable(합성가능)한 것에 대해서 simulation. 전체 feature는 simulation을 위한 것. 우리가 관심을 가질 내용은 synthesis보다는 processor를 설계하는 것.(modeling simulation) HDL to Gates Simulation Inputs applied to circuit Outputs checked for correctness Millions of dollars saved b..
[컴퓨터구조] 9. System VerilogComputer systems Abstraction HDL(Hardware Description Language)을 사용할 때는 RTL level에서 함 RTL level: register에 담아놨다가 사용하는 방식 HDL -> gate level : synthesis synthesizable(합성가능)한 것에 대해서 simulation. 전체 feature는 simulation을 위한 것. 우리가 관심을 가질 내용은 synthesis보다는 processor를 설계하는 것.(modeling simulation) HDL to Gates Simulation Inputs applied to circuit Outputs checked for correctness Millions of dollars saved b..
2023.10.10 -
ARM v8 instruction (from COD) 64비트로 이동하면서 ARM은 전면적인 정비를 했다. ARM v8은 MIPS와 닮아있다. v7과 다른점?: 조건부 실행 필드(conditional execution field)가 존재하지 않는다. Immediate field Dropped load/store multiple PC가 더 이상 GPR이 아니다. GPT set이 32로 확장되었다. Addressing mode가 모든 word size에서 동작한다. instruction을 나눈다(divide). Branch if equal/branch if not equal instruction MIPS와 거의 유사함 Intel x86 Register flag register register 수가 MIPS에..
[컴퓨터구조] 8. MIPS, ARM, RISC-V, Systemverilog 비교ARM v8 instruction (from COD) 64비트로 이동하면서 ARM은 전면적인 정비를 했다. ARM v8은 MIPS와 닮아있다. v7과 다른점?: 조건부 실행 필드(conditional execution field)가 존재하지 않는다. Immediate field Dropped load/store multiple PC가 더 이상 GPR이 아니다. GPT set이 32로 확장되었다. Addressing mode가 모든 word size에서 동작한다. instruction을 나눈다(divide). Branch if equal/branch if not equal instruction MIPS와 거의 유사함 Intel x86 Register flag register register 수가 MIPS에..
2023.10.10 -
Array Access large amounts of similar data Index: access each element Size: number of elements 5-element array Base address = = 0x12348000 (address of first element, array[0]) First step in accessing an array: load base address into a register(register로 base address를 로드) Accessing Arrays // C Code int array[5]; array[0] = array[0] * 2; array[1] = array[1] * 2; # MIPS assembly code # array base a..
[컴퓨터구조] 7. MIPS assembly programming(Array etc.)Array Access large amounts of similar data Index: access each element Size: number of elements 5-element array Base address = = 0x12348000 (address of first element, array[0]) First step in accessing an array: load base address into a register(register로 base address를 로드) Accessing Arrays // C Code int array[5]; array[0] = array[0] * 2; array[1] = array[1] * 2; # MIPS assembly code # array base a..
2023.10.10 -
I-Type Immediate type이라고도 불림 3개의 operands를 수반함: rs, rt: register operands(각각 source, target의 의미) imm.: 16-bit two's complement(2의 보수) immediate Other fields: op: the opcode Simplicity favors regularity: all instructions have opcode Operation is completely determined by opcode(6 bit) I-Type Examples assembly code와 field value의 register 위치가 다름에 유의해야 한다.(destination의 위치가 code로 나타낼 때는 맨 처음이다.) J-Typ..
[컴퓨터구조] 6. R-Type, J-Type, I-TypeI-Type Immediate type이라고도 불림 3개의 operands를 수반함: rs, rt: register operands(각각 source, target의 의미) imm.: 16-bit two's complement(2의 보수) immediate Other fields: op: the opcode Simplicity favors regularity: all instructions have opcode Operation is completely determined by opcode(6 bit) I-Type Examples assembly code와 field value의 register 위치가 다름에 유의해야 한다.(destination의 위치가 code로 나타낼 때는 맨 처음이다.) J-Typ..
2023.10.10 -
Introduction CPU가 CPU로써 기능을 가지려면 3 종류의 기능은 반드시 갖춰야 한다. data processing(ALU) data move(load, store) flow control(branch, jump) extra... 이번 포스팅에선 3가지의 instructions을 정의해 볼 것이다. 시작에 앞서 자주 나오는 궁금증에 대해 말해보겠다. Q) memory에서 값을 가져오는데 memory를 적는 부분에 왜 register 주소($)를 사용하는가? A) $2 위치에 7000번지를 넣는다고 하고 아래와 같은 코드를 적으면 $2에 10을 더하는 것은 7000에 10을 더하여 7010번지 memory에 load하는 것과 같은 의미가 된다. 이 때의 $2를 base address라고 한다. ..
[컴퓨터구조] 5. Register(레지스터)와 Memory(메모리)Introduction CPU가 CPU로써 기능을 가지려면 3 종류의 기능은 반드시 갖춰야 한다. data processing(ALU) data move(load, store) flow control(branch, jump) extra... 이번 포스팅에선 3가지의 instructions을 정의해 볼 것이다. 시작에 앞서 자주 나오는 궁금증에 대해 말해보겠다. Q) memory에서 값을 가져오는데 memory를 적는 부분에 왜 register 주소($)를 사용하는가? A) $2 위치에 7000번지를 넣는다고 하고 아래와 같은 코드를 적으면 $2에 10을 더하는 것은 7000에 10을 더하여 7010번지 memory에 load하는 것과 같은 의미가 된다. 이 때의 $2를 base address라고 한다. ..
2023.01.11 -
Introduction Jumping up a few levels of abstraction 추상화(abstraction)의 몇가지 단계에 대해서 알아볼 것이다. Architecture(아키텍쳐): 컴퓨터를 바라보는 프로그래머(혹은 software)의 관점 instruction과 연산 위치에 의해 결정됨 Microarchitecture(마이크로아키텍쳐): hardware에서 아키텍쳐를 구현하는 방식 Assembly Language 기계가 알아먹는 기본적인 명령어(0, 1로 이루어진) 하나하나를 1:1로 symbolic하게 표현하는 언어 Instruction: commands in a computer's language Instruction이란 컴퓨터의 언어에서 사용되는 명령어이다. Assembly lan..
[컴퓨터 구조] 4. MIPS instruction set(명령어 세트)Introduction Jumping up a few levels of abstraction 추상화(abstraction)의 몇가지 단계에 대해서 알아볼 것이다. Architecture(아키텍쳐): 컴퓨터를 바라보는 프로그래머(혹은 software)의 관점 instruction과 연산 위치에 의해 결정됨 Microarchitecture(마이크로아키텍쳐): hardware에서 아키텍쳐를 구현하는 방식 Assembly Language 기계가 알아먹는 기본적인 명령어(0, 1로 이루어진) 하나하나를 1:1로 symbolic하게 표현하는 언어 Instruction: commands in a computer's language Instruction이란 컴퓨터의 언어에서 사용되는 명령어이다. Assembly lan..
2023.01.11 -
Review) performance(speed): clock frequency area(cost): 이는 design에서 줄일 수 있는 part가 있고 공정(fab)에서 줄일 수 있는 part가 있는데 데이터가 많이 들어간다고 해서 문제가 되지는 않는다. 더 중요한 문제는 fab, 즉 어떤 공정을 쓰느냐이다. power(energy) = power ∝ Vdd2 * f * CL 위 3가지의 tradeoff를 잘 고려하여 부품을 만들어야 함. 성능 지표 perf.(speed) = 1 / exec_time latency(Time to execute a program) exec_time라고도 하고, throughput이라고도 하지만 당분간은 exec_time으로 정의를 할 것이다. exec_time = sec/..
[컴퓨터 구조] 3. Performance와 CPU TimeReview) performance(speed): clock frequency area(cost): 이는 design에서 줄일 수 있는 part가 있고 공정(fab)에서 줄일 수 있는 part가 있는데 데이터가 많이 들어간다고 해서 문제가 되지는 않는다. 더 중요한 문제는 fab, 즉 어떤 공정을 쓰느냐이다. power(energy) = power ∝ Vdd2 * f * CL 위 3가지의 tradeoff를 잘 고려하여 부품을 만들어야 함. 성능 지표 perf.(speed) = 1 / exec_time latency(Time to execute a program) exec_time라고도 하고, throughput이라고도 하지만 당분간은 exec_time으로 정의를 할 것이다. exec_time = sec/..
2023.01.11 -
int a, b, c main ... a = b + c 지난 시간 내용을 정리하면 다음과 같다. 선언한 데이터들이 compiler에 의해 Main memory의 data memory(중간)에 저장된다. RISC의 경우 memory에서 ALU에 바로 전달하지 않고 중간에 register file(bank)에 저장하는 과정이 있다. 프로그램 수행 과정 연산을 하기 위해서는, compiler에 의해 data b와 data c를 각각 빈 register 공간에 저장한다. register에 있던 b, c 는 ALU에 들어가 연산을 하게 되고 그 결과가 다시 register 의 빈 공간에 저장된다. 이 결과가 register 에서 다시 data memory로 전달되어 마무리 된다. 이러한 과정처럼 단순한 instr..
[컴퓨터 구조] 2. CPU와 메모리int a, b, c main ... a = b + c 지난 시간 내용을 정리하면 다음과 같다. 선언한 데이터들이 compiler에 의해 Main memory의 data memory(중간)에 저장된다. RISC의 경우 memory에서 ALU에 바로 전달하지 않고 중간에 register file(bank)에 저장하는 과정이 있다. 프로그램 수행 과정 연산을 하기 위해서는, compiler에 의해 data b와 data c를 각각 빈 register 공간에 저장한다. register에 있던 b, c 는 ALU에 들어가 연산을 하게 되고 그 결과가 다시 register 의 빈 공간에 저장된다. 이 결과가 register 에서 다시 data memory로 전달되어 마무리 된다. 이러한 과정처럼 단순한 instr..
2023.01.11