CS/Computer Architecture 20

[컴퓨터구조] 6-4. Assembly Programs - 2

오늘은 어셈블리 언어로 다룬 프로그램 중, Subroutines와 I/O Programming에 대해서 살펴봅시다. Subroutines 우리는 계속 반복되는 작업들을 subroutine으로 둬서, 사용하기 편하게 합니다. 아래는 left shift를 4번하는 연산 즉, AC의 값에 16을 곱하는 연산이 되겠습니다. 이러한 식으로 subroutines를 돌고 나올 수 있습니다. X는 16진수로 1234이기 때문에 CIL을 4번 해주면 4비트 즉, 1바이트가 옮겨지므로 2340이 되고 같은 원리로 Y도 3210이 됨을 알 수 있습니다. I/O Programming 과거 컴퓨터는 I/O의 기능을 수행하기 위해 매번 CPU가 디바이스 장치에 대해서 확인을 하는 방식을 이용했습니다. 하지만, 이 방식은 너무 비..

[컴퓨터구조] 6-3. Assembly Programs -1

오늘은 어셈블리 언어로 작성된 프로그램들을 살펴봅시다. 그 중에서 오늘은 Loops, Multiplication, Arithmetic, Logic operation에 대해서 다뤄봅니다. Program Loops 우리는 보통 같은 작업이지만 데이터가 다른 것들을 반복할 때, loop를 사용합니다. 그러면, 우리는 어셈블리 언어로 어떻게 작성할까요?? 아래의 예시를 보시죠. int[] A = new int[]; int sum = 0; for(int i=0; i

[컴퓨터구조] 6-2. The Assembler

오늘은 어셈블러에 대해서 알아보겠습니다!!! Assembler 어셈블러는 어셈블리 코드를 목적코드로 변환하는 것을 의미합니다. 실제로, 저번에 보았던 어셈블리 언어의 예시를 다시 기억해봅시다. 이 어셈블리 언어를 목적코드로 바꾸면 아래와 같은 형태로 변환하게 됩니다. 사실 어셈블러는, 이러한 것을 바꾸는데 아스키 표를 이용합니다. 아마 어떠한 프로그래밍 언어를 공부하더라도 어느정도 들어봤을 친숙한 이름이라고 생각합니다. 저희는 지금 16비트 컴퓨터를 설계하고 있습니다. 따라서, 8비트로 표시되는 아스키값을 총 3개로 사용할 수 있습니다. 왜냐하면 맨 앞의 4비트로는 MRI인지 non-MRI인지를 확인해야하기 때문이죠. 여기서 보면, INC와 같은 opcode는 AC의 값을 increment하는 것이므로,..

[컴퓨터구조] 6-1. Assembly Language

오늘은 어셈블리 언어에 대해서 배워보겠습니다. Assembly Language 어셈블리 언어는 저급 언어에 속합니다. 즉, 파이썬같이 인간이 알 수 있는 고급언어와 다르게 기계가 알 수 있도록 쓰이는 언어를 의미합니다. 어셈블리 언어는 3가지 filed로 구성됩니다. label field : 비어있거나, symbolic address를 나타냅니다. Symbolic Address는 아래에서 다룹니다. Instruction field : machine instruction이나 pseudo instruction을 나타냅니다. Comment filed : 공란이거나 주석을 작성합니다. 이 세가지 filed를 알아보기 전, Symbolic Address에 대해서 알아봅시다. Symbolic Address는 마치 ..

[컴퓨터구조] 5-6. Complete Computer Description

자 이제, 5장에서 배운 것들을 정리해보겠습니다. Complete Computer Design 이번 5장에서, 우리는 컴퓨터의 구조를 구성하는 3가지 요소에 대해서 배웠습니다. Instruction set 내부 Register Control Unit 이 세가지가 어떻게 맞물려 작용하는지, 깔끔하게 나타낸 그림을 아래에 첨부했습니다. 모든 Instruction은 T0에 일어납니다. 어떤 Instruction일지라도, CPU는 R의 값을 확인하고, Interrrupt의 유무를 파악합니다. 만약 Interrupt가 발생했다면, Interrupt에 대한 Instruction을 수행하기 위해, Register의 값을 다시 세팅하고 T0부터 시작합니다. Interrupt가 발생하지 않았으면, fetch, decod..

[컴퓨터구조] 5-5.3. Instruction Cycle(register-reference, I/O Instruction)

5-5.2에서는 Instruction Cycle 중 Memory-reference 에 대해서 알아보았습니다. 그래서 오늘은 Register-reference와 I/O instruction에 대해서 다뤄보겠습니다. Register-reference Instruction register-reference instruction은 총 12가지의 연산으로 이루어져있었습니다. 설명에도 나와있지만 통상 우리는 D7I'T3를 r로 치환하여 사용합니다. (T3 자체가 결국 세부 연산으로 나눠지는 Timing이기 때문이죠, D7, I도 마찬가지로 세부 연산을 나눌 수 있는 기준입니다.) B0 - B11은 각 비트의 자리수가 1인지 아닌지를 판단하는 것입니다. 만약 B11이라면 11번째 비트가 1인지 아닌지를 보는 것이죠...

[컴퓨터구조] 5-5.2. Instruction Cycle(Memory-reference instruction)

오늘은 Instruction Cycle 중에서 Memory-reference Instruction에 대해 다뤄보겠습니다. 우리는 5-2 장에서 Instruction 중 memory-reference Instruction이 있고, 그 종류는 총 7가지라는 것을 배웠습니다. 그럼 이제, 그 7가지 과정에 대해서 조금 더 자세하게 Instruciton Cycle로 알아보겠습니다. 위의 표의 과정을 RTL로 표시한 그림도 같이 확인해봅시다. 확실히 이해가 되시나요?? 무엇보다도 알아야할 것은, 각 operation의 종료 Timing이 다르다는 것입니다. 따라서 어떠한 연산은 조금 빨리 끝나고, 어떠한 연산은 조금 오래 걸린다는 뜻이겠죠. 각 연산에서 특정 Timing마다 진행되는 것은 저렇게 정해져있습니다. ..

[컴퓨터구조] 5-5.1. Instruction Cycle

오늘은 Instruction cycle에 대해서 다뤄보겠습니다. Instruction cycle은 아래와 같은 subcycle로 나누어집니다. 메모리로부터 instruciton을 fetch instruction을 decode indirect addressing mode일 때는 메모리로부터 유효한 주소를 read instruction을 execute 이번 글에서는 fetch와 decode에 대해서 조금 더 자세히 알아보고자 합니다. Fetch and Decode 이전 글에서 우리는 Timing에 대한 이야기를 한 적이 있습니다. 실제로, 이 Timing에 수행되는 연산은 어느정도 정해져있고, 특히나 fetch와 decode 부분에서는 더욱 그렇습니다. Fetch fetch는 기능을 수행하는데에 총 2 cl..

[컴퓨터구조] 5-4. Timing and Control

오늘은 컴퓨터 구조의 세가지 요소 중 마지막, Control Unit에 대해서 다뤄봅니다. Timing and Control 지금까지 설명한 모든 개념은 우리가 쓰는 일반적인 컴퓨터가 아닌 Mano가 설계한 16비트 컴퓨터입니다. Basic Computer라고 부르죠. 이 Basic Computer에서 모든 레지스터는 이를 작동할 수 있게 조절하는 timing이 존재합니다. 이러한 timing이 주어질 때마다, 레지스터는 우리가 설계한 대로 작동합니다. 이 timing은 master clock generator가 제공하는 clock pulse에 의해 control 되죠. 흔히 우리가 부르는 1GHz와 같은 단위가 timing에 사용됩니다. 1GHz는 1초에 10억번 clock됩니다. clock이란 clo..

[컴퓨터구조] 5-3. Computer Registers

컴퓨터구조는 총 3가지로 이루어져있습니다. Instruction Codes 내부 Register Control Unit 저번 글까지 해서, Instruction Codes에 대해 마쳤습니다. 오늘은 내부 Register를 알아봅시다. mano가 설계한 16비트 컴퓨터에는 아래와 같은 레지스터들이 들어있다. 총 8개의 레지스터로 구성되어 있다. PC(Program Counter) : 다음에 실행할 instruction의 주소를 기억한다. AR(Address Register) : 피연산자의 주소를 기억한다. 전에 다뤘던 Instruction Format을 따라 저장된다. IR(Instruction Register) : 현재 실행되는 instruction이 저장된다. TR(Temper Register) : 임..