1. 개요 ¶
- 컴퓨터시스템 및 어셈블리어를 awesome하게 가르치는 튜터링?이다.
- 15년 넘게 중앙대에서 어셈블리 과목을 강의하시는 그분의 수업을
다른 사람이 노트필기하는법을 배우고있을때빠르게 훑어보자
???: 야생은 정말 어썸할거야!
3. 진행 상황 ¶
- 2019.3.19
- 배경 지식(?) 및 1,2단원 정리
- 현대 컴퓨터의 대부분은 폰 노이만 구조를 따르고 있음
- 프로세서(ALU,레지스터), 컨트롤 유닛(CU), 메모리(RAM), 외부 대용량 저장소(HDD,SSD), I/O
- 프로세서(ALU,레지스터), 컨트롤 유닛(CU), 메모리(RAM), 외부 대용량 저장소(HDD,SSD), I/O
- 컴퓨터 살 때 뭐 사죠?
- CPU, RAM, 그래픽카드, 모니터/마우스/키보드, 하드디스크, SSD 등등
- 기본적인 구조인 프로세서 <-> 메모리를 어떻게 구현했는지
- CPU, RAM, 그래픽카드, 모니터/마우스/키보드, 하드디스크, SSD 등등
- 컴퓨터 구조에 대한 간단한 설명
- CPU,Memory, I/O Devices가 있고 각각이 Data bus, Control Bus, Address Bus가 연결하고 있음
- CPU,Memory, I/O Devices가 있고 각각이 Data bus, Control Bus, Address Bus가 연결하고 있음
- 메모리 계층
- (레지스터) -> 캐시 -> 메인 메모리(RAM) -> 보조 메모리(HDD,SSD)
- (레지스터) -> 캐시 -> 메인 메모리(RAM) -> 보조 메모리(HDD,SSD)
- 명령어 실행 과정
- (명령어 인출 -> 실행) 반복한다
- 파이프라이닝이나 인터럽트 등의 이유로 여러 과정이 추가되거나 과정이 나눠질 수 있지만, 기본적으로 이렇다
- (명령어 인출 -> 실행) 반복한다
- 현대 컴퓨터의 대부분은 폰 노이만 구조를 따르고 있음
- 1단원
- 코드 -> (컴파일러) -> 어셈블리 코드 -> (어셈블러) -> 기계어
- 어셈블리어와 기계어는 1:1로 매칭됨
- 2진수 표현
- 어차피 논리회로 때 다 배웠을 것이다
- 오버플로우에 대한 얘기 -> MSB로 들어오는 캐리와 나가는 캐리가 다를 때
- 어차피 논리회로 때 다 배웠을 것이다
- 코드 -> (컴파일러) -> 어셈블리 코드 -> (어셈블러) -> 기계어
- 2단원
- 배경 지식 할 때 했던 것들
- 파이프라인
- 앞서 진행했던 명령어 실행 과정을 여러 개로 나눌 수 있음
- 빨래통->세탁기->건조기->옷장을 예로 들어 설명
- x86은 명령어 실행 단계를 6단계로 나눌 수 있는데, 각각의 실행 단계를 물리적으로 분리할 수 있음
- 각각의 단계를 병렬적으로, 6개의 명령어를 병렬적으로 동시 수행하여 속도/클럭 속도를 대략 6배 정도 증가시킬 수 있음
- 앞서 진행했던 명령어 실행 과정을 여러 개로 나눌 수 있음
- 슈퍼스칼라 (멀티코어 프로세서)
- 파이프라이닝 6단계 중 한 단계가 오래 걸린다면, 그것 때문에 클럭 속도를 늦추는 건 비효율적임
- 예를 들어 실행 단계에서 두 클럭 이상의 시간이 걸린다면, 실행 단계를 처리하는 모듈을 추가로 배치해서 속도를 올릴 수 있음
- ex) 실행 단계 처리하는 하드웨어 1에는 홀수 번째 명령어만 보내고, 짝수 번째는 하드웨어 2로 보냄
- 파이프라이닝 6단계 중 한 단계가 오래 걸린다면, 그것 때문에 클럭 속도를 늦추는 건 비효율적임
- 메모리 읽기
- 1단계: 주소 버스에 읽고자 하는 주소가 올려짐
- 2단계: 메모리의 read 플래그가 0으로 변경됨
- 3단계: data bus에 값이 읽힘
- 4단계: 메모리의 read 플래그가 1로 변경됨
- 1단계: 주소 버스에 읽고자 하는 주소가 올려짐
- 캐시 메모리
- 캐시 메모리 -> 메인 메모리(RAM) -> 보조 메모리(HDD,SSD)
- 오른쪽으로 갈수록 용량 당 가격(현금)이 저렴해지고, 속도가 느려짐
- 1개의 프로그램을 실행하는 상황을 가정해보자
- 프로그램 전체가 메인 메모리에 올라가고, 일부를 캐시에 가져옴
- 찾고자 하는 데이터가 있으면 먼저 캐시에 있는지 보고, 아닐 때 메인 메모리에 접근해서 가져옴
- 캐시에 접근할 때는 1클럭만에 접근할 수 있지만, 메인 메모리에 접근할 때는 수십 클럭이 걸림
- 캐시 Hit 비율을 높게 잡는 게 중요하겠죠
- 프로그램 전체가 메인 메모리에 올라가고, 일부를 캐시에 가져옴
- 오른쪽으로 갈수록 용량 당 가격(현금)이 저렴해지고, 속도가 느려짐
- 캐시 메모리 -> 메인 메모리(RAM) -> 보조 메모리(HDD,SSD)
- 배경 지식 할 때 했던 것들
- 배경 지식(?) 및 1,2단원 정리