728x90
반응형

컴퓨터(Computer Science)/컴퓨터구조(Computer Arichitecture) 30

MIPS Addressing for 32-Bit [컴퓨터구조]

프로그래밍을 하다보면 상수가 쓰인다. 하지만 상수의 크기가 대부분 작기 때문에 고려하지 않았지만 16-bit면 충분히 표현될 줄 알았다. 32 - bit 상수도 필요하기 마련이다. 하지만 32 bit의 수를 어떻게 만들까?? 그 때 사용하는 명령어가 lui이다. lui, Load Upper immediate 즉, 상수값을 target register(rt)에 상위 16비트, 왼쪽에 복사하는 것이다. 그리고 나머지 하위 16bit는 0으로 만든다. 그렇다면 끝?? 0으로만 채워넣는 것이 아니라. or 명령어의 immedaite 타입으로 2304에 대해서 1을 채워넣는 것이다. 즉, ori 로 61^16 + 2304의 충분한 큰 값을 만들었다. **이렇게 하는 이유는32-bit의 메모리를 저장을 불러오는 것..

1번 레지스터 $at을 사용하는 때 [컴퓨터구조]

$at은 어셈블러가 알아서 사용하는 레지스터이다. 위와 같이 왼쪽 표현이 프로그래머가 짠 표현이라면 어셈블러는 우측과 같이 바꾸어준다. 이렇게 된 이유는 실제로 mov, blt를 MIPS에서 지원하지 않는 연산이지만 어셈블러는 이를 알아듣고 실제로 있는 연산으로 치환해주는 것이다. 다시 정리하자자면 MIPS process에선 지원하지 않고 MIPS assembly process에서 지원해주는 것이다.

Basic block -[컴퓨터구조]

basic block 인스트럭션의 나열 블락안에 브랜치들은 없다. 맨끝은 예외 브랜치 타겟이 되는 경우도 없다 맨처음 예외 >> 베이직 블락은 한번 인스트럭션이 수행되면 끝까지 수행된다는 뜻. 다른 곳에서 들어오거나 다른 곳으로 나가는 일이 없다는 뜻이다. 최적화를 위해 컴파일러는 베이직블락을 찾고 고성능 프로세서는 베이직블락 수행능력을 향샹시키기 위해 노력한다. 한번시작하면 끝날때까지 하기 때문에 중간에 어떤일이 벌어져도 결과가 같으면 상관이 없다는 뜻. 즉 코드의 라인의 내용이 바뀌어도 결과가 같으면 상관없다는 뜻이다. 그래서 결과가 같게 중간의 내용을 최적화 한다. 정확하게는 내가 알아보겠다.

MIPS Architecture & Operation, 구조와 연산 [컴퓨터구조]

MIPS의 구조를 보자 MIPS는 32비트의 레지스터를 가지고 있고 각 레지스터는 0-31 비트가 있다. 레지스터를 더 자세히 보자면 32-bit 레지스터를 레지스터 파일(Register File)이라고 한다. 2개의 read port와 1개의 write port가 있다. 1 clock에 2개를 읽고 1개를 쓸 수 있다는 것이다. 저기 그림과 같이 src1 data 와 src2 data를 동시에 읽을 수 있다. 32개의 레지스터 중에서 2개를 읽을 수 있으니까 32-bit짜리 데이터 2개를 읽을 수 있다. (읽을 레지스터는 src1 addr, src2 addr을 통해서 주소를 입력받아서 읽게 되어있다.) (주소는 5-bit) write는 쓰기 위한 데이터 (32-bit) 어떠한 주소에 쓰냐면 dst ad..

벤치마크, Benchmark [컴퓨터구조]

BenchMark 컴퓨터의 성능을 측정하기 위해서 Benchmarks 라는 것이 나오게 되었다. 그러나 기준이 필요했다. 표준기계가 있어서 그것으로 측정한다고 한다. CINT란 Floating 계산말고 INT로 성능을 시험했다는 뜻이라고 한다. Name 이라 써진 것이 프로그램들이다. 저기 SPEC ratio가 기준 컴퓨터보다 몇배가 뛰어난지 측정한 것이다. 그러나 산술 평균을 쓰지 않고 Geometirc Mean ,기하 평균을 썼다. 벤치마크 프로그램을 수행할 때는 원칙이 있는데 누가 돌려도 성능이 똑같이 측정이 되어야한다. 그래서 위와 같이 list everything 처럼 측정 환경을 같게 해주고 측정을 해야한다. 즉 변인을 잘 통제해야한다는 뜻이다.

ISA, Principle of Machine Design [컴퓨터구조]

Instruction : Language of the computer (ex MIPS) 인스트럭션이란 컴퓨터 언어라고 생각하면 되겠다. Instruction set: The vocabulary of commands that a computer understands 다시 말해서 컴퓨터의 종류가 다르다면 Instruction set 또한 다를 것이다. (대부분 같겠지만) 초기의 컴퓨터는 simple instruction set을 가지고 있었다. 물론 복잡한 형태로 CISC, Complex Instruction Set Computer 거치긴 했지만 RISC, Reduced Instruction Set Computer로 바뀌면서 다시 현대에는 simple로 되어가고 있다. 예를 들면 ARMv7: Similar ..

컴퓨터구조(3) Cloud TPU (2017Google I/O)

https://www.youtube.com/watch?v=UsDhVx6cOrw 참고하면 될 것이고 TPU 라는 것은 Tensor Processing Unit이라는 것인데 2017년 당시 GPU보다 30배정도 성능이 뛰어났고 전력비도 80배 가까이 좋았다. 구글에서는 유저가 늘어남에따라 규모가 커졌는데 오류율을 낮출 필요성을 느꼈다. 여기서 A.I와 M.L(인공지능과 머신러닝) 을 도입해야 겠다고 생각했고 엄청난 계산을 위한 TPU를 개발했다. 머신러닝은 2가지 요소로 볼 수 있는데 1. 훈련(Training) 2. 추론(Inference) 훈련은 집약적작업이며 방대한 계산을 요구하는 작업이고 추론은 실시간으로 이뤄져야하는 작업이다. 그래서 2017년 차세데 TPU인 cloud TPU를 발표했다. 이는 G..

CPU의 성능 비교, 측정 [컴퓨터구조]

이제는 프로세서에 대해서 알아보자 CPU, Central Processor Unit의 약자다. CPU의 칩 생산자의 최강자인 AMD와 INTEL을 볼까?? AMD를 앞에 놓은 것은.. 그냥 놨다. Intel의 펜티엄 AMD의 바르셀로나 CPU는 3가지 구성요소로 구성되어 있다. 1. Datapath -> 실제로 데이터를 가지고 연산을 수행 2. Control - 각각의 CPU의 컴포넌트들을 제어함 3. Cache Memory **(이건 우리가 알고 있는 그 캐시가 맞다) SRAM임 컴퓨터의 성능을 알 수 있는 2가지 지표가 있다. 사용자에 따라 중요한 지표가 있다. 1. Response Time(응답시간) 2. Throughput(처리량) 1. 작업의 시작부터 완료까지 걸리는 시간 -> 일반적으로 개인 ..

컴퓨터의 종류와 성능을 높이는 8가지 아이디어

크게 4가지로 분류할 수 있다. 1. 개인컴퓨터 2. 서버용 컴퓨터 3. 슈퍼컴퓨터 4. 임베디드 컴퓨터 2012년 이후로 PC시장은 포화되었고 스마트폰 시장의 규모가 커지면서 PMD에 대한 관심이 높아졌고 그에 따른 Computing기술이 요구될 것으로 예상됨. 컴퓨터 구조의 공부를 통해서 1. 프로그램이 어떻게 하드웨어를 움직이게 하는지를 알 수 있다. 2. 하드웨어와 소프트웨어의 인터페이스를 알 수 있다. 3. 프로그램 성능 결정 요인을 알 수 있다. 4. 하드웨어 설계를 어떻게 해야 성능이 나올지 알 수 있다. 5. 병렬처리에 대해 알 수 있다. 컴퓨터 성능을 높이기 위한 8가지 방법이 있다. 1. Design for Moore's Law 18개월에서 24개월이면 집적도가 2배가 되는 무어의 법칙..

728x90
반응형