728x90
반응형

Computer Science 77

[Computer Architecture] Exceptions

Exception unscheduled event that disrupt program excution(프로그램의 실행을 멈춤) User program의 Instruction을 수행하다가 문제사항이 생기게 되면 그 문제를 해결할 수 있는 OS 안에 위치하는 Exception handler을 이용하기 위해 OS에게 해결해달라고 소프트웨어에게 알리는 것입니다. 즉, 하드웨어가 소프트웨어에게 알리고 소프트웨어가 OS에게 handling 해달라고 부탁하게 됩니다. Exception 처리가 끝난 뒤에는 다시 원래 지점으로 돌아와서 진행하게 됩니다. (returns control to user) Exception 종류 Interrupts CPU 바깥의 event로 인해서 일어나는 Exception (caused b..

[Computer Architecture] Hazard Detection

Hazard Detection 각 파이프라인 사이 위치하는 정보를 전달하는 파이프라인 레지스터에서 hazard를 감지 Hazard 유형 EX/MEM단계의 Rd 레지스터와 ID/EX 단계의 Rs1 레지스터가 같은 경우 EX/MEM단계의 Rd 레지스터와 ID/EX 단계의 Rs2 레지스터가 같은 경우 MEM/WB단계의 Rd 레지스터와 ID/EX 단계의 Rs1 레지스터가 같은 경우 MEM/WB단계의 Rd 레지스터와 ID/EX 단계의 Rs2 레지스터가 같은 경우 문제 앞선 Instruction이 register에 write를 하지 않은 명령어라면 forwarding을 하면 안됩니다. x0는 항상 0으로 고정되어 있기에 어떠한 값도 안써지기 때문에 x0에 대한 계산에 대해 nonzero result value를 f..

[Computer Architecture] Pipeline Hazards

Pipeline Hazards Structural Hazards 동시에 두 가지 다른 방식으로 같은 자원을 사용하려고 시도하는 경우 발생합니다. Data Hazards 항목을 준비되기 전에 사용하려고 시도하는 경우 발생 명령어가 파이프라인에 있으면서 아직 처리되지 않은 이전 명령어의 결과에 의존하는 경우 앞쪽의 Instruction이 결과가 나오지 않았는데 뒤에 따라오는 명령어가 그 레지스터 값을 얻으려고 할 때 발생하는 hazards -> data dependency 발생 Control Hazards 조건이 평가되기 전에 결정을 내리려고 시도하는 경우 발생 branch instructions branch 결과가 나오기 전에는 어떤 instruction을 fetch 해야하는지 알 수 없습니다. Hazar..

[Computer Architecture] Enhancing Performance with Pipelining

Pipelining 복잡한 프로세스를 여러 단계로 나누어 각 단계가 병렬적으로 동작할 수 있도록 함으로써, 전체적인 처리 속도를 향상시키는 방법입니다. 파이프라인 기술은 일련의 데이터 처리 단계를 마치 공장의 조립 라인처럼 연속적으로 배치하여, 한 번에 하나의 명령어만 처리하는 대신 여러 명령어가 동시에 각기 다른 처리 단계를 수행할 수 있도록 합니다. 크게 5가지 동작으로 Fetch, Decode, Execute, Memory Access, Write Back 나눌 수 있고, 하나의 명령어가 Write Back 단계까지 끝나고 다음 명령어를 시작하는 것이 아니라 각 단계마다 일을 배치하는 방식으로 한 명령어가 Fetch가 끝나고 Decode 단계로 들어가면 Fetch 단계에는 그 다음 명령어를 실행합니..

[Computer Architecture] Datapath

Datapath 컴퓨터 아키텍처에서 처리 장치 내부에서 데이터가 이동하는 경로 프로세서 내부의 구성요소들 사이에서 데이터가 이동하는 방식과 처리되는 방식을 포함 레지스터, 산술 논리 장치(ALU), 제어 장치 등으로 구성 Sequential Elements 데이터를 보관하는 용도로 사용 Register 저장될 값을 업데이트하는 시점을 결정하기 위해 clock signal을 이용 Edge-triggered: Clk(clock 신호)이 0에서 1로 바뀌는 순간 내부의 값이 update 입력값이 바뀔 때가 아니라, Clock 신호가 0에서 1로 바뀌는 시점의 입력값이 output에 반영됩니다. 즉, Clock edge에서 입력값이 무엇인가에 따라서 sequential element 값이 변경되고, 그에 따라 ..

[Computer Architecture] Clocking Methodology

Clocking Methodology Clock 신호의 정확한 타이밍에 의존하여 데이터를 변환하는 과정 Clock signal의 변화는 'Rising Edge'와 'Falling Edge'라고 불리우는 두 지점을 통해 이루어집니다. Rising Edge: 신호가 낮은 수준에서 높은 수준으로 변할 때 Falling Edge: 신호가 높은 수준에서 낮은 수준으로 변할 때 Rising Edge와 Falling Edge에서만 값을 읽고 쓰는 동작이 발생할 수 있습니다. Combinational logic은 clock cycles 동안에 데이터를 변환합니다. 즉, 어떤 Input이 주어지면 그것을 기반으로 여러 logic gate가 동작되어 output 값이 결정되는데 이것이 clock cycles 동안 이루어지..

[Computer Architecture] Division for computers

Division 알고리즘 partial remainder > divisor -> quotient bit = 1, remanider = remainder - divisor partial remainder quotient bit = 0 다음 비트로 이동 Divisor는 처음에는 맨 왼쪽 값을 쓰다가 점점 오른쪽으로 이동하면서 빼야하기 때문에 128bit 뺀 결과가 양수면 Quotient에 1을 넣고, 음수면 1을 넣는다. 왼쪽으로 shift하는데, 음수가 나왔을 때는 다시 원상 복귀한다. N-bit Quotient와 Remainder를 처리하기 위해서는 N+1번 반복해야 한다. (multiplication은 N번 반복이었음) Iter 0 3비트 연산이기에 Remainder, Divio..

[Computer Architecture] Multiplication for computers

Integer Multiplication m bits x n bits -> 계산결과는 (m+n) bit Binary rules 0이면 0을 쓴다. (0 x multiplicand) 1이면 multiplicand를 그대로 쓴다. (1 x multiplicand) 1 clock per step -> ~ 200 clocks per multiply add보다 multiply는 frequency가 낮다. multiply는 Amdahl's law에 따르면 uncommon case이다. Multiplication - 1 Multiplier를 오른쪽으로 shift해가면서 하드웨어는 Multiplier의 가장 오른쪽 bit를 하나씩 검사하고 그 값에 따라 제어합니다. ex) Multiplier 1001 -> 가장 맨 오..

[Computer Architecture] RISC-V overflow

Overflow 한정된 컴퓨터 자원으로 표현하기에는 너무 큰(너무 작은) 결과값이 나왔을 때 발생 양수와 음수를 더하는 과정에서는 오버플로우가 발생하지 않습니다. 같은 부호를 가지는 수끼리의 뺄셈에서는 오버플로우가 발생하지 않습니다.(양수 빼기 양수, 음수 빼기 음수) * 양수든 음수든 해당 자원의 크기만큼만 표현할 수 있기에 예를 들어, 양수 빼기 양수해서 엄청나게 작은 음수가 나와서 오버플로우가 발생하는 상황은 나오지 않음. 범위 안의 양수 - 양수 이기 때문입니다. A - B일 때, A가 0이면 오버플로우가 발생할 수 있습니다. A - B = -B인데 만약 signed 4bit 연산이었다고하면 -8~7까지 표현가능하기 때문에 A = 0, B = -8 이었다고하면 A - B = 8이 되므로 signe..

[Computer Architecture] Arithmetic Logic Unit(ALU, 산술 논리 장치)

ALU 구조 inputs 32-bit input A 32-bit input B 2-bit operation selector S : ALU가 할 수 있는 동작 중 무슨 동작을 할지 선택 총 4개의 동작으로 이루어져있기에 2bit로 표현 가능 Outputs 32-bit result R 동작 (S값에 따라서) S가 0b00일 때, R = A + B (addition) S가 0b01일 때, R = A & B (bitwise AND) S가 0b10일 때, R = A | B (bitwise OR) S가 0b11일 때, R = A ^ B (bitwise XOR) ALU Design Splitting Bits 각 bit를 split해서 별도의 ALU Gate에 넣고 나중에 다시 recombine하는 방식으로 디자인함으..

728x90
반응형