cpu의 구성은 크게 세가지로나뉜다. 1편에서 설명했던걸 조금 더 보충해보겠다.
cpu의 동작 과정은 크게 4가지로 나뉜다.
1.인출
2.실행
3.간접
4.인터럽트.
프로그램은 다양한 명령어셋으로 이루어져있고, CPU는 이를 하나씩 실행함.
한 명령당 위의 4가지 싸이클이 돈다.
주기억장치(메모리)에서 명령어를 꺼내온다. 프로그램은 주 기억장치에 셋팅 되어있음!
꺼내온 명령어를 실행한다. 이때 필요한 데이터셋이 레지스터에 없으면, 간접 싸이클로 넘어간다.
주기억장치에서 명령어를 실행하기위한 데이터를 꺼내온다.
문자 그대로 사이클 중간에 끼어드는 사이클이다. 인터럽트는 크게 2가지로 나뉜다.
동기 인터럽트는 프로그램을 실행하다가 발생한 예외사항이다. 이를 보통 예외라고 한다. 예외처리할때 예외 맞는듯!
비동기 인터럽트는 하드웨어인터럽트 or 그냥 인터럽트 라고 불리운다.
하드웨어에 의해 발생함. 가령 입출력장치의 명령들(마우스 움직임, 프린터 뽑아라, 화면 출력을...)이 중간에 들어온다면, CPU는 완료명령을 계속 기다릴 수 없다.
왜? => 입출력장치는 CPU보다 현저히 낮은 처리속도. 명령이 완료되면 CPU가 인터럽트 해서 처리해버리면 된다.(js의 동기를 처리하는 방식과 비슷한듯?)
메모리 접근속도는 CPU의 연산속도를 따라가지 못함. 병목현상 발생. 이를 해결하기 위한게 캐시메모리.
CPU근처에 자그마한 메모리를 추가해, 계속 사용하는 데이터를 저장해두고 읽고 쓰기!
레지스터도 있지않느냐? => 레지스터보다 용량이 크고, 속도는 느림. 속도와 용량은 반비례.
캐시메모리는 L1, L2, L3...(Level)이 있음. 숫자가 커질수록 CPU에서 멀다 => 용량커지고 속도저하
L1과 L2는 CPU에 합체되어있는 경우가 대부분!
다음편은 아마 운영체제가 되지 않을까?