전공 62

[시스템 프로그래밍 3-3] 32 bit X86 processor의 메모리 관리

x86 프로세스의 메모리 관리 역시 리얼모드, 프로텍트 모드 등이 있다. (+ 버추얼 8086모드) 리얼모드에서 메모리 관리 8086 16비트 레지스터들과의 호환성이 있어야 하기 때문에 주소가 20비트 였고 레지스터는 16비트였지만 따라서 메모리가 1M까지 어드레싱 할 수 있었다. 32비트 프로세스에서 리얼모드를 사용하게 되면 이전과 호환성을 유지하기 위해서 cpu의 레지스터는 32비트를 그대로 가지고 있지만 8086에서 사용된 20비트 체계를 써야만 호환성이 유지가 되기 때문에 억지로 20비트 주소 버스를 사용할 수밖에 없었다. 멀티태스킹 불가했다. 다만, 주변 기기와의 동작을 인터럽트 형태로 처리 하기 위해서 해당 프로그램을 일시적으로 중단 할 수 있었다. 이 모드는 실제 물리주소에 접근을 하기 때문..

[시스템 프로그래밍 3-2] 32 bit register (레지스터) 상세 기능

기본 실행 환경 개요 컴퓨터의 메모리는 계층 구조를 가지고 있다. - 폰노이만 컴퓨터 구조에서 데이터를 주고 받는게 필수적이기 때문에 메모리 값을 읽어오는데도 시간이 오래 걸리고 (한클럭 만으로 되는게 아니라 최소 4클럭은 소요) cpu에서 일하는데 클럭소요, 메모리로 다시 돌려주는데도 시간이 소요된다. 이렇기 때문에 폰노이만 컴퓨터는 메모리와 cpu간의 데이터를 주고 받는 과정이 필수적이고 그렇기 때문에 cpu에 가까울수록 빠르게 만드는 구조를 선택했다. 따라서 최대한 덜 멀리 이동시키는 방식을 사용한다. 따라서 캐시에 즉 가까운 곳에 저장하는 방식으로 효율성을 높인 것이다. 램에서 쓰는 다이나믹 메모리보다 훨씬 속도가 빠르다. 대신 컨벤셔널 메모리를 사용한다. (캐쉬 레지스터에서 사용 비싸다.) 어셈..

[시스템 프로그래밍 3-1] X86 프로세서 작동모드(Real mode, protected mode, Address space)

32 bit x86 Processors 32비트 x86 프로세스라는 건 cpu속에 여러 레지스터가 들어있는데 각 레지스터의 최대 크기가 32비트(4byte)라는 것이다. 4byte를 담을 수 있는 메모리(레지스터)가 여러개 들어있다는 것을 의미! [1] x86 프로세스의 동작모드 세가지 모드가 존재한다. 왜 이런 3가지 모드가 등장했는지 배경을 알아야 각 모드들에 대한 이해를 높일 수 있다. 최소의 x86 프로세스의 초창기 즉 8086에는 Real-Address Mode만 존재하였다. 1. Real-Address Mode 과거 8086이 처음나올 때 RAM 이 640 KB 정도여서 크기에 대해서 설정한 값들이 당시에는 충분하다고 생각한 최대 크기들이 대부분 1MB정도였다. 또한 과거에는 멀티테스킹을 지원..

[시스템 프로그래밍 2-3] CPU 명령 실행주기 프로그램 실행 과정(bottleneck 병목현상,캐쉬의 계층화)

명령 실행 사이클[명령 실행 주기] CPU는 기계 명령을 실행하기 위해 미리 정해둔 일련의 단계를 거쳐야만 한다. 예시 명령어 포인터 레지스터에 실행하고자 하는 명령의 주소가 저장되어 있다고 가정한 상황. 첫번째로 CPU는 명령어 대기열 (instruction queue)에서 명령을 가져와야(fetch) 한다. 이 과정에서 어디서 명령어를 가져올지 그 주소를 이미 CPU는 알고 있기에 사실 빼오는게 아니라 요청하는 것과 같다. 이후 명령어 하나의 크기가 4bite라서 4바이트 만큼 명령어 포인터를 증가시켜서 명령 포인터를 업데이트 한다. 명령어를 가져왔으니 CPU는 명령을 디코딩한다. (사실 해석을 하는게 아니라 회로를 수행하는 것이다.) - 여기서 비트 패턴을 확인하고 만약 덧셈과 같이 피연산자가 필요..

[시스템 프로그래밍 2-2] 기본 마이크로 컴퓨터 디자인 (X86프로세서 각 장치별 동작 및 특징)(Cpu, RAM, Bus, Clock)

1. CPU 마이크로 컴퓨터 디자인 CPU 내부 구조 레지스터(엄청 빠르고 작음) : 레지스터로 가져와서 일을 처리한다. 캐시(caeche)도 cpu안에 있고 속도는 빠른편이지만 레지스터보단 느림 고주파 Clock : CPU 내부 작업을 다른 시스템 구성요소와 동기화를 할 때 사용한다. CU(컨트롤 유닛)-제어장치 : 읽어드리는 기계어를 컨트롤하는데 사용. 어떤 명령어를 가져올지.. ALU(산술 논리 장치) : 산술연산 및 논리 연산을 수행한다. CPU는 컴퓨터의 마더보드의 CPU소켓에 부착된 핀을 통해 컴퓨터의 나머지 부분에 연결됩니다. 대부분의 핀은 데이터 버스, 제어버스 및 주소버스에 연결된다. 2. 메모리 저장 장치 (RAM) 컴퓨터 프로그램이 실행되는 동안 명령과 데이터를 다 메모리 안에 적재해..

[시스템 프로그래밍 2-1] X86아키텍쳐 amd64와 ARM 비교(X86 Processor Architecture)

X86 아키텍쳐 X86 아키텍쳐는 인텔이 1978년에 개발한 인텔 8086에 적용된 아키텍쳐이다. 이 아키텍쳐는 8086에 적용된 아키텍쳐만 포함하는게 아니라 그 호환 후속작 프로세서들도 포함한다. 이 아키텍쳐는 32비트의 대표 프로세서여서 32비트 아키텍쳐라고도 불리지만 X86이라고 표기하는 이유는 이후 출시한 아키텍쳐들이 전부 8086 명령어 세트를 기반으로 확장 시켰기 때문이다. AMD 64 AMD64란, AMD가 1999년 발표한 x86의 64비트 확장인 아키텍쳐이다. 현대 컴퓨터는 대다수 64비트이고 우리가 알고있는 대부분의 컴퓨터는 이 표준을 따르고 있다. 표준 명칭은 AMD64 이지만 같은 이름으로는 X86-64, x64, Intel64 등의 이름으로도 불린다. 등장 배경 인텔의 경쟁사로는 ..

[시스템 프로그래밍 1강] 어셈블리어란

어셈블리어 소개어셈블리어를 우리가 공부하는 이유비전공자와의 차별점 - 컴퓨터 사이언스의 전반적인 지식이 필요하다. 컴퓨터 내부에서 어떻게 작동하는지 아는 것과 모르는 것은 큰 차별점을 선사한다.기계어란정의CPU(컴퓨터 프로세서) 가 이해하는 숫자 언어.특징 기계어는 2진수로 나타나져 있다. CPU에서 읽는다. 컴퓨터 하드웨어가 이해할 수 있는 유일한 언어이다. 모든 cpu는 cpu에 대응하는 코드가 있다. ex : 01000100 이런식으로 명령을 내리면 무엇을 한다 등, 이런식으로 미리 지정이 되어있다. 명령어는 특정 수의 비트로 구성됩니다. 특정 프로세서에 대한 명령이 8비트인 경우 처음 4비트 부분(opcode)은 컴퓨터에 수행할 작업을 알려주고 두 번째 4비트(피연산자)는 컴퓨터에 사용할 데이터를..

[디지털 논리 1강] 디지털과 아날로그(바이너리 ,샘플링, 엘리어싱, 양자화)

디지털 Vs 아날로그 디지털과 아날로그를 분류하는 방식은 정보를 표시하는 방식의 차이에 의해 생긴다고 볼 수 있다. 한마디로 설명하면 아날로그는 연속적이고 디지털은 불연속적이다. 예시(왼쪽 아날로그 오른쪽 디지털) 시계의 경우 쉽게 아날로그와 디지털을 구분할 수 있다. 일반적으로 해시계 모래시계 등 과거에 사용되던 시계는 대부분 아날로그 형식이었지만 조선시대 최초로 아날로그 시계인 자격루가 발명되었다. 온도계와 체중계의 경우 아날로그와 디지털의 차이를 쉽게 구분할 수 있을 것이다. 카메라는 과거에 흔히 사용되던 필름 카메라는 아날로그 방식이고 요즘 우리가 사용하는 일반적인 카메라는 전부 디지털 방식을 사용한다. 위의 디지털 카메라에서 네모 한 칸이 한 픽셀이고 이 단위로 rgb 정보를 전달할 수 있다. ..

[컴퓨터 구조] 2진수 체계의 정수 표현

10진수와 2진수 2진수 체계에서는 어떤 수를 0과 1, 부호 및 소수점으로 표현한다. 예를들어서 10진수 -13.625라는 숫자가 있다면 이는 2진수로 -1101.101로 표현이 된다. 숫자의 이진수 소수점 표현법을 간략히 설명하자면 소수점 아래 첫째자리는 2 ^-1(=1/2)(=0.5) 둘째자리는 2^-2(=1/4)(=0.25) 셋째자리는 2^-3(=1/8) (=0.125) 이다. 즉 0.5 + 0.125를 해서 0.625를 표현한 것이다. 컴퓨터의 이진수 표현법 그러나 컴퓨터에서 사용되는 이진수 체계에서는 부호와 소수점을 사용할 수가 없어서 오직 0과 1만으로 수를 표현 해야 한다. 따라서 양수또는 음수를 나타내는 부호역시 0또는 1을 사용해서 표시해야하고 소수점도 필요에 따라서 특정위치에 있다고 ..

[컴퓨터 구조] 부동 소수점의 표현

시작하며… 이전 게시물에서는 숫자의 양수음수 표현법에 대해서 다뤘다. 만약 2의 보수표현법에 대한 개념이 없다면 이전 글을 보고 오길 바란다. 이번에는 숫자를 컴퓨터로 나타내는데 문제가 되는 소수점에 대한 문제에 대해서 이야기 해보고자 한다. 우리는 아주 큰 숫자를 표현할 때 활용하는 방법을 사용할 수가 있다. 부동 소수점이란? 예를 들어 125000000000000000000 같은 숫자를 표현한다고 하자 이런 큰 숫자를 표현할 때 우리는 이렇게 쭉 나열하기도 하지만 그렇게 하는 것 보다는 1.25 * 10^20 이렇게 표현을 할 수가 있다. 위 방법과 같이 소수점을 적절히 이동시켜서 아주 큰 숫자 또는 아주 작은 숫자를 효과적으로 표현할 수 있게 하는 방법을 우리는 부동소수점 숫자 표현방법이라고 부른다..

728x90