Pieline Register 파이프라인은 각 스테이지에서 나온 값을 저장할 레지스터가 필요. 그래서 각 스테이지 사이에 레지스터를 둠 Single-clock-cycle pipeline diagram 파이프라인이 싱글 사이클일 때, 특정 사이클을 보여줄 때 사용 예시) Load 명령어의 파이프라인 기존 Mips의 Pipe에서 Load 명령어를 실행한다면 WB스테이지에서 값을 가져온 후 레지스터로 되돌아온 후, 주소에 값을 저장하게 된다. 하지만 파이프라인을 사용할 시 해당 레지스터에는 다른 명령어의 주소값이 들어가 있게 되므로, 이를 해결하기 위해 load의 datapath(푸른 선)를 추가하여 문제를 해결. dataPath를 추가함으로써 단계가 진행될 때, 같이 데이터가 넘어가는 방식 Multi-clo..
Hazard란? 다음 사이클에 다음 명령어를 실행하지 못하는 상태 Structure hazard 어떤 명령어를 실행하기 위한 리소스가 이미 사용 중이어서 실행하지 못하는 상태 예시) 싱글 메모리를 사용한다고 가정. Load/Store 명령어가 데이터를 가지고 오려고 할 때 해당 메모리에 액세스 함. 그 후 다음 명령어를 가지고 오려고 메모리에 액세스 하려고 하지만, 이전 명령어의 데이터 Load로 인해 대기를 해야 함. 즉 프로세서의 구조에 의해 발생하는 hazard므로, 이를 structure hazard라고 함. 예시에서는 프로세서가 싱글 메모리 구조로 인해 hazard가 발생 Data hazard data dependency에 의해 발생. 이전 명령어의 데이터(결과값)를 사용해야 하는데, 아직 작업..
Pipe Line 연산을 순차적으로 수행하는 대신, 여러 단계로 분리하여 동시에 처리함으로써 처리 속도를 향상하는 기술. 프로세서의 작업처리 방식을 최적화하여 전체 시스템 성능을 향상시킬 수 있음 Pipelined laundry 중복하여 실행. 병렬화가 성능을 향상 세탁을 하는 순서가 세탁기 → 건조기 → 접기 → 옷장 순서가 있고 이 작업을 4번 수행해야 한다면 순차적으로 실행(Single-cycle)할 시 위 그림과 같이 2AM에 종료되지만, 각 단계를 동시에 수행함으로써 더 빨리 작업을 끝낼 수 있음 MIPS Pipeline 간단하게 5단계로 나눔. (실제로는 훨씬 더 복잡) IF: 명령어를 메모리로부터 가져옴 ID: 명령어 decode, 레지스터 읽기 EX: 연산 수행 또는 주소 계산 MEM: 메..
명령어의 opcode와 funct를 카르노맵을 이용해서 ALU control을 생성 모든 Control Signal은 명령어를 통해 만들어 짐 DataPath With Control 메모리에서 명령어를 읽음 명령어의 상위 6비트가 Control의 input으로 들어감 그 중 ALUOP는 ALU Control의 input으로 들어 감 명령어의 하위 6비트(funct)가 ALU Control의 input으로 들어 감 ALU Control에서 ALUOP와 funct가 조합되어 ALUControl (4bit)이 조합되어 ALU의 input에 들어감 Performance Issues clock period는 delay가 가장 긴 명령어에 의해 결정 됨 가장 delay가 긴 명령어는 load 명령어 Instruct..
명령어 실행 과정 PC값의 메모리에서 명령어를 읽어 옴 레지스터 액세스 명령어에 따라 ALU 연산 또는 메모리로부터 load/ store 작업 수행, 브랜치 명령어 등등 PC에 +4 또는 타켓 주소 입력 CPU 구조 Control 내부 컴포넌트를 제어하는 모듈 예시: Registers에서 값을 쓸때는 RegWrite가 Control에 의해 1이 되어서 write 작업을 수행 Logic Design Basic (논리 회로 기초) Combinational Element (Logic) 데이터에의해 값이 결정 input에 의해 output이 결정 예시: Adder, Multiplier 등등 State(sequential) Element 어떤 정보를 저장 예시: 레지스터, 캐시, 메모리, D램 등등 Registe..
컴퓨터에서는 10진수를 표현할 때 보통 Science 표기법을 따름 -2.34 * 10^56 같이 소수 앞자리가 절댓값 1~9 사이여야 함. 따라서 2진수로 실수를 포현하면 정수자리는 항상 1이어야 함. IEEE 표준 Floating-Point 포맷 제일 첫 비트인 S비트는 sign비트. S가 0이면 양수, 1이면 음수 Fraction: Science 표기법을 따른 실수(에시: -2.34 * 10^56)에서 앞 실수 부분에 1을 뺀 값 Exponent: 지수 부분에 Bias를 더한 값. 32비트는 Bias값이 127, 64비트는 1023 32비트 실수값 범위 00000000과 11111111은 0과 1이므로 제외 가장 작은 값 Exponent: 00000001 → 실제 exponent = -126 Fra..