라벨이 IoT/HardWare인 게시물 표시

2021년 목표설정

이미지
기본적으로 작년에 달성하지 못한 것들을 하려고 생각중인데..코로나가 언제까지 이어질지, 한국이나 북해도는 갈 수 있을지..자격증은 응시 가능할지..여러가지가 불확실하다. 2021년은 무엇보다 정신적인 부분과 경제적인 부분에 중점을 두고 조금 더 치열하게 지내보고 싶다. 일본나이로도 30대 마지막 해, 이제 불혹에 접어드는 나이..복잡하지만 심플하게. 육체적목표 : 트라이에슬론 스탠다드 도전하기 정신적 : 자격증2개 도전 + 자체개발 서비스 론칭 가족적 : 가정의 평화를 유지하기 경제적 : 외식과 유흥비를 줄이고 부수입을 늘려서 결과적으로 저축하기 사회적 : 목표세미나를 포함해서 민단과 개인인맥의 활성화와 교류를 촉진하기

MIPS Instruction Format

컴퓨터는 2진수를 사용해서 연산을 한다는 것은 익히 알려진 사실이다. 컴퓨터 내부에서는 높고 낮은 전기 신호를 연속된 형태의 숫자로 변환하여 저장되고 사용된다. 이것을 이진 비트(이진 자릿수,Binary bit) 라고 하며 비트(bit) 단위가 계산의 기본 단위가 된다. 이 단위는 높음/낮음, on/off, 참/거짓, 1/0 의 두 값 가운데 한 값을 가지게 된다. 이 이진 비트를 기준으로 컴퓨터에게 명령할 작업(명령어)을 숫자의 나열로 나타낸 것이 명령어 포맷 이라고 할 수 있다. 거의 모든 명령어는 레지스터를 사용하므로 레지스터 이름을 번호로 바꾸는 규칙이 있다. MIPS 에서는 총 32개의 레지스터를 사용한다. 레지스터는 고속의 데이터 저장소로 MIPS 에서 산술연산을 하기 위해서는 데이터가 레지스터에 있어야 한다. MIPS에서는 레지스터를 다음과 같이 피연산자(변수) 형식으로 제공한다. 설명 뒤의 괄호의 값은 레지스터 번호이다. $zero : 상수 0을 가진 레지스터. (0) $at : 큰 상수를 처리하기 위해 사용되도록 예약된 특수 레지스터 (1) $v0,$v1 : 결과 및 수식 계산 값 (2~3) $a0,$a1,$a2,$a3 : Argument, 함수에 사용되는 인자값을 담는 레지스터 (4~7) $t0,$s1,.....,$t7 : Temporary, 임시저장 레지스터 (8~15) $s0,$s1,....,$s7 : Save, 저장 레지스터 (16~23) $t8,$t9 : Temporary, 임시저장 레지스터 (24~25) $k0,$k1 : 운영체제 전용 레지스터 (26~27) $gp : 전역(global) 포인터 (28) $sp : 스택(stack) 포인터 (29) $fp : 프레임(frame) 포인터 (30) $ra : 복귀 주소(return adress) (31) MIPS는 모든 명령을 word 단위(32bit, 4byte) 로 처리한다. 명령어도 예외가 아니어서 모든 명령어는 32bit 단위로 처리되는데 기본적으로 다음과 같다. 가장 기본적...

하드웨어 설계의 4대 원칙

설계 원칙   1  : 간단하기 위해서는 규칙적인 것이 좋다. 덧셈 등의 연산의 피연산자(Operand)는 더해질 숫자 두 개와 결과를 기억할 하나, 즉 세 개의 레지 스터를 가지고 있는 것이 자연스럽다. 이렇게 모든 명령어가 피연산자를 반드시 세 개씩 가지도록 제한하면 하드웨어가 단순해진다. 피연산자의 개수가 가변적이라면 하드웨어가 복잡해진다. 설계 원칙   2  : 작은 것이 더 빠르다 MIPS 에서 레지스터의 크기는 32비트 이다. 보통 MIPS 에서는 32비트가 한 덩어리로 처리되는데 이 단위를 워드(Word) 라고 한다. MIPS 에는 총 32개의 레지스터가 있다. 레지스터가 많아지면 전기 신호가 더 멀리까지 전달되어야 하므로 클럭 사이클 시간이 길어진다. 그러므로 기본적으로는 레지스터를 작게 설계하는 것 만이 전부는 아니다. 예를 들어 레지스터를 31개로 한다고 해서 32개보다 빨라지지는 않는다. 컴퓨터를 설계하는 엔지니어는 더 많은 레지스터를 원하는 프로그래머와 클럭 사이클을 빠르게 하고 싶은 자신의 바램 사이에서 적절한 타협점을 찾아야 할 것이다. 설계 원칙   3  : 자주 생기는 일을 빠르게 하라. 상수나 배열 같은 경우, MIPS 는 메모리에서 읽어와야 한다. 특히 상수 피연산자는 자주 사용하므로 상수 필드를 가지는 산술 명령어를 사용하면 매번 메모리에 저장된 상수를 가져오는 것보다 프로그램이 훨씬 빨라지게 된다. 자주 사용되지 않는 혹은 한참 후에 사용할 변수를 메모리에 넣는 일을 스필링(Spilling) 이라고 하는데 이 경우 데이터가 레지스터에 있으면 더 빨리 접근이 가능하다. 메모리의 경우 레지스터 보다 접근 속도가 느리기 때문에 레지스터에 저장된 데이터를 사용하면 시간이 절약되고 사용이 간편하다. 설계 원칙   4  : 좋은 설계에는 적당한 절충이 필요하다. 무한정 메모리나 레지스터가 주어진다면야 그 보다 좋은 것은 없겠지만 실상은 그렇지 못하...

PCSPIM 설치 및 사용법

이미지
SPIM은 MIPS R2000/3000 프로세서를 위해 작성되어진 S/W를 실행하는 시뮬레이터이다. 어셈블리어나 MIP 명령어를 번역하고 즉시 실행할 수 있게 한다. SPIM 은 Windows Version 과 X-Windows(linux) Version 이 있으며 여기에는 Windows Version 을 올려놓았다. X-Windows Version 을 원한다면 다음의 링크를 참조하라. http://www.cs.wisc.edu/~larus/spim.html  PCSpim.zip PCSPIM For Windows Download [ 구 성 ]   기본 구성 요소는 다음과 같다.  1. Register Display : MIPS CPU 와 FPU 의 모든 레지스터 값을 보여준다 2. Text Segments   : 자동으로 로드되는 시스템 코드와 자신의 프로그램으로부터 명렁어를                              출력한다. 3. Data segments   : 프로그램의 스택에 있는 데이터와 자신의 프로그램의 메모리 안에 로드                              되는 데이터를 출력한다. 4. SPIM messages : error 메시지를 보여준다 [ Text segments ] [ 기 능 ] 1. Load ( l File   →   Open ) :   l 어셈블리   파일을   선택한다 . 2. Go (lSimulator → Go ) : l결과가 콘솔에 출력된다. 3. Single s...