본문 바로가기

CS/컴퓨터 구조

(10)
메모리 메모리 계층구조 -시간적 지역성(Temporal locality): 최근 참조된 명령어/데이터가 다시 참조되는 경향(반복문 for의 i) -공간적 지역성(Spatial locality): 최근 참조된 명령어/데이터의 이웃 부분이 참조되는 경향(배열, 순차적 실행) -원리: 계층에 데이터가 있음(hit), 없다면(miss) 다음 계층에서 읽어와서 적재 캐시 -CPU와 메모리 속도차를 줄이기 위해 사용 -여러 단계 사용
파이프 라이닝 파이프 라이닝 - 명령어의 데이터 경로를 세분화, 각기 다른 세부 단계를 동시에 수행 -> 여러 명령어 중첩 수행 가능 해저드(결과가 틀림) -구조적 해저드(하드웨어 동시요구 -> 충돌) -데이터 해저드(다음단계에 필요한 데이터 준비 X) -RAR(Read After Read): 문제 없음 -RAW(Read After Write): 선행명령어가 쓰기전에 읽는 문제 -WAR(Write After Read), WAW(Write After Write): 선행명령어가 읽거나 쓰기전에 갱신하는 문제 -명령어 해저드(주로 분기 명령어) 해저드 해결방법 -구조적 해저드 -명령어/데이터 메모리(캐쉬)를 분리하드웨어 추가/분할, 예약표, 입출력포트의 다중화 -데이터 헤저드 -포워딩(forwarding): ALU 출력이 ..
데이터 경로(2) 단일 사이클 vs 다중 사이클 -단일 사이클은 가장 긴 경로를 클락 사이클 시간으로 함(CPI는 무조건 1) -다중 사이클은 각 부분의 경로시간중에 가장 긴 시간을 클락 사이클 시간으로함 -파이프라이닝 기법을 위해 다중사이클을 사용
데이터 경로(1) 데이터 경로 -CPU가 명령어 실행을 위해 데이터를 경유시키는 경로 -단일 사이클 방식: 한 명령어당 한 사이클(하드웨어 1번씩만 사용가능) -다중 사이클 방식: 한 명령어에 여러개의 사이클(하드웨어 한번이상 사용가능) 단일 사이클 방식 -R형식(1): addi $rd, $rs, $rt // $rd
데이터 표현과 연산 2의 보수를 쓰는 이유는? -다른 부호의 덧셈에서 뺄셈이 필요없음(덧셈으로 뺄셈까지 가능) -한개의 0으로 혼동(순환자리올림) 없음 cf. 1의 보수는 +0과 -0이 있음 -부호 확장 용이(MSB만 확장하면됨) 2의 보수에 대한 덧셈/뺄셈 연산 -두 수의 부호가 다를때: 자리 올림수 무시하고 10진수 연산하듯이 더한다. (무조건 범위안이기 때문) -두 수의 부호가 같을때 -오버플로우(V)가 발생하지 않았을때는 위 과정과 동일 -오버플로우(V)가 발생시 계산 불가(MSB 기준 Cin ⊕ Cout = 1이면 오버플로우(V) 발생) 덧셈/뺄셈기 구조
주소 지정 방식 주소 지정 방식 0단계 주소 지정 방식 1단계 주소 지정 방식 2단계 주소 지정 방식 0단계 주소 지정 방식 -즉시 주소 지정 방식(immediate addressing mode) -명령어 피연산자 필드에 실제 데이터가 포함 묵시적 주소 지정 방식(implied addressing mode) -누산기나 스택에 데이터 존재 1단계 주소 지정 방식 -레지스터 주소 지정 방식(Register addressing mode) -직접 주소 지정 방식(Direct addressing mode) 2단계 주소 지정 방식 -레지스터 간접 주소 지정 방식(Register-indirect addressing mode) -메모리 간접 주소 지정 방식(Indirect addressing mode) -변위 주소 지정 방식(Indi..
명령어 집합 분류 컴퓨터 구조 종류 스택(Stack) 컴퓨터: CPU 내의 스택을 데이터 저장소로 사용 누산기(Accumulator) 컴퓨터: ACC 레지스터를 연산관련 유일한 데이터 저장소로 사용 범용 레지스터(General Purpose R) 컴퓨터: 다수의 레지스터 각 종류별로 명령어 인출 트래픽과 데이터 이동 트래픽의 합을 비교
CPU의 역할과 구성 CPU가 수행하는 일 명령어 인출과 해독(Fetch & Decode) 데이터 처리(Data Process) 데이터 인출(Data Load) 데이터 저장(Data Store) CPU의 구성 -ALU: 산술, 연산모듈 -레지스터(Register): CPU안의 기억장치 -Program counter: 다음 명령어 주소 -Instruction R: 가장 최근 명령어 -ACCumulator(누산기): 데이터 일시적 보관 -Memory Address R: 접근하려는 메모리 주소 보관 -Memory Buffer R: 읽거나 저장할 데이터 보관 -제어장치 -내부 버스(Internal Bus)