CS/Computer Architecture

CS/Computer Architecture

bit_field

구조체의 bit_field란? 구조체의 정수 타입의 멤버 변수를 비트 단위로 쪼개서 사용할 수있도록 하는 방법이다. Struct 구조체이름{ 정수형type 변수명 : 비트수 } 와 같이 사용한다. (정수형type 은 (unsigned/signed) char, short, int, long 이 있다.) 예를 들어서 bit_field 구조체 안에 unsigned char a : 3; unsigned char b : 2; 라고 코드가 작성되어 있다면 bit_field 구조체는 char 타입 1바이트(8비트)를 메모리에 할당하고 a가 3비트, b가 2비트를 사용한다. 만약에 사용할 비트 합이 할당할 데이터 타입보다 크다면 (예를들어 비트의 총 합은 10비트인데 unsigned char은 8비트) 할당할 데이터 ..

CS/Computer Architecture

struct와 union

struct은 구조체라고 한다. 구조체는 하나 이상의 서로 다른 종류의 변수들을 묶어서 새로운 자료형을 정의하는 것이다. 구조체를 사용하면 연관된 변수들을 하나로 묶어서 관리함으로써 데이터 관리에 유용하다. 따라서 데이터 양이 많아지면 유리한 편이다. 사용할 때에는 struct 라는 키워드를 사용한다. 구조체의 멤버에 접근하려면 구조체 변수를 통해서 구조체 멤버의 값을 참조 해야한다. 멤버에 접근할 때에는 .(dot) 을 사용하는데 이를 직접 접근이라고 한다. 예를 들어 다음과 같다. [구조체 변수명].[구조체 멤버] st1.name union은 공용체라고 한다. 공용체도 struct와 같이 사용자가 정의한 자료형인데 다른 점이 있다면 공용체는 메모리 공간을 공유한다. 예를 들어서 구조체에서 char a..

CS/Computer Architecture

QtSpim 설치

QtSpim 이란? MIPS 프로세서의 시뮬레이터로서, 어셈블리 코드를 실행하기 위해 설계된 소프트웨어이다. 편집 공간이 따로 존재하지 않고 작성된 코딩파일을 동작시킬 수 있다. (SPIM은 "MIPS"를 거꾸로 변형한 단어이다.) https://sourceforge.net/projects/spimsimulator/files/ spim mips simulator - Browse Files at SourceForge.net This directory contains compiled, installable copies of Spim for various operating systems: QtSpim: QtSpim_*_Windows.zip -- Windows (32 or 64 bit) QtSpim_*_mac...

CS/Computer Architecture

Assembly Language

Translation and Startup Translation and Startup Translation Example • 0 ~ 100의 정수 제곱합을 계산하고 출력 label : 주소를 symbolic하게 나타낸 것 sd : 8바이트의 데이터를 어딘가에 저장해라. mips 명령어에 존재X. 실제 Assembler에 의해서 두개로 바뀐 걸 볼 수 있음. macro : 반복되는 코드들을 간단하게 표현해서 사용 comment : 주석. mips에서는 #을 이용 Translation 컴파일러 – Inputs: • Programming language code 및 명령어 집합 • 메모리 및 레지스터 구성 – Output: Assembly language code – Compiler’s function • S..

CS/Computer Architecture

Big Endian과 Little Endian

수업시간에 과제를 구현하면서 빅 엔디안과 리틀엔디안에 관련해서 이해해야하는 부분이 있었다. https://www.save-editor.com/tools/wse_hex.html HEX & LITTLE ENDIAN CONVERTER - SAVE-EDITOR.com www.save-editor.com 여긴 내가 잘 구현했는지 확인해보기 위해서 이용했던 엔디안 변환 사이트 bit 와 byte 일단 컴퓨터는 모든 데이터를 2진수로 표현하고 처리한다. bit 는 데이터의 최소 단위이다. 0아니면 1만 저장이 가능하다. byte는 이러한 bit가 8개 모여서 구성된다. 이건 한 문자를 표현할 수 있는 최소 단위이다. 컴퓨터는 데이터를 메모리에 저장할 때 byte 단위로 나누어서 저장을 한다. 보통 컴퓨터가 저장하는 ..

CS/Computer Architecture

Text file과 Binary file

C언어에서는 텍스트파일과 바이너리 파일은 구분해서 사용된다. 잘못 읽어 들이는 것을 방지하기 위함이다. 먼저 텍스트 파일은 문자로 구성된 파일이며, 대부분 ASCII(아스키코드)문자로 이뤄진 파일이나 사람이 사용하는 한글, 영문 같은 문장들로 이뤄진 파일이다. 텍스트 파일은 연속적인 라인들로 구성되어 있으며 그 예로 확장자가 cpp인 프로그램 소스코드 파일이나 메모장에서 작성한 txt 파일 등이 있을 것이다. 이러한 텍스트파일과 달리, 이진파일은 데이터로 구성된 파일이다. 사람이 읽을 수는 없지만 컴퓨터는 읽을 수 있는 파일이다. 모든 파일은 0과 1로 이루어져 있으며 바이너리 파일이라고도 부른다. 텍스트파일은 라인들로 분리되는데 이진파일은 라인들로 분리되지 않는다. 그리고 모든 데이터들은 문자열로 변환..

CS/Computer Architecture

MIPS Assembly Code 문제

문제 1 – 다음 C 문장에 해당하는 MIPS 어셈블리 코드를 작성하시오. 변수 g, i, j는 레지스터 $s1, $s3, $s4에 할당되었고 배열 A와 B의 시작 주소는 레지스터 $s6, $s7에 들어 있다고 가정하며 A, B의 각 원소는 4 바이트 워드이다. • B[g] = A[i] + A[j]; [풀이] sll $t0, $s3, 2 // $t0 = i * 4 add $t0, $t0, $s6 // $t0 = &A[i] lw $t0, 0($t0) // $t0 = A[i] sll $t1, $s4, 2 // $t1 = j * 4 add $t1, $t1, $s6 // $t1 = &A[j] lw $t1, 0($t1) // $t1 = A[j] sll $t2, $s1, 2 // $t2 = g * 4 add $t2..

CS/Computer Architecture

C언어 데이터타입의 종류와 연산자 동작

C언어 데이터 타입의 종류와 연산자의 동작을 표로 정리해봤다! 자료형 설명 byte 범위 정수형 부호있음 Short Short형 정수 2 -32768 ~ 32767 Int 정수 2 or 4 -2147483648 ~ 2147483647 Long Long 형 정수 4 -2147483648 ~ 2147483647 부호없음 Unsigned short 부호없는 short형 정수 2 0 ~ 65535 Unsigned int 부호없는 정수 2 or 4 0 ~ 4294967295 Unsigned long 부호없는 long형 정수 4 0 ~ 4294967295 문자형 부호있음 Char 문자 및 정수 1 -128 ~ 127 부호없음 Unsigned char 문자 및 부호없는 정수 1 0 ~ 255 부동소수점형 Float ..

CS/Computer Architecture

von Neumann 아키텍처와 Harvard 아키텍처

von Neumann 아키텍처와 Harvard 아키텍처를 비교해서 정리해보았다. CPU 레벨에서 메모리에 접근하는 방법에 관해 고려해야할 두 가지 설계(design)가 있는데, 첫번째는 Von Neumann architecture이고 두번째는 Harvard architecture이다. 메모리 사용방식에 따라서 두 프로세서 architecture를 분류할 수 있다. 이 두 architecture의 중요한 차이점은 Von Neumann architecture 에서는 동일한 메모리와 버스가 프로그램을 실행하는 데이터 및 명령어를 저장할 수 있다는 것이다. 프로그램 메모리와 데이터 메모리에 동시에 접근할 수 없기 때문에 Von architecture는 병목 현상에 취약하고, 이것은 시스템 성능에도 영향을 미친다..

CS/Computer Architecture

CPI 문제

문제 1 1.1: 1개, 2개, 4개, 8개의 코어를 사용하는 경우, 프로그램의 실행시간은 얼마인가? [풀이] CPI란, 명령어 하나를 처리하는데 필요한 클럭 사이클 수를 의미한다. 문제에서 주어진 프로세서에 대해 정리하자면 다음과 같다. 산술 명령어 적재/저장 명령어 분기 명령어 CPI 1 12 5 명령어 개수 2.56E9(2.56x109) 1.28E9 2.56E8 프로세서는 2GHz 의 클럭 주파수로 동작하는데, 이는 1초에 클럭 사이클이 2*10^9번 임을 뜻하며 클럭 속도가 2*10^9 라는 말과 같다(1GHz = 10^9). 프로그램의 실행시간 = CPU 클럭 사이클 수 / 클럭 속도 = CPU 클럭 사이클 수 * 클럭 사이클 시간 CPU 클럭 사이클 수 = 명령어의 수(IC) * CPI 프로그..

CS/Computer Architecture

CPI 관련 문제

https://covenant.tistory.com/68 [컴퓨터 구조]Chapter 1. Computer Abstractions and Technology [Class of Computers] Personal computers - General purpose, variety of software. - Subject to cost/performance trade off. Server computers - Network based - High capacity, performance, reliability. -.. covenant.tistory.com

dawonny
'CS/Computer Architecture' 카테고리의 글 목록