- 싱글코어는 극한의 처리량을 할 수 있었다.
하지만 무어의법칙으로 성능도 지속적으로 증가하는데,
발열 등의 문제로 인해 성능 향상에 본질적으로 한계가 있어
이 문제들을 멀티플하게 만들어 해결하기 위해 멀티코어로 바뀌게 됨.
- 멀티코어는 멀티하게(여러 개의) state를 저장할 수 있다.
- 무어의 법칙 ?: 1년마다 코어세스의 성능이 2배씩 증가하는 것
- 컴퓨터를 이루는 3대장 : CPU / Memory / Disk
- CPU는 n개의 코어(n개의 register)로 이루어져 있음. 이런 state를 n개 가질 수 있다.
- CPU의 구성
- ALU( Arithmetic Logic Unit / 산술논리연산 ) : 연산처리하는 역할
- CU( Control Unit / 제어장치 ) : real 뇌와 같은 역할. 어떤 연산을 실행하도록 제어
- Register( 레지스터 / 저장장치 ) : 업무로 나뉨
- 범용 ( general - purpose )
- EAX(Extended Accumulator Register): 산술, 논리연산 레지스터
- ECX(Extended Counter Register): 반복명령어 시 반복카운터로 사용되는 레지스터
- 특수용 ( special - purpose )
: PC( 프로그램 카운터 ) 레지스터
- 프로그램 카운터 ?
: 레지스터 중 하나로, 명령어 포인터라고도 함. 명령어를 얼마나 처리했는지 알아야하는데, 이걸 관리하는게 프로그램카운터!
- 캐시
: CPU가 여러번 데이터에 접근을 할 때, 메인메모리에 접근하는데 공간적으로 거리가 멀어서 시간소요가 큼.
그래서 빈번하게 쓰이고, 가장 최근 쓰인 데이터를 모아놓고 기억하는 곳. 데이터에 접근할 때 걸리는 시간을 줄이기 위해 캐싱해서 쓰겠다고 판단하여 갖고있다가, 빼거나 삭제하거나 다시 넣기도함.
- Cache Coherence( 캐시 일관성 )
: 공유메모리 시스템에서 각 클라이언트가 가진 로컬 캐시 간의 일관성을 의미
- 프로그램이 실행되는 과정
: CU가 프로그램 실행 접수받음 - CU가 명령어를 fetch( 명령어의 머신코드를 불러옴 ) - decode (해석) - 명령어를 보고 ALU를 통해 데이터처리, 계산혹은 해독 - 그 메모리를 프로그램에 전달 - 결과적으로 메모리가 변화됨.
- 프로그래머가 직점 어셈블리어로 짤 수도 있다.( CPU 설계자에 따라 다름 )
- 어셈블리어 ?
: CPU가 읽어서 실행할 수 있는 0과 1로 이루어진 명령어의 조합
- 어셈블리어로 코드를 짜기엔 어렵기 때문에 컴파일러(C, C++, Java 등..)으로 컴파일 기계어로 번역을 시킨다.
- ISA ( Instruction set architecture / 명령어 집합 구조 )
- CISC ( Complex Instruction Set Computer / 복잡 명령어 집합 컴퓨터 )
- RISC ( Reduced Instruction Set Computer / 축소 명령어 집합 컴퓨터 ) -> 요즘 쓰는 ISA, 간단해서 명령어개수도 적고 조금 더 효율적으로 명령할 수 있게 한다. 요즘 대세 !
: 하나하나의 라인이 수행 되면서 메모리와 레지스터를 계속 변화시킴.
명령어를 수행하며 메모리와 레지스타가 계속 변화해가면서 모니터와 디스크에 영향을 끼침.
- 수행 순서
- CU가 명령어를 fetch를 함
- 다른 명령어 수행중에 미리 fetch하는 걸 prefetch라고 함. ( 최적화 테크닉 )
=> 수행타임이 줄어들어 효율이 높아지고, 속도가 올라간다.
- 디코딩, opcode( operation code)사용
- RISC( 1사이클 안에 명령어를 처리할 수 있게 명령어를 나눔 ) or
EISC( 시간이 좀 걸려서 전체적으로 성능이 저하될 수 있음 )- 디코딩 : opcode에 대해 알면 해독이 가능함.
opcode명령어와 operand명령어가 있음.
- operand ?
- operand는 즉시값(immediate value)이 될 수도 있고, 레지스터나 메모리가 될 수도 있다.
- 이친구들을 fetch를 하는데, 가져온 다음에 실행(execution)을 한다 = ALU(산술논리연산)를 쓴다.
- operand에 반영을 해 ! ( = write back )
- 위와같은 과정을 거쳐서 수행이 된다. ( 매커니즘으로 이루어진다. )