본문 바로가기

분류 전체보기48

[Lecture 12] Joystick - JoyStick JoyStick의 input은 아날로그 시그널이므로 이를 컴퓨터가 이해할 수 있도록 디지털 시그널로 바꿔줘야 한다. ADC(Analog-to-Digital Converters)는 아날로그 시그널로 들어오는 voltage 값을 디지털(bit sequence)로 바꿔준다. 연속적인 analog값을 일정 주기로 sampling해서 디지털로 변환할 수 있다. 이때 sampling의 주기가 짧을수록 더 정교한(원래 아날로그 값과 비슷한) 데이터를 표현할 수 있다. sampling의 주기에 따라 같은 아날로그 시그널도 서로 다른 여러 개의 디지털 시그널로 표현될 수 있다. ADC에 사용 가능한 bit 수에 따라서도 디지털 시그널의 정교함이 달라진다. 0-10 사이의 값을 가지는 아날로그 시그널을.. 2022. 12. 6.
[Lab 10] //Exercise 7 //Goal: Write a program that turns on P2 RED LED at the initial state. //When the S1 button is pressed, turn P2 GREEN LED, and when the S2 button is pressed, //turn BLUE LED #include "msp.h" void PORT1_IRQHandler(void) { //S1 Button if (P1->IFG & BIT1) { P2->OUT = 0x02; //change output color to green P1->IFG &= ~BIT1; //reset: P1의 BIT1번을 disable 하면 interrupt signal이 clear되면서 해당 코드가 .. 2022. 12. 5.
[Lecture 11] LCD - LCD 한 픽셀의 색을 표현하기 위해서는 R,G,B 각각 8bit씩으로 이루어진 총 24bit의 sequence를 사용한다. 그래서 당연하게도 R,G,B 각각에 쓰이는 bit 수를 늘리면 표현할 수 있는 색상의 범위가 넓어진다. 그치만 다채로운 색상을 표현하기 위해서는 소프트웨어 상에서 bit를 늘림과 함께 디스플레이 상에서 그만큼 다양한 색이 표현가능한 하드웨어를 사용해야 한다. 그렇지 않으면 아무리 다양한 색을 출력하는 코드를 작성해도 하드웨어적으로 표현되지 않게 된다. - 보통 LCD와 같이 복잡한 디바이스를 사용하는 경우에는 코드에 initialization, graphic library, driver 등에 대한 설정이 필요하다. 레퍼런스 메뉴얼이 주어지는 경우 이를 따라서 구현하면 된다. 다.. 2022. 12. 5.
[2.6] MIPS Instruction Set Architecture VI - 언어와 MIPS 어셈블리언어 C언어가 MIPS 어셈블리언어로 어떻게 변환되는지 알아본다. 컴파일러에 의해 고급 언어로 작성된 C코드가 MIPS의 어셈블리언어로 바뀐다. 예전에는 어셈블리언어로 프로그램을 작성하는 경우도 있었다. 운영체제와 관련된 작업 중 속도가 중요한 경우는 그렇게 했다. 하지만 어셈블리의 비효율성 등을 극복하기 위해 고급언어인 C언어를 만들어낸 것이다. 이제 C언어를 어셈블리언어로 바꾸는 몇 가지 예시에 대해 알아보자. 배열의 경우 시작 위치만을 저장하고, 이후 원하는 배열의 원소에 접근하기 위해 인덱스 값만큼 떨어진 주소를 찾아간다. 정수의 크기는 4byte이므로 어셈블리어의 첫 두 줄에서 i*4를 진행한다. 이때, 곱셈보다 덧셈의 처리 속도가 훨씬 빠르므로 덧셈 두 번을 한다. 2022. 10. 13.
[2.5] MIPS Instruction Set Architecture V - 연산별 비트 구조 MIPS의 각 연산 과정에서 나타나는 비트 구조를 복습한다. (Recap) MIPS의 기계어는 32bit를 가진다. 기계어의 field는 opcode 영역(6bits)과 피연산자 영역(5bits+5bits+5bits+5bits+6bits)으로 나눌 수 있다. 레지스터 3개를 사용하는 instruction의 경우, 11bit가 남아돈다. 반면, memory addressing을 해야 하는 연산의 경우, 메모리의 주소를 표현하는 데만 32bit가 필요하기 때문에 opcode를 제외한 MIPS instruction field 영역으로는 표현하기에 부족하다. 따라서 레지스터와 메모리 주소를 혼합해서 사용한다든지의 방법으로 한정적으로 메모리를 표현해야 한다. 피연산자의 조합에 따라 instruction field.. 2022. 10. 13.
[2.4] MIPS Instruction Set Architecture IV - branch & jump 연산 MIPS의 Branch & Jump 연산과 비트 구조가 각 연산에서 어떻게 나타나는지 알아본다. Conditional branch instructions branch on equal: register 2개 + 16bit immediate 두 레지스터 값이 같으면 branch immediate값은 다음 수행해야 할 위치로부터 얼만큼 떨어진 instruction인지를 나타낸다. 이를 주소 값으로 따지면 기계어 하나의 크기가 4byte이므로 다음에 실행했어야 한 명령어의 주소로부터 {4*(immediate)}byte만큼 떨어진 주소를 가리키라는 것이다. 왜 굳이 이렇게 하는가? -> 32bit로 크기가 한정된 기계어 내에서 정보를 최대한 효과적으로 표현하기 위함이다. branch on not equal: re.. 2022. 10. 12.
[2.3] MIPS Instruction Set Architecture III - 논리연산 & Data Transfer 연산 MIPS의 논리 연산과 메모리에 접근하는 Data Transfer 연산에 대해 알아본다. 논리 연산 C언어에서 3 & 1 연산을 하면 결과는 1이 나온다. 이유는 C와 같은 고급 언어에서는 0이 아닌 모든 수를 참으로 가정하기 때문에 참 & 참 = 참이므로 결과가 1(참)이 나오는 것이다. 하지만 기계어에서 진행되는 bit 단위 연산에서 3 & 1 을 수행하면 0011 & 0001 = 0001 이다. 예시가 좀 별론데...어쨌든 무슨 의미인지 알겠죠? ㅎ 논리 연산에서도 산술 연산과 마찬가지로 immediate 값(16bit)을 사용할 수 있다. 레지스터에는 32bit 값을 저장할 수 있는데, immediate에는 16bit 값을 저장한다. and immediate에서는 32bit의 레지스터 값과 16b.. 2022. 10. 12.
[2.2] MIPS Instruction Set Architecture II - 비트 포맷 및 산술 연산 MIPS의 비트 포맷과 네 가지의 연산 종류 중 산술 연산에 대해 알아본다. (Recap)MIPS에서는 모든 instruction이 32bit로 구성된다. 그런데 메모리 주소 공간도 32bit이니까, 메모리를 instruction에 사용하기엔 공간이 부족한 것 아닌가? -> 맞다. Instruction을 나타내는 32bit 중 처음 6bit(opcode: 연산의 종류를 나타냄)를 제외한 모든 공간을 다 쓴다고 해도 26bit밖에 사용할 수 없으므로, 전체 메모리 주소를 나타내기에 부족하다. 따라서 메모리 주소를 직접 나타내야 하는 연산의 경우 26bit만을 사용하는 방법이 있다. 이 경우 전체 메모리 위치를 다 나타내진 못한다. 메모리 주소를 직접 적는 대신 레지스터에 넣어두고 그 레지스터를 기계어의 피.. 2022. 10. 12.
[2.1] MIPS Instruction Set Architecture - 레지스터 및 메모리 모델 ISA의 대표적인 기계어 집합인 MIPS의 원리와 연산 수행에 대해 알아본다. (Recap)컴퓨터마다 CPU에서 사용되는 기계어 집합이 다르다. (Instruction Set Architecture의 종류는 여러가지다.) ISA의 종류: IBM System/360, IA-32(x86), IA-64, MIPS, SPARC, Alpha, PA-RISC MIPS Register & Memory Model MIPS 레지스터 모델 피연산자 값을 저장할 범용 레지스터의 개수: 32개($0-$31) 레지스터 하나의 크기는 4 byte이다. 따라서 범용 레지스터는 (4 byte)*32(개) 만큼의 공간이 필요하다. 32개의 레지스터를 구분하기 위해서는 5bit가 필요하다(2^5 =32이므로) 범용 레지스터 외에도 몇 .. 2022. 10. 12.