2021년 목표설정

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

하드웨어 설계의 4대 원칙

설계 원칙 1 : 간단하기 위해서는 규칙적인 것이 좋다.
덧셈 등의 연산의 피연산자(Operand)는 더해질 숫자 두 개와 결과를 기억할 하나, 즉 세 개의 레지
스터를 가지고 있는 것이 자연스럽다.
이렇게 모든 명령어가 피연산자를 반드시 세 개씩 가지도록 제한하면 하드웨어가 단순해진다.
피연산자의 개수가 가변적이라면 하드웨어가 복잡해진다.

설계 원칙 2 : 작은 것이 더 빠르다
MIPS 에서 레지스터의 크기는 32비트 이다.
보통 MIPS 에서는 32비트가 한 덩어리로 처리되는데 이 단위를 워드(Word) 라고 한다.
MIPS 에는 총 32개의 레지스터가 있다.
레지스터가 많아지면 전기 신호가 더 멀리까지 전달되어야 하므로 클럭 사이클 시간이 길어진다.
그러므로 기본적으로는 레지스터를 작게 설계하는 것 만이 전부는 아니다.
예를 들어 레지스터를 31개로 한다고 해서 32개보다 빨라지지는 않는다.
컴퓨터를 설계하는 엔지니어는 더 많은 레지스터를 원하는 프로그래머와 클럭 사이클을 빠르게
하고 싶은 자신의 바램 사이에서 적절한 타협점을 찾아야 할 것이다.

설계 원칙 3 : 자주 생기는 일을 빠르게 하라.
상수나 배열 같은 경우, MIPS 는 메모리에서 읽어와야 한다.
특히 상수 피연산자는 자주 사용하므로 상수 필드를 가지는 산술 명령어를 사용하면 매번 메모리에
저장된 상수를 가져오는 것보다 프로그램이 훨씬 빨라지게 된다.
자주 사용되지 않는 혹은 한참 후에 사용할 변수를 메모리에 넣는 일을 스필링(Spilling) 이라고
하는데 이 경우 데이터가 레지스터에 있으면 더 빨리 접근이 가능하다.
메모리의 경우 레지스터 보다 접근 속도가 느리기 때문에 레지스터에 저장된 데이터를 사용하면
시간이 절약되고 사용이 간편하다.

설계 원칙 4 : 좋은 설계에는 적당한 절충이 필요하다.
무한정 메모리나 레지스터가 주어진다면야 그 보다 좋은 것은 없겠지만 실상은 그렇지 못하다.
또한 명령어의 경우에도 빈번하게 실행되어야 하는데 만약 모든 명령어의 길이가 제각각이라면
설계원칙의 1에 어긋나기 때문에 MIPS 설계자들은 모든 명령어의 길이와 형식을 같게 하는 절충안
을 택하게 되었다.
R-Type 명령어 형식을 만들고 이것으로 불충분하기 때문에 I-Type 명령어 형식을 만들었다.
하드웨어 설계자는 자신에게 주어진 한정된 자원을 가지고 최적의 성능을 내기 위하여 항상 이상과
현실 사이에서 적당한 절충을 통한 설계를 진행하여야 한다.

댓글

이 블로그의 인기 게시물

성공적인 소셜커머스를 위한 10단계 전략

[C# & LINQ] 랜덤으로 데이터를 한 개 추출하는 방법

[메모] PostgreSQL에서 Insert 하는 경우 자동채번 PK가 중복에러 나는 경우