program의 흐름을 control 하는 명령어들을 알아보고, 어떻게 동작하는지 알아보려고 한다.



분기 명령어란 ?



프로그램을 작성하는데 있어서 프로그램의 흐름을 변경하는 명령어이다.


즉, 기존에는 pc에는 다음에 수행될 명령어의 주소가 저장이 되는데 분기명령어를 통해 pc가 수행할 데이터를 


바꿈으로써 프로그램의 흐름을 변경한다.


분기 명령어는 조건 유무에 따라 unconditional/conditional 로 구분된다.



파이썬으로 생각하면 if문의 유무에 따라 구분된다고 생각하면 될 것 같다.


분기 명령어를 사용하면 원하는 곳으로 jump 할 수 있지만 RISC구조에서 분기명령어는 pipeline 수행에 치명적인 영향을 준다.


분기를 할 때 기존에 fetch 해온 instruction을 flush 하기 때문이다.




1. Branch



branch 명령어의 경우, 분기명령을 수행하고자 하는 주소로 분기명령어를 수행하고, 그 주소에서 다시 순차적으로 PC가 증가하면서


프로그램이 수행된다.




2. Brach with link



Brach with link (BL) 의 경우 분기를 수행하면서 분기 명령어의 다음 주소 (즉, 미리 fetch 해온 instruction)를 linked register에

1을 더해 저장한다. 


- 1을 더해서 저장하는 이유 ?


보통 명령어의 주소는 각 4 간격으로 구성되어 있다. 즉, bi[0]은 0이기 때문에 이곳에 동작모드와 관련된 정보를 넣어 놓는다.




3. conditional execution



conditional execution은 일반 명령어에 suffix가 붙어 있는 형태의 명령어이다.


즉, suffix에 해당하는 조건을 만족할 때에만 수행된다.




4. jump table



jump table이란 여러 개의 subroutine을 사용할 때 memory 상의 table이다.


즉, 분기 명령어인 branch가 어디로 분기를 수행할지를 알려주는 주소를 모아놓은 table이라고 할 수 있다.


jump table은 tbb(offset 크기가 byte) / tbh(offset 크기가 halfword)의 명령어와 함께 사용된다.


adr r0 jtable

tbb [r0, r1]



 



  1. 2018.03.15 18:43

    비밀댓글입니다


 - Data Transfer


프로그램이 동작하는 과정에서 CPU가 수행하는 명령어들의 많은 부분이 메모리로 부터 데이터를 레지스터로 읽어들이거나,

처리된 결과 데이터를 메모리에 저장하는 동작들을 칭함.



- Memory Devices


크게 ROM (READ-ONLY-MEMORY) , RAM(RANDOM- ACCESS - MEMORY)로 구분된다.



ROM은 프로그램/데이터를 항구적으로 저장하는 대표적인 소자로 저원을 제거한 후에도 저장된 내용을 유지할 수 있다.


컴퓨터의 OS, 가전제품의 기본 셋팅 정보등이 ROM에 저장되고 있다.


회사에서도 C-PCB 에 NAND 를 내장해 필요한 소프트웨어 정보를 저장한다.


이런 측면에서 임베디드 프로세서에 내장되는 flash memory도 rom에 속한다.''



CPU는 RAM에 데이터를 일거나 쓰는 동작을 할 수 있다.


RAM에 저장된 내용은 전원을 제거하면 모두 소실된다.





-  RISC(Reduced Instruction Set Compute)


CPU(중앙처리장치) 안의 명령어를 최소로 줄여 단순하게 만든 프로세서.


범용 마이크로프로세서를 구성하는 요소에는 명령세트, 레지스터, 메모리 공간 등이 있는데 명령세트는 RISC , CISC 두 가지로 크게 분류할 수 있다.


RISC 방식은 CPU에서 수행하는 모든 동작의 대부분이 몇 개의 명령어만으로 가능하다는 사실을 전제로 하고 있다.


RISC는 명령어가 전부 1 word 길이로 짧고 pipeline과 슈퍼 스칼라를 통해서 멀티태스킹이 가능하므로 CISC에 비해서 많은 레스터를 가지고 있다.



- CORTEX M3 의 메모리 맵


 처음에 컴퓨터 전원을 누르면 IP는 특정 주소를 가르키고 그 주소는 ROM안의 OS이고 순서대로 명령어들을 fetch하면서 


컴퓨터가 시작되겠지?







프로젝트에 이용한 Cortex-M3 Processor에 대한 정보를 간단한 자료를 살펴보려고 합니다.




1.3 ARM Cortex-M3 Processor (Yiu (2010))

 

2010에 약 2003 생산장을 Thumb and Thumb-2 are registered trademarks of 


ARM.생산, , architecture쟁은 . 쟁의 (,


) 은 작. , USB, Ethernet,


신 변 . 자 


, , 시스,


.장의 2006Cortex-M332-bit 는 다과 같


.


Greater performance ef ciency: .

 Low power consumption: .

Enhanced determinism: 은 일있음에                                               .

Improved code density: 메모공간.

Ease of use: 8-/16-bit 32-bit .

Lower-cost solutions: 32-bit 시스8-/16-bit 자의 . (32-bit 가격US$1 )

Wide choice of development tools: compiler. 



Cortex-M3 과 경 , 쟁의 시스신 시스시스. ARM7함하ARM세서 리를 Cortex-M3architecture드들을 다는 서 소()



우리는 Cortex-M3 Processor 와 μVision IDE인 keil을 이용하여 프로젝트를 진행하였다. 




강의자료에 마이크로 프로세스, 메모리, 입출력 장치의 정의가 잘 되어 있어서 다시 한 번 곱 씹어서 생각해보려고 한다.




세서(CPU)


clock(CPU)작을 반복 nite state machine. cycle메모CPU(fetch) (decode)(execute)작을 반복. Fetch IP(instruction pointer – program counter) .1 Fetchinstruction decoder결과행하메모행한. AX1(INC AX)행하


-> 우리가 사용하는 컴퓨터에서 프로세서란 즉 cpu의 클락 속도가 빠를수록 좋은 이유 -> 당연히 메모리에 저장되어 있는 명령어를 빨리 읽고 빨리 처리하니깐..!


 클럭속도는 한계가 있습니다.  왜냐하면 클럭속도를 올릴수록 발열과 전력소비가 커지기 때문입니다.


그래서 프로세서의 개수(코어) 의 개수를 늘리기 시작하면서 dual core , quadra core 등이 나왔다. 즉, 계산하는 사람이 많아진 것이다.


-> 파이썬에서 multiprocessor 를 이용할 때도 자신의 컴퓨터나 노트북 사양에 맞게 processor 수를 설정해야 한다!



메모


한 프compile/assemble CPU(decode)메모에 . 한 프메모.2 CPUIP(instruction pointer)메모fetch

IP 672,35664서 설INC AX어에 . CPU이 메모에 어 있음을 고 기 에 CPU 메모어야 한다.


결국 여기서 드는 생각은 자료구조 list, dict, tuple 등도 프로세서에게 자신이 가지고 있는 element들이 모여있는 주소를 가르쳐주고 data의 형태를 알려주는게 datastructure라는 생각이 든다.





세서시스작의 람  른 계   CPU메모


행한 결과 아야 . , 센서은 입, , , 은 입




전자공학과를 다니면서 가장 재밌게 들은 전공과목을 뽑으라고 하면 마이크로 프로세서 였다.


물론, 내가 이 과목을 잘했던 것은 아니지만 교수님께서 정말 열정적으로 재밌게 가르쳐 주셨고, 바로바로 실습을 하면서 공부했기 때문에 재미있었던 것 같다.


요즘 파이썬 & Django 를 공부하면서 Computer Science 에 기초가 없어서 힘든 점이 많다.


마이크로 프로세서 개론을 다시 공부하면서 컴퓨터의 기본 하드웨어를 이해하고 소프트웨어 공부를 하면 도움이 될 것 같아 


고이 모셔놓았던 강의자료를 펼치고 다시 살펴보고 있다.



첫 장에는 마이크로 프로세서란 무엇이고, 마이크로 컨트롤러와 어떤 하드웨어적인 즉, 구조적인 차이가 있는지 설명해주고 있다.


- 마이크로 프로세서 


마이크로 프로세서는 아주 쉽게 말하면 입력과 출력이 필요한 function이라고 말할 수도 있을 것 같다.


하나의 single chip으로 계산을 할 수 있는 ALU, REGISTER, decoder , addressing logic , system bus등이 포함되어 있어


어떤 input이 들어왔을 때 연산을 할 수가 있다. 즉, 우리 몸의 뇌라고 비유할 수 있을 것 같다.


하지만 , 우리 몸의 뇌가 혼자 동작 할 수 없듯이, 마이크로 프로세서 또한 혼자 동작 할 수 없다.




- 마이크로 컨트롤러


마이크로 컨트롤러는 하나의 컴퓨터 시스템으로 볼 수 있다. 마이크로 프로세서에 input port 와 output port가 포함되어 있어 


인풋을 받아서 마이크로 프로세서에서 처리 후 아웃풋을 만들어내서 display하거나 기타 output 장치와 연결하여 사용할 수 있다. 



- 임베디드 시스템


마지막으로 임베디드 시스템은 어떤 하나의 sub-system에만 집중하는 시스템이다. mp3 player , 기타 가전제품이 이에 해당할 것이다.



마이크로 프로세서는 교통카드나 기타 기타 값싼 전자기기 등에 포함되어 널리 사용 되고 있다. 




+ Recent posts