Computer Science
탄탄한 기반 실력을 위한
전공과 이론 지식 모음
Today I Learned!
배웠으면 기록을 해야지
TIL 사진
Flutter 사진
Flutter로 모바일까지
거꾸로캠퍼스 코딩랩 Flutter 앱개발 강사
스파르타코딩클럽 즉문즉답 튜터
카카오테크캠퍼스 3기 학습코치
프로필 사진
박성민
임베디드 세계에
발을 들인 박치기 공룡
임베디드 사진
EMBEDDED SYSTEM
임베디드 SW와 HW, 이론부터 실전까지
ALGORITHM
알고리즘 해결 전략 기록
🎓
중앙대학교 소프트웨어학부
텔레칩스 차량용 임베디드 스쿨 3기
애플 개발자 아카데미 1기
깃허브 사진
GitHub
프로젝트 모아보기
Instagram
인스타그램 사진

computer system 11

2. Boolean Arithmetic - [밑바닥부터 만드는 컴퓨팅 시스템]

이 글은 insight 출판사의 [밑바닥부터 만드는 컴퓨팅 시스템 / The Elements of Computing System]이라는 책에 있는 프로젝트(과제) 를 수행하는 글입니다. 해외에서는 Nand2Tetris라는 이름으로 잘 알려져있는 프로젝트입니다. 내용은 동일하니 참고해주세요! Chapter 2의 Project 글 보러가기 목표는 ALU 완성하기 - CPU에 대한 이해 2진코드 불연산으로 더하기 → 가산기 칩에 대한 이해 (Adder) → 구현해보기 배경 2진수 컴퓨터는 수를 2진수로 다룬다. 19라는 수를 나타내고자 하면 10011(2진수) = 2^4×1 + 2^3×0 + 2^2×0 + 2^1×1 + 2^0×1 으로 나타날 것이다. 더 정확히, 64비트 컴퓨터의 레지스터에는 00000000..

Computer System Deisgn - 10 : Cache Memory

Cache Memory CPU에는 Level 1 Cache, Level 2 Cache, Level 3 Cache 등이 존재한다. ( 발전할수록 추가된다. 현재 L3까지 온 상태! ) Lv1 Cache는 32KB로, L1I ( Instruction 저장 ) L1D ( data 저장 ) 두 종류가 있다. CPU내에 각각 존재한다. Lv2 Cache는 256KB로, CPU내에 각각 존재한다. 범용 저장공간에 해당 Lv3 Cache는 MB단위, System에 하나 존재한다. Register와 Memory는 Compiler에 의해 오가지만, Cache와 Memory사이는 HW가 자동으로 오가기에 SW가 필요 없다. Cache의 필요성 Cache Memory는 메모리에서 레지스터로의 읽고쓰는 성능향상을 위해 둘 사..

Computer System Design - 9 : IO Interrupt

가장 단순한 IO Interrupt 형태 : 모든 IO Device들이 OR gate로 묶여있다. IO Interrupt가 발생했다는 신호가 CPU에 들어오면, CPU는 누가 이 신호를 보냈는지 IO Device를 추적한다. 이를 통해 해당 Interrupt를 실행한다. Priority는 Status Register를 먼저 읽어 Check 한다. - 누가 보냈는지, Priority는 어떤지를 알기 위해서는 모든 IO에 접근 ... 응답시간이 길고 효율이 낮다. 더 나은 Interrupt 처리가 필요하다. INTC ( Interrupt Controller ) / PIC ( Programmable Interrupt Controller ) / APIC ( Advanced PIC ) / GIC ( Generic..

Computer System Design - 8 : Interrupt Input

Interrupt는 CPU와 Peripheral Devices 사이의 소통이다. Interrupt: IO Device가 generate 하는 것 둘은 미세한 차이가 등장한다. Exception: CPU가 Internally generates 하는 것 둘 다 CPU에서 신호에 대해 처리한다는 공통점이 있다. Interrupt Asynchronous Signal ( HW ), Synchronous Event ( SW : System Call - SVC ( SuperViser Call ) Instruction 을 제공 ) ex) OS의 Scheduling은 time interrupt를 이용한다. IRQ : Normal Interrupt Request PC가 0x08로 이동 → Branch로 이동하여 원하는 I..

Computer System Design - 7 : Thumb, Thumb2

ARM은 세 가지 Instruction Set을 제공한다. ARM ISA : 32bit Instruction Thumb2 : 16bit & 32bit Instruction Thumb은 16bit Instruction으로 구성되어있고, 이를 확장하여 32bit Instruction을 덧붙여 Thumb2를 제공한다. Special Perpose의 Embedded System을 목적으로 디자인되었다. 따라서, Reduced-Cost Row-Performance를 만족시키기 위해 Low memory Set을 제공한다. Jazelle : Java ByteCode ( ByteCode 실행에 JVM이 필요없다 ) CPSR의 J,T bit을 통해 어떤 Inst Set으로 번역될 지 설정 가능하다. Compiler가 알..

Computer System Design - 6 : Timer

Real Time Clock - RTC : 2^15Hz = 32768 Hz = 32.768 kHz = 1 Sec RTC를 2^15로 나누면 1Hz 에 1 Sec인 Clock을 만들어 1초를 Count할 수 있다. 타이머는 Task Scheduler 등의 작업에서 App에게 시간 배정으로 동시에 작업을 수행하도록 만들기 위해 사용된다. ( event Interrupt를 통해 Count한 1ms의 경과를 CPU에게 알린다. ) Private Timer Timer Load Register, Timer Count Register, Timer Control Register, Timer Status Register로 구성되어있다. - Timer Load Register 초기값에 해당하는 값. - Timer Coun..

Computer System Design - 5 : Handling IO Device in Software

Input Output Device에는 각각의 Register가 들어있다. 이 register에 접근하여 원하는 정보를 얻어올 수 있다. Configuration Register ( Initiate 를 담당 ), Data Register, Status Register ( IO Device의 상태를 기억 ) UART : Universal Asynchronous Receiver and Transmitter 비동기방식 -> Clock이 필요없다, Full-duplex(전이중) 방식 통신 -> 동시에 송 수신이 가능하다. Asynchronous이기 때문에 Agreement가 필요하다 ( Protocol ) : 언제 보낼지, 어떤 형식으로 보낼지, 얼마나 빠르게 보낼지 Transmitter의 Data Format..

Computer System Design - 4 : Memory Map

처리장치 등에서 입출력장치의 데이터에 접근하기 위해서 사용하는 방법. 입출력장치 내에 있는 레지스터를 특정 메모리 공간에 할당하여, 사용할 때 마다 그 공간을 참조하여 값을 이용할 수 있다. 할당받는 메모리 공간의 크기는 레지스터의 개수에 따라 달라진다. 메모리 주소가 32bit ( 4 byte )이고, 메모리 맵이 같은 크기의 4개의 구역으로 나누어져 있다고 생각해보면, 맨 앞 2개의 bit는 00, 01, 10, 11로 어느 구역으로 갈 지 결정하는 역할을 수행하게 된다. 이 두 bit을 처리하는 회로가 Address Decoder 이고, decoder에 의해 해당 메모리의 chip select가 활성화 (1) 가 되며 해당 구역에서 남은 30개의 bit으로 구성된 주소로 원하는 데이터를 찾아갈 수 ..

Computer System Design - 3 : Assembly instruction

Tab 복사가 안돼서 삐뚤빼뚤 ㅜㅜ Execute unit in ARM Move instruction - MOV mov r0, r0, LSL#1 r0에 저장된 값을 logic shift left로 1칸 옮겨서 r0에 저장하라 mov pc, r14 r14에 저장된 값을 pc 레지스터에 저장하라 example r0 = 0x80000004 movs r0, r0, LSL#1 r0 = 0x00000008, CPSR = nzCv movs r0, r0, LSL#1 r0 = 0x00000010, CPSR = nzcv 대부분의 instruction은 (lsl#같은) Barrel shifter를 사용할 수 있다! instruction 뒤에 붙는 s는 명령어 수행 후 CPSR 플래그를 update하라는 의미 2bit 이상 ..

Computer System Design - 2 : arm & simple instruction

assembly를 배우면서 하드웨어의 작동에 대해 배우는 이유?하드웨어 ( CPU, Memory, I/O ) 위에서 OS가 작동하고, 이 OS 위에서 프로그램이 동작한다. C, JAVA 등의 고급언어로 작성된 프로그램들은 컴파일러에 의해 binary파일이나 execute파일로 번역되어 OS/HW에 전달되기 때문에 작동방식이나 과정에 대해서는 개발자가 알지 못해도 프로그램을 동작시키는데 아무런 무리가 없다. 그러나, Assembly같은 기계어는 HW를 직접 건드리는 명령어를 사용하기 때문에, CPU, Memeory등이 어떻게 동작하는지에 대한 방식과 사용 방법을 알고 있어야 한다. Carry Flag & Overflow FlagUnsigned a = 5, b = 3 이라 할 때, if ( a > b ) 의..