8086이 세상에 나오면서 바야흐로 x86의 시대가 시작되었다.
(물론 레지스터는 그 이전에도 있었지만, 명령어 Set이 다르다.
4004: 4비트, 8008~8080: 8비트. 레지스터 명명부터 다름)
8086을 시작으로 x86 시스템은 호환성을 지향하는 아키텍쳐로 발전하였다.
x86-x64로 대두되는 지금까지 호환성이 유지되는 이유다.
가끔 레지스트리 보면 볼 수있는 DWORD(32비트)나 QWORD(64비트)의 어원이 8086에서 나온것
16비트=WORD
이 친구의 존재감을 한 번에 와닿게 말해보자면, 우리가 쓰는 운영체제의 32-bit, 64-bit 등등이 곧 레지스터의 용량을 가리킨다. 주소를 담기 위한 공간이 2^32자리, 2^64자리라는 뜻.
8080처럼 추가적인 주소 어드레스 버스가 존재하는 경우도 있긴 했다.

컴퓨터에서 결국 연산은 CPU가 한다. 근데 CPU는 저장장치라는게 없다.
레지스터는 명령어 종류(어셈블리), 연산결과, 복귀주소 등을 일시적으로 기억하는 기억장치
cpu에서 사용하는 변수라고 보면 됨
레지스터란 (결과값 등을 포함한) 값이나 주소를 기억하는것
각 레지스터는 레지스터마다의 역할이 주어져있다.
크게 분류하면 범용 레지스터, 세그먼트 레지스터, 플래그 레지스터, 포인터 레지스터가 있다.
AX 레지스터를 예시로 들면, AX는 AH+AL로 이루어져있고, 이 AX가 두개 합쳐진 형태로 EAX를 구성한다. 마찬가지로, EAX+EAX 형태로 RAX가 구성된다.
1) 결국 연산은 CPU가 한다. 근데 CPU는 저장장치라는게 없다. 그래서 저장장치가 필요하다.
2) 저장장치는 빠를수록 비싸고, 용량 또한 값에 비례한다. 레지스터든 캐시든 무식하게 TB 단위로 키울 수 없는 이유다.
그래서 계층별로
빠름+비쌈 || 레지스터 -> 캐시(L1-L4) -> RAM -> (TLB등) -> 보조기억장치 || 느림+저렴
ㅡ

TLB에 없으면 페이지 테이블을 돌면서(빨리 찾든 늦게 찾든 BIG-O 고려하면 손해)
물리적으로 두번 찾아야함
그나마 TLB에 있으면 바로 찾아들어가면 되지만

1) 페이지 크기가 작을 경우
: 한 프로세스가 사용할 수 있는 페이지들이 상대적으로 많아짐
: 메모리에 적재된 페이지들이 프로세스가 최근에 참조한 인접부분을 모두 포함해 페이지 폴트 발생률 낮음
: 페이지 크기가 작을수록 내부단편화의 양 줄어듬
: 페이지테이블 크기 증가
: 동일 크기 데이터 적재에 필요한 입출력 횟수 증가
: 지역성과 관련된 부분만으로 적재집합 구성 가능
: 프로세스 당 할당된 프레임이 많을수록 페이지폴트 발생률 감소
2) 페이지 크기가 증가할 경우
: 개별 페이지들이 최근 참조로부터 보다 멀리 떨어진 위치 포함
: 지역성의 원리가 약해서 페이지 폴트 발생률 증가
3) if 페이지 크기 = 프로세스 전체 크기
: 전체 크기에 근접해 갈수록 페이지 폴트 발생률 감소
: 한 페이지의 크기가 프로세스 전체를 포함할 경우, 페이지 폴트 발생X
: 단, 2)에 언급한대로 지역성 감소로 인한 히트 레이트 감소
레지스터와 캐시에 관한 좋은 내용이네요 잘보고 갑니다 ~