-
인텔 프로세서의 내부 구조전공/시스템프로그래밍 2020. 6. 8. 05:36
수업에서 설명하는 모든 내용은 32비트가 아닌 16비트를 기준으로 한다.
3.1 32비트 인텔 프로세서
3.1.1 펜티엄 프로세서의 개요
펜티엄 프로세스는 한 클럭에 두 개의 명령어를 실행할 수 있는 슈퍼 스칼라 구조(Super Scalar Structure)를 가지고 있다. 슈퍼스칼라 구조는 Flinn의 컴퓨터 분류 중 MIMD에 속한다. Flinn의 컴퓨터 분류 설명은 여기로.
3.1.2 32비트 프로세서의 실행 환경3.1.3 기본 프로그램 실행 레지스터
32비트는 취급하지 않을거라서 간단히 훑고 지나간다.
컴퓨터 동작의 기본 개념 포스팅에서 사용한 프로세서의 구조를 재사용했다.
범용 레지스터는 일반적인 연산을 하는 레지스터이다.
각 용어들을 알 필요는 없다. 그냥 구조가 이렇다는 것만.
3.2 16비트 인텔 프로세서
16비트 프로그램은 32비트 프로그램에서도 사용가능하다. 즉, 상위 호환이 된다.
3.2.1 16비트 인텔 프로세서의 구조
16비트 프로세서는 대표적으로 8088과 8086이 있다. 이 둘의 주요한 차이점은 8088은 데이터 버스가 8비트이고, 8086은 16비트이다. 즉, 한 번에 처리할 수 있는 데이터의 양이 각각 2^8, 2^16개라는 뜻이다. 8088은 8, 8086은 16. 만약 16비트 데이터 버스를 가진 8088/8086이 20비트짜리 데이터를 저장하려면 2개의 16비트 레지스터를 써야 한다.
프로세서의 구조를 16비트의 구조로 상세화한 자료다. 우측의 Adder는 주소값을 증가시키는 역할을 한다. 중간의 점선을 기준으로 좌측은 연산을 하고 우측은 연산 외의 역할을 하는데, Adder를 통해 다음에 실행할 명령을 위해 주소값을 증가시키지 않으면 계속 같은 연산만 반복하겠지?
3.2.2 명령어의 길이
8비트 명령어의 예시이다. 앞의 다섯 자리가 실제 명령어가 저장되는 부분이다.
그 뒤의 두 자리는 주소 지정 방식을 나타낸다. 구체적인 내용은 조만간 4장에서 다룰 듯하다.
마지막 한 자리는 어떤 레지스터를 사용하는지 결정하는 비트가 된다.
3.2.3 8086 명령어
8086는 8개의 데이터 레지스터, 4개의 세그먼트 레지스터, 1개의 명령어 포인터(IP, PC,...), 1개의 플래그 레지스터로 구성되어 총 14개의 기본 레지스터가 있다.
8086의 레지스터 크기는 16 또는 8비트이다. 반면 데이터 레지스터는 16비트로 일정하다. 따라서 데이터를 레지스터에 있는 데이터를 읽는 작업을 할 때 1사이클이 소요된다. 레지스터 크기가 16비트든 8비트든 데이터 레지스터가 16비트이기 때문에 한 사이클에 최대 16비트를 옮긴다.
3.3 기억 장치(memory)
3.3.1 기억 장치의 모델
좌측의 자료를 보면 0,2,4, 6,... 으로 진행되는 짝수 블록과 오른쪽에는 홀수 블록이 있다. 짝수로 시작되는 부분을 짝수 뱅크라고 하며, AL(Low)라고 부른다. 홀수는 AH(High). 이렇게 워드 주소가 구성되어 있으면 데이터를 호출할 때 단어 단위로 나가게 되어 (0,1), (2,3), ... 등이 하나의 쌍이 되어 움직인다.
예를 들어 4,5번 주소 데이터를 호출하려면 한 사이클만 필요하다. 반면 5,6번 주소 데이터를 출력할 때에는 2사이클이 소요된다. 왜냐하면 (4,5)번은 한 쌍으로써 한 번만 이동하면 되었지만, 5,6 번은 각각 (4,5), (5,6)과 쌍을 이루기 때문에 한 쌍이 아니기 때문이다. 즉, 홀수 주소부터 받아오려면 불필요한 사이클이 하나 늘어나게 된다는 것이다.
'전공 > 시스템프로그래밍' 카테고리의 다른 글
파이프라인(Pipeline) (0) 2020.06.08 바인딩(Binding), 바인딩 타임(Binding Time) (0) 2020.06.08 실수를 비트로 표현하는 방법, 부동소수점 (0) 2020.06.08 SISD / SIMD / MISD / MIMD (0) 2020.06.08 연산 단위, 컴퓨터 조직, 명령어 실행의 4단계 (0) 2020.06.08