트랜지스터 PNP 또는 NPN 형태의 반도체가 들어있음 -> 가운데 도선에 특정 전압을 걸어주면 전류가 흐름
논리회로 XOR : AND, NOT, OR 게이트의 조합으로 만듬
A | B | 출력 |
---|---|---|
참 | 참 | 거짓 |
참 | 거짓 | 참 |
거짓 | 참 | 참 |
거짓 | 거짓 | 거짓 |
두수의 합 : 올림수와 합 발생 -> 올림수 / 합 각각을 나눠 논리회로 구축
-> 간단한 덧셈 게이트 만들 수 있음
CPU에는 산술 논리 장치(Arithmetic Logic Unit)이 있음
-> 산술 : 더하기 빼기 등 산수 계산 역할
-> 논리장치 : AND나 OR같은 논리 연산 역할
cpu에는 수십억개의 트랜지스터가 들어가 있음
-> Mosfet이라 불리는 트랜지스터가 들어가 있음(미세먼지 보다 훨씬 작음)
-> N형 반도체와 P형 반도체가 있음
-> 가운데 전압을 걸어주면 On/ 그렇지 않으면 Off
CPU는 RAM과 소통
사용자가 프로그램 실행 -> 데이터는 램으로 이동 -> CPU는 그 데이터를 가져옴
-> CPU-RAM도 속도차이가 나기 떄문에 CPU 내부나 근처에 캐시메모리를 만들어 데이터를 저장(캐시메모리는 RAM에 비해 용량이 작기 떄문에 중요하다고 판단되는 데이터만 저장해서 사용)
캐시메모리는 L1 ~ L3로 단계를 나누어 사용
-> L1 캐시 : CPU가 가장 먼저 접근하는 메모리, 속도가 가장 빠르지만 용량은 작음
-> L3 캐시 : 용량이 큰 대신에 속도는 느림
CPU는 L1캐시에 데이터 요청 -> 없으면 L2 -> 없으면 L3 -> 없으면 RAM에 있는 데이터를 읽음
컴퓨터 기억장치는 하드, 램, 캐시, 레지스터
레지스터 : CPU 내부에서 데이터를 일시저장 장치(속도가 가장 빠른 메모리)
고급 언어 -> 컴파일(어셈블리어 변환) -> 기계어 변환(0, 1구성)
기계어 : 명렁어 6비트 + 데이터 10비트 프로세서가 한번에 처리할 수 있는 값 16비트
-> RAM은 8bit씩 저장되어 2줄로 저장됨
-> RAM에서 2줄이 하나의 명령어가 처리할 수 있는 하나의 언어
-> 32bit의 경우 4줄 / 64bit는 8줄이 됨
전체 과정 : LOAD[10], ADD[11], STORE[12]
LOAD[10]
프로그램카운터 메모리 주소 -> 메모리 주소 레지스터 전달 ->
해당 데이터를 가져와 메모리 버퍼 레지스터에 저장(인출 : 메모리의 데이터를 CPU로 가져오는 과정)
-> 가져온 값이 명령어 인 경우 명령어 레지스터로 이동 -> 프로그램카운터 +2가 됨(영상에서는 16bit - 다음에 수행할 메모리는 전에 수행한 주소보다 2칸 아래이기에 / 32비트는 4가 더해짐)
-> 명령어 레지스터에 저장된 명령은 제어장치로 이동되어 해석(해석)
-> (LOAD[10] 명령어 예시) 메모리 주소 레지스터에 10 입력
-> 10번지의 데이터를 읽어와서 메모리 버퍼 레지스터에 저장
-> 이제 저장된 값은 명령어가 아닌 값이기 때문에 누산기 레지스터에 저장
ADD[11]
-> 프로그램카운터 저장된 주소 가져옴
-> 메모리 주소 레지스터에 다음 주소가 들어옴
-> 주소에 있는 정보가 메모리 버퍼 레지스터에 들어옴
-> 명령어 임을 확인하고 명령어 레지스터로 이동
-> 프로그램카운터 2가 더해짐
-> 명령어 제어장치 이동하여 해석
-> 더하기 명령어를 실행하기 위해 누산기 레지스터에 있는 값을 산술레지스터로 전달
-> 메모리 주소 레지스터에 11번지 주소 입력
-> 11번지의 데이터를 메모리 버퍼 레지스터에 저장
-> 해당 값은 명령어가 아닌 데이터로 누산기 레지스터에 입력
-> 그 값은 산술 논리장치에서 처리되고(산술 논리장치에서 계산되는 과정 : 실행), 결과값은 다시 누산기 레지스터 저장
-> 위 모든 과정은 제어장치에 의해 컨트롤 됨
STORE[12]
-> 프로그램카운터 주소 읽어옴
-> 메모리 주소 레지스터에서 데이터를 가져옴
-> 명령어이기 때문에 명령어 레지스터로 이동되고, 프로그램카운터에 2가 더해짐
-> 저장하라는 명령어가 제어장치에서 해석되고
-> 12번지 메모리에 계산된 값을 저장하기 위해서 메모리 주소 레지스터에 12를 저장
-> 누산기 레지스터에 저장된 값은 메모리 버퍼 레지스터를 통해 12번지 메모리에 저장하면 프로그램 완료
CPU : 데이터 인출 -> 해석 -> 실행 -> 저장의 과정을 거침
-> CPU는 각 단계들 조차 세분화해서 사용(분리된 각각의 프로세스를 스레드라 함)
-> 코어 하나에 여러 스레드 실행하면 속도 빨라짐 (코어 많을수혹 속도 증가)