본 포스팅은 ETRI의 <SW-SoC융합아카데미>와 <포항공과대학교>의 이영주 교수님의 【시스템반도체 설계를 위한 컴퓨터 구조 및 SoC 구조】 강의를 수강하고 요약 정리한 내용이다.교수님의 강의는 다음 자료와 참고자료를 기반으로 만들어진 것으로 추정된다.A
대표적으로 디지털 시스템에서 사용되는 수체계 = 10진수(Decimal)와 2진수(Binary)10진수와 2진수 사이의 conversion을 자유롭게 하는 능력이 중요하다.$2^{10} = 1K(1,024)$, $2^{20} = 1M (1,048,576)$, $2^{3
두 양수 또는 두 음수를 더할 때 overflow가 발생할 가능성이 있다.두 양수를 더했는데 sign이 1이면 overflow가 발생한 것이다.두 음수를 더했는데 sign이 0이면 overflow가 발생한 것이다.부호가 다른 두 수를 뺄 때 overflow가 발생할 가
메모리에 데이터와 프로그램을 저장하고 CPU는 그것을 읽어서 연산만 수행하는 개념.Fetch → Decode → Execute → Store :: 반드시 이 cycle은 머릿속에 넣어두자!메모리로부터 정의된 instruction을 가져와서 수행하고, 다음 instruc
Reserved : 시스템에서 지정된 영역으로, 유저가 접근할 수 없다.Text: 프로그램 코드가 저장되는 영역이다.Static data: 프로그램의 전역변수나 const array 또는 string 이 저장되는 영역이다.Dynamic data: Heap을 의미한다.
RISC-V의 모든 instruction은 32-bit, 1 WORD 길이로 일반화돼있다. 아래를 보면 모든 Instruction이 우리가 읽기에 친숙한 구조가 아닌데, 왜냐하면 RISC-V가 Little endian이기 때문이다.opcode: Instruction o
어떻게 CPU의 성능을 객관적으로 측정할 것인가?주어진 복잡하고 많은 instruction을 얼마나 빠르게 컴파일하는가?한 instruction을 수행하는 데 얼마나 많은 cycle이 필요한가? (CPI)Instruction을 수행하기 위해 operands를 꺼내오는
Pipelining은 여러 작업들을 병렬(pallerism)성을 이용해서 빠르게 작업하는 방법을 말한다.위 그림에서, 4가지 소작업으로 구성된 4개 작업을 순차적으로 실행한다면 총 8시간이 소요된다.하지만, pipelining을 사용해서, 각 작업의 소작업이 끝날 때마
다음과 같은 연산이 있다고 가정하자.위 코드에서 첫 번째 instruction에서 x2가 계산되지 않으면 hazard가 발생한다.image-20210512203505376위 코드에 pipelining을 적용한 diagram은 위와 같다.상단을 보면, CC5 까지 x2의
타겟 모듈의 메모리 구조를 어떻게 정의하느냐에 따라서 성능에 큰 영향을 미치게 되므로 중요하다.모든 개발자는 무한한 메모리를 거의 none latency로 access하길 원한다. 하지만, 빠른 메모리는 비용(cost)이 비싸다.메모리 구조를 계층(hierarchica
CPU가 동작하는 cpu time은 아래와 같은 두 가지 종류의 time으로 구성돼있다.Instruction execution cycles - 명령어가 수행되는 시간 (Cache hit 포함)Memory stall cycle - CPU가 멈춰있어야 하는 시간 Cache
NXP에서 만든 MCU인 FRDM-KL25Z를 예시로 SoC의 구조에 대해서 알아보자.image-20210520111522906FRDM-KL25Z는 ARM의 M0+ core가 탑재돼있다.프로세서만으로는 프로그램을 실행할 수 없으니까 인접한 곳에 메모리(SRAM)이 있는
image-20210520130410399우리가 작성한 모든 소스코드는 컴파일러가 컴파일 해서 .s 확장자의 어셈블리 파일로 translate 한다.어셈블리 파일은 어셈블러가 컴파일 해서 .o확장자의 오브젝트 파일로 translate 한다.링커와 로더는 라이브러리 파일
이번 시간에는 CPU 밖의 환경과 CPU가 어떻게 통신하는지 인터페이스에 대해 배워보자.MCU가 연산하는 결과가 의미를 갖기 위해서는 외부 peripherals (주변기기)와 연결돼서 연산 결과를 조회하거나 활용할 수 있어야 한다. 이를 가능하게 해주는 가장 간단한 방
현재 수행중인 프로그램을 일단 중지한다.현재 수행중인 프로그램에 대한 정보(context)를 어딘가 (register, PCB)에 저장해둔다.인터럽트 벡터 테이블 (IVT)에서 인터럽트의 종류와 그에 따른 handler (service routain)를 결정한다.Han
Timer는 실제로 시간을 측정하기 위해 사용하는 회로를 말한다.Counter는 pulse의 개수를 측정하는 회로를 말한다.구분하는 것이 맞으나 일반적으로는 timer나 counter나 비슷한 의미로 사용한다.Timer나 counter를 사용하는 가장 대표적인 세 가지