Busan IT/제어언어2015. 1. 29. 13:55


20150129-CPU와 BUS.hwp

CPU와 메모리의 의사소통

 

학습목표 : CPU와 메모리간의 의사소통 방식을 이해한다.

 

#1. CPU와 버스

 

CPU와 메모리를 잇는 선들을 버스(BUS)라고 한다.

 

CPU에 용량에 의해 활용할 수 있는 버스선 자체가 결정된다.

버스 선은 CPU가 제어할 수 있는 방의 개수를 한정시킨다.

 

그러므로 CPU용량이 버스 선보다 개수보다 크거나 같은 경우에 CPU의 능력이 발휘될 수 있고 CPU의 용량보다 버스 선의 개수가 많을 경우에는 과부화가 일어난다.

 

그 선의 개수에 따라 8bit, 16bit, 32bit 64bit인데 한 선에 1bit를 보낼 수 있다.

8bit28(0~255, 256개의 데이터를 보낼 수 있다.)

ex) 8bit = 8

 

선당 5V의 전압을 보낼 수 있고, 5V의 전압이 들어간 경우

ex) 5V -> 1, 0V -> 0

 

#2. 심볼테이블과 unsigned

 

CPU가 할당용량의 자리를 찾아가는데 Address를 사용한다. 사용자는 이름으로 지정하고 있지만 컴퓨터는 Address를 사용하여 이를 찾아낸다. CPU는 이것을 표로 만들어 놓는다.

 

CL이 실행을 작성할 시 TypeName을 지정하면 주소를 지정해준다.

ex)

Type

Name(사람)

Address(컴퓨터)

char

Test0

100번지

위의 표를 심볼테이블 이라고 하고 이것은 CL이 만든다.

 

실습>>

 

기본형을 입력 후에 char이라는 변수형을 넣고 이름은 Cnum 값은 3을 입력한다.

 

char cNum;

cNum=3;

과 같다.

 

처음에 값을 넣는 것을 초기화라고 한다.(char cNum=3;)

실수가 많은 부분이라서 처음에 변수형을 만들 때 값을 넣어주는 게 좋다.

 

수를 양수로 적을때는 이것을 양수로 표시하고 싶다는 명령어를 넣어줘야 한다.

-> unsigned

 

 

unsigned 앞에 un을 제거하고 signed를 넣으면 -1이 표시된다.

 

 

#3. 정수의 입력과 CPU의 인식(magnitude방식과 보수방식)

 

정수의 입력에서

변수형

용량

char

1byte

short (int)

2byte

int

4byte

 

 

printf, %d\n에서 ddecimal(10진수), xdecimal hexa(16진수), oocta(8진수)이다.

 

 

흥미롭게도 magnitude방식과 보수방식은 가장 큰 자리에 1이 붙으면 음수로 구분되는 것은 같다.

 

CPURegister의 크기는 버스 크기와 맞물린다. 한 번에 처리할 수 있는 양과 Register의 양과 맞춰야지 회로를 최적화 시킬 수 있다. 그래서 데이터를 주고 받을 때 Register의 크기로 주고 받는다.

 

컴퓨터는 뺄셈을 인식하지 못하기에 뺄셈이 있을 시 보수를 더해줘서 뺄셈 값을 만족시킨다.

 

음수가 필요 없을 시는 unsigned를 써서 사용 하는 것이 CPU처리에 도움이 된다.

 

상황에 맞게 unsignedsigned를 생각하여 설정을 해야 한다.

 

 

 

#4 CPUMemory의 의사소통

 

CPU는 마이너스를 인식하지 못함으로 보수를 사용함으로써 연산을 한다.

예를 들어 32bit 컴퓨터에서 char a=-116진수로 표시하려고 한다.

이 때 메모리에서는 1byte(8=bit)만 선언이 되었기 때문에 ff로 표시가 된다. 이것을 32bit CPU에서 들고 오는 과정에서 32bit CPU는 이것을 ffffffff로 표시한다. 때문에 이것이 printf로 출력되는 경우 ffffffff로 출력되는 것이다.

 

중요한 점은 printf는 메모리에 있는 자료가 아니라 CPU에 있는 자료를 출력하기 때문에 ffffffff를 출력한다. 다시 말해 CPU에 있는 register 값을 출력한다.

<<Summary>>

 

- 사용자는 CPU에 있는 register를 통하여 CPU를 제어할 수 있다. 메모리와 CPU간의 의사소통을 최적화하기 위해서는 registerbit와 버스의 bit를 일치시켜 주어야 한다. bit하나당 하나의 선을 이용하고 5V의 전압을 보내어 보냈을 시 1, 안 보냈을 시 0으로 표시한다.

 

- 컴퓨터는 심볼테이블을 활용하여 각 변수의 형과 위치(address)를 기억한다.

 

- 변수형의 선언과 이름 그리고 값을 넣어주는 것을 초기화라고 부른다.

 

- 정수의 표현방식에 따라 양수만을 표시하고 싶을 때는 unsigned를 변수형 앞에 붙여주고, 양수와 음수 모두를 표현하고 싶을 때는 signed를 붙혀 주지만 기본적으로 signed가 제공되기 때문에 이 같은 경우는 변수형만 선언해주고 초기화시켜주면 된다.

 

- printf시 표현 방식에 따라 8진법 %o, 10진법 %d, 16진법 %x 이다.

 

- 메모리에 있는 값을 출력하는 경우 CPU에 표시되는 값으로 화면에 출력된다.

 

 

반응형
Posted by newind2000