본문 바로가기

2-2 학기/Computer Organization10

[컴퓨터구조] Lec22 The Basic of Caches ✅Cache : 자주 쓰이는 데이터를 저장하며, 매우 빠른 Access time을 지원하는 컴퓨터 메모리이다. Cache를 찾는 과정을 소프트웨어적으로 해결 불가능 하드웨어적으로 해결을 해야 함 cache 메모리가 더 작기 때문에 메인 메모리에서 캐시 메모리로 빨리 바꿔줘야 함 → 데이터를 빨리 보내는 방법 (address mapping) Q. 데이터가 캐시 내에 있는지 어떻게 알 수 있는가? 🤔 Q. 알 수 있다면 어떻게 찾을 수 있는가? 🤔 각 워드가 캐시 내의 딱 한 장소에만 있을 수 있다면 워드가 캐시 내에 있는지 없는지를 바로 알 수 있다. 각 메모리 워드에 캐시 내의 위치를 할당하는 가장 간단한 방법은 그 워드의 메모리 주소를 이용하는 것이다. ☑️Direct Mapping 모든 메모리 loc.. 2023. 12. 19.
[컴퓨터구조] Lec19 Control Hazards 📢이전까지는 산술 연산과 데이터 전송이 관련된 헤저드였다. 이제는 분기와 관련된 파이프라이닝 헤저드가 있다. 원래 분기를 할 것인가 말 것인가에 대한 결정은 MEM에서 이루어진다. 그런데 이제 인출한 명령어게 늦게 결정되는 문제를 control hazard라고 한다. ✅Control Hazard 브랜치 헤저드 (브랜치 명령어 떄문에 발생해서) 해치된 명령어가 필요한 명령어가 아니기 때문에 해당 클럭 사이클에 실행할 수 없을 때 발생한다. * 명령어의 왼쪽에 있는 숫자들(40, 41,,)은 명령어 주소이다. 분기 명령어는 분기할 것인지를 MEM에서 결정을 한다. (위 표의 경우 CC4) 근데 다음 명령어가 PC+4이다. 그래서 이러한 CONTROL HAZARD가 발생한다. 📌Solution 데이터 해저드 .. 2023. 12. 19.
[컴퓨터구조] Lec17, Lec18 Data Hazards ✅데이터 종속성 마지막 네 명령어 모두 레지스터 $2에 있는 첫 번째 명령어 결과에 종속적이다. 첫 번째 명령어는 $2에 쓰고 뒤에 나오는 모든 명령어는 $2를 읽는다. 같은 클럭 사이클 내에서 읽기와 쓰기가 이루어지면 쓰기가 먼저 끝나서 방금 쓴 값을 읽을 수 있다. 데이터 의존성의 조건은 목적지에 있는 레지스터를 다른 명령어가 쓸 때이다 붙어있거나 한 칸 떨어져 있으면 헤저드 발생, 그 외에는 디펜던스라고 하더라도 헤저드가 발생하지 않는다. 그렇다면 이 프로그램이 파이프라인에서 어떻게 수행될까?🤔 위 표를 보았을 때 위에서 아래로 내려오는 파란 선은 종속성을 나타낸다. 그 중에서 시간상 후방으로 가는 것들이 파이프 데이터 해저드인 것이다. 즉, $2의 올바른 값을 읽을 수 있는 건 add와 sw뿐이다.. 2023. 12. 19.
[컴퓨터구조] Lec16 Pipelined Datapath and Control 들어가기 전에,, 데이터패스를 5개씩 분리해서 하나씩 clock cycle 부여해서 명령어가 돌아가게 했음 각 부분은 명령어 실행 단계에 따라서 다음과 같이 이름이 붙여진다.IF 명령어 인출 ID 명령어 해독 및 레지스터 파일 읽기 EX 실행 또는 주소 계산 MEM 데이터 메모리 접근 WB 쓰기 (Write-back) 동일한 시간에 동일하게 끝내게 하는 게 파이프라인이었다. 앞서 보았듯이 일반적으로 정보 흐름은 왼쪽에서 오른쪽으로 진행된다. 하지만 이 흐름 중 두 가지 예외가 있다. WB 단계: 결과를 Reg파일에 쓰기 (역류) ⇒ 데이터 해저드 유발 PC의 다음 값 설정: 증가된 PC값과 MEM 단계의 분기 주소 중에서 선택 ⇒ 제어 해저드 유발 📌lw Instruction Stage 이제부턴 색칠이 .. 2023. 12. 19.
[컴퓨터구조] Lec15 Pipelining ✅파이프라니잉 : 여러 명령어가 중첩되어 실행되는 구현 기술 ☑️파이프라닝 예시 위의 그림은 네 묶음의 빨래를 처리하는데 8시간이 걸리지만 아래 그림은 빨래를 3.5시간만에 했죠?? 아래가 바로 파이프라인의 단계라고 볼 수 있습니다. 일감 하나를 끝내는 데 걸리는 시간을 단축하지는 못하지만, 해야 할 빨래가 많을 경우 처리량이 증가하므로 일을 끝내는 데 걸리는 전체 시간을 단축시켰습니다. 명령어 실행을 파이프라이닝 한 프로세서에도 같은 원리가 적용된다. 메모리에서 명령어를 가져온다. 명령어를 해독하는 동시에 레지스터를 읽는다. MIPS 명령어는 형식이 규칙적이므로 읽기와 해독이 동시에 일어날 수 있다. 연산을 수행하거나 주소를 계산한다. 데이터 메모리에 있는 피연산자에 접근한다. 결과값을 레지스터에 쓴다.. 2023. 11. 1.
[컴퓨터구조] Lec12 Datapath Design ☑️기본적인 MIPS 구현 메모리 참조 명렁어 (lw, sw) 산술-논리 명렁어 (add, sub, AND, OR, slt) 분기 명령어 (beq, j) 모든 명령어의 처음 두 단계는 다 같다. 1️⃣STEP1 명령어 인출 (instruction fetch) 프로그램 카운터(PC)를 프로그램이 저장되어 있는 메모리로 보낸다. 메모리에서 명령어를 가져온다. 2️⃣STEP2 명령어 해독 (instruction decoding) 레지스터 읽기 (register prefetch) 3️⃣STEP3 (명령어 종류에 따라 달라짐) 메모리 참조 명령어 ⇒ 주소 계산을 위해 ALU 사용 산술-논리 명령어 ⇒ 연산 수행을 위해 ALU 사용 분기 명령어 ⇒ 비교하기 위해 ALU 사용 j 명령어를 제외한 모든 명령어가 ALU.. 2023. 10. 30.
[컴퓨터구조] Lec10 Floating Point ☑️부동소수점 0.0000000001 또는 1.0 x 10^(-9) 3,155,760,999 또는 3.15576 x 10^9 위 두 수의 표현 방식은 Sicentific-notation(과학적 표기법)이라고 불린다. 이 방식에서 소수점의 왼쪽에는 한 자릿수만 있다. 과학적 표기법으로 표현된 숫자 중에서 맨 앞에 0이 나오지 않는 것을 normalized number(정규화된 수)라고 부른다. 1.0 x 10^9 ⇒ 정규화된 과학적 표기법 (O) 0.1 x 10^(-8) ⇒ 정규화된 과학적 표기법 (X) 위의 예시는 전부 십진수였는데, 이진수 또한 과학적 표기법으로 작성할 수 있다. 1.0 x 2^(-1) 이진수를 정규화된 형태로 표현하기 위해서는 소수점 왼쪽에 0 아닌 숫자가 한 자리만 나타나게 숫자를 .. 2023. 10. 30.
[컴퓨터구조] Lec8 Multiplication Multiplication 첫 번째 피연산자는 multiplicand(피승수)라 부르고, 두 번째 피연산자는 multiplier(승수)라고 부른다. 💡multiplier가 1이면 multiplicand를 더하고 multiplier가 0이면 0을 더한다. (즉, 덧셈을 하지 않는다.) 1️⃣곱셈 하드웨어 매 단계마다 multiplicand를 왼쪽으로 한 자리씩 이동시키고 필요하면 중간 결과에 더해주는 식으로 계산되어야 한다. * 32비트 muliplicand가 왼쪽으로 32번 이동해야 하기 때문에 64비트 레지스터가 필요한 것이다. 2️⃣Second version 하드웨어 첫 번째 하드웨어와의 다른 점은 multiplicand 레지스터, multiplier 레지스터, ALU 전부 32비트이고, 곱 레지스터.. 2023. 10. 30.
[컴퓨터구조] Lecture 4 Machine Instructions 명령어의 컴퓨터 내부 표현 거의 모든 명령어가 레지스터를 사용하기 때문에 레지스터 이름을 숫자로 매핑하는 규칙이 있어야 하는데 MIPS에서는 레지스터 $s0에서 $s7까지는 레지스터 번호 16에서 23번까지로, $t0에서 $t7까지는 번호 8에서 15까지로 매핑한다. 명령어의 각 부분을 필드(field)라고 부른다! 😍 R(register) 타입 명령어 op: 명령어가 실행할 연산의 종류 rs, rt: 첫 번째와 두 번째 근원지 피연산자 레지스터 rd: 목적지 레지스터 shamt: 자리이동 양 funct: op 필드에서 연산의 종류를 표시하고 funct 필드에서는 그 중의 한 연산을 구체적으로 지정 I(immediate) 타입 명령어 I 타입은 수치 연산과 데이터 전송 명령어에서 사용되며 그 모양은 위와.. 2023. 9. 30.
[컴퓨터구조] Lecture 3 MIPS Instructions 명령어: 컴퓨터 언어의 단어에 해당, 컴퓨터가 실행할 수 있는 프로그램의 최소 단위 MIPS의 산술 연산은 레지스터에서만 실행되므로 메모리와 레지스터 간에 데이터를 주고 받는 명렁어가 있어야 한다. 이런 명령어를 데이터 전송 명렁어라고 한다. 레지스터: 프로세서 데이터패스에 있는 소규모의 데이터 저장장소이다. MPS 산술 명령어의 피연산자는 레지스터로 제한되어 있다. 💡MIPS 레지스터는 32개($0 ~ $31)이다! 💡각 레지스터의 크기는 32비트, 1워드이다! 변수에 해당하는 레지스터는 $s0, $s1, ... $s7이고 임시 레지스터는 $t0, $t1, ... $t9로 표현한다 메모리 메모리 주소: 메모리 배열 내에서 특정 데이터 요소의 위치를 표시하는 데 사용하는 값이다. 💡 레지스터 개수보다 훨.. 2023. 9. 30.