<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=%EB%B8%94%EB%A6%AC%EB%8A%94_%EC%96%B4%EC%8D%B8%ED%95%A0%EA%B1%B0%EC%95%BC%2F%EC%A7%84%ED%96%89_%EB%82%B4%EC%97%AD</id>
	<title>블리는 어썸할거야/진행 내역 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=%EB%B8%94%EB%A6%AC%EB%8A%94_%EC%96%B4%EC%8D%B8%ED%95%A0%EA%B1%B0%EC%95%BC%2F%EC%A7%84%ED%96%89_%EB%82%B4%EC%97%AD"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=%EB%B8%94%EB%A6%AC%EB%8A%94_%EC%96%B4%EC%8D%B8%ED%95%A0%EA%B1%B0%EC%95%BC/%EC%A7%84%ED%96%89_%EB%82%B4%EC%97%AD&amp;action=history"/>
	<updated>2026-05-15T19:49:09Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=%EB%B8%94%EB%A6%AC%EB%8A%94_%EC%96%B4%EC%8D%B8%ED%95%A0%EA%B1%B0%EC%95%BC/%EC%A7%84%ED%96%89_%EB%82%B4%EC%97%AD&amp;diff=52202&amp;oldid=prev</id>
		<title>imported&gt;kangyb1: {CREATE}</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=%EB%B8%94%EB%A6%AC%EB%8A%94_%EC%96%B4%EC%8D%B8%ED%95%A0%EA%B1%B0%EC%95%BC/%EC%A7%84%ED%96%89_%EB%82%B4%EC%97%AD&amp;diff=52202&amp;oldid=prev"/>
		<updated>2019-05-15T09:05:04Z</updated>

		<summary type="html">&lt;p&gt;{CREATE}&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;* 2019.3.19&lt;br /&gt;
** 배경 지식(?) 및 1,2단원 정리&lt;br /&gt;
** 현대 컴퓨터의 대부분은 폰 노이만 구조를 따르고 있음&lt;br /&gt;
*** 프로세서(ALU,레지스터), 컨트롤 유닛(CU), 메모리(RAM), 외부 대용량 저장소(HDD,SSD), I/O&lt;br /&gt;
** 컴퓨터 살 때 뭐 사죠?&lt;br /&gt;
*** CPU, RAM, 그래픽카드, 모니터/마우스/키보드, 하드디스크, SSD 등등&lt;br /&gt;
*** 기본적인 구조인 프로세서 &amp;lt;-&amp;gt; 메모리를 어떻게 구현했는지&lt;br /&gt;
** 컴퓨터 구조에 대한 간단한 설명&lt;br /&gt;
*** CPU,Memory, I/O Devices가 있고 각각이 Data bus, Control Bus, Address Bus가 연결하고 있음&lt;br /&gt;
** 메모리 계층&lt;br /&gt;
*** (레지스터) -&amp;gt; 캐시 -&amp;gt; 메인 메모리(RAM) -&amp;gt; 보조 메모리(HDD,SSD)&lt;br /&gt;
** 명령어 실행 과정&lt;br /&gt;
*** (명령어 인출 -&amp;gt; 실행) 반복한다&lt;br /&gt;
*** 파이프라이닝이나 인터럽트 등의 이유로 여러 과정이 추가되거나 과정이 나눠질 수 있지만, 기본적으로 이렇다&lt;br /&gt;
** 1단원&lt;br /&gt;
** 코드 -&amp;gt; (컴파일러) -&amp;gt; 어셈블리 코드 -&amp;gt; (어셈블러) -&amp;gt; 기계어&lt;br /&gt;
** 어셈블리어와 기계어는 1:1로 매칭됨&lt;br /&gt;
** 2진수 표현&lt;br /&gt;
*** 어차피 논리회로 때 다 배웠을 것이다&lt;br /&gt;
*** 오버플로우에 대한 얘기 -&amp;gt; MSB로 들어오는 캐리와 나가는 캐리가 다를 때&lt;br /&gt;
** 2단원&lt;br /&gt;
** 배경 지식 할 때 했던 것들&lt;br /&gt;
** 파이프라인&lt;br /&gt;
*** 앞서 진행했던 명령어 실행 과정을 여러 개로 나눌 수 있음&lt;br /&gt;
*** 빨래통-&amp;gt;세탁기-&amp;gt;건조기-&amp;gt;옷장을 예로 들어 설명&lt;br /&gt;
*** x86은 명령어 실행 단계를 6단계로 나눌 수 있는데, 각각의 실행 단계를 &amp;#039;&amp;#039;&amp;#039;물리적으로 분리할 수 있음&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*** 각각의 단계를 병렬적으로, 6개의 명령어를 병렬적으로 동시 수행하여 속도/클럭 속도를 대략 6배 정도 증가시킬 수 있음&lt;br /&gt;
** 슈퍼스칼라 (멀티코어 프로세서)&lt;br /&gt;
*** 파이프라이닝 6단계 중 한 단계가 오래 걸린다면, 그것 때문에 클럭 속도를 늦추는 건 비효율적임&lt;br /&gt;
*** 예를 들어 실행 단계에서 두 클럭 이상의 시간이 걸린다면, 실행 단계를 처리하는 모듈을 추가로 배치해서 속도를 올릴 수 있음&lt;br /&gt;
*** ex) 실행 단계 처리하는 하드웨어 1에는 홀수 번째 명령어만 보내고, 짝수 번째는 하드웨어 2로 보냄&lt;br /&gt;
** 메모리 읽기&lt;br /&gt;
*** 1단계: 주소 버스에 읽고자 하는 주소가 올려짐&lt;br /&gt;
*** 2단계: 메모리의 read 플래그가 0으로 변경됨&lt;br /&gt;
*** 3단계: data bus에 값이 읽힘&lt;br /&gt;
*** 4단계: 메모리의 read 플래그가 1로 변경됨&lt;br /&gt;
** 캐시 메모리&lt;br /&gt;
*** 캐시 메모리 -&amp;gt; 메인 메모리(RAM) -&amp;gt; 보조 메모리(HDD,SSD)&lt;br /&gt;
*** 오른쪽으로 갈수록 용량 당 가격(현금)이 저렴해지고, 속도가 느려짐&lt;br /&gt;
*** 1개의 프로그램을 실행하는 상황을 가정해보자&lt;br /&gt;
**** 프로그램 전체가 메인 메모리에 올라가고, 일부를 캐시에 가져옴&lt;br /&gt;
**** 찾고자 하는 데이터가 있으면 먼저 캐시에 있는지 보고, 아닐 때 메인 메모리에 접근해서 가져옴&lt;br /&gt;
**** 캐시에 접근할 때는 1클럭만에 접근할 수 있지만, 메인 메모리에 접근할 때는 수십 클럭이 걸림&lt;br /&gt;
**** 캐시 Hit 비율을 높게 잡는 게 중요하겠죠&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
* 2019.5.25&lt;br /&gt;
** 12단원&lt;br /&gt;
** float,double 등의 실수 값은 컴퓨터로 어떻게 저장되는가&lt;br /&gt;
*** 먼저 10진수를 표현하는 방법으로 접근해보자&lt;br /&gt;
*** 123.4567에서 각각의 자리는 10^2, 10^1, 10^0, 10^-1, 10^-2.... 자리다&lt;br /&gt;
*** 다음 표현들은 다 같은 값이다&lt;br /&gt;
**** 123.4567&lt;br /&gt;
**** +1.234567e+02&lt;br /&gt;
**** &amp;#039;&amp;#039;&amp;#039;+&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;1.234567&amp;#039;&amp;#039;&amp;#039; * 10^&amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*** 마지막 표현 방법으로 수를 표기할 때, 어떠어떠한 정보가 있으면 수를 확정할 수 있을까?&lt;br /&gt;
**** 부호&lt;br /&gt;
**** 유효숫자? &lt;br /&gt;
**** 10의 지수 (exponent)&lt;br /&gt;
*** 위 3개의 정보가 필요하다는 것을 알고 가자&lt;br /&gt;
    &lt;br /&gt;
*** 2진수로 표현한 실수를 보자&lt;br /&gt;
*** 2진수 101.1011은 각 자리가 2^2, 2^1, 2^0, 2^-1, 2^-2, 2^-3, 2^-4&lt;br /&gt;
**** 값은 4 + 1 + 1/2 + 1/8 + 1/16이 되겠죠?&lt;br /&gt;
*** 위에서 했던 10진수 표현과 같이 여러 가지 방법으로 표현해보자&lt;br /&gt;
**** 101.1011&lt;br /&gt;
**** &amp;#039;&amp;#039;&amp;#039;+&amp;#039;&amp;#039;&amp;#039;1.&amp;#039;&amp;#039;&amp;#039;011011&amp;#039;&amp;#039;&amp;#039; * 2^&amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
**** 여기서도 필요한 정보는 &amp;#039;&amp;#039;&amp;#039;sign, fraction, exponent&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
**** 2진수로 표시하면, 값이 정확히 0이 아닌 경우는 맨 앞의 수가 무조건 1이다&lt;br /&gt;
**** 지수는 음수가 될 수 있다&lt;br /&gt;
**** 이 3개의 정보를 32비트(float) 또는 64비트(double) 안에 넣는 방법?&lt;br /&gt;
     &lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;IEEE-754&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*** 위에서 말한, 비트 안에 정보를 저장하는 방법의 표준&lt;br /&gt;
*** float&lt;br /&gt;
*** 1비트 sign, 8비트 exponent, 23비트 fraction&lt;br /&gt;
*** double&lt;br /&gt;
*** 1비트 sign, 11비트 exponent, 52비트 fraction&lt;br /&gt;
&lt;br /&gt;
*** float 기준으로 설명해보자&lt;br /&gt;
*** 유의할 점&lt;br /&gt;
**** exponent는 0 이하의 수일 수 있기 때문에, 비트 10000000이 기준 값(0)이 됨&lt;br /&gt;
**** 이 값보다 1씩 작아질수록 exponent가 작아지고, 커질수록 exponent가 커짐&lt;br /&gt;
**** ex) 10000011: 지수 3, 01111101: 지수 -2&lt;br /&gt;
**** 위에서 언급한 것처럼, 지수 형태로 표현했을 때 맨 앞의 수는 원래 수가 0이 아닌 경우 무조건 1임&lt;br /&gt;
**** 맨 앞의 1은 저장할 필요가 없다&lt;br /&gt;
**** 0을 저장하는 방법은 뒤에 따로 있음&lt;br /&gt;
*** 방법&lt;br /&gt;
**** 맨 앞의 1비트에 부호 저장(음수면 1, 양수면 0)&lt;br /&gt;
**** 다음 8비트에 지수 저장 (기준:10000000)&lt;br /&gt;
**** 나머지 23비트에 소수점 이하의 비트 그대로 저장&lt;br /&gt;
*** ex) 3.25&lt;br /&gt;
**** 3.75 = 2 + 1 + 0.25&lt;br /&gt;
**** 2진수로 11.01  = 1.101 * 2^1&lt;br /&gt;
***** 부호비트: 0 &lt;br /&gt;
***** 지수비트 10000001&lt;br /&gt;
***** 가수비트 101&lt;br /&gt;
***** 따라서 float로 표현하면 0 10000001 1010000000000....000&lt;br /&gt;
*** &amp;#039;&amp;#039;&amp;#039;컴퓨터구조때 다시 배운다아아&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;kangyb1</name></author>
	</entry>
</feed>