์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- ์ค๋ผํดDB
- ์ฐ๋ถํฌ
- ํ์ด์ฌ
- ์๋ฐ
- ํ์ด์ฌ ์ฒผ๋ฆฐ์ง
- Reversing
- data communication
- ๋ฌ์คํธ ์์
- Database
- ubuntu
- ์๋ฐ ๊ฐ๋
- ๋ฌ์คํธ
- ์๋ฐ ๊ธฐ์ด
- ์ด์์ฒด์
- OS
- Python
- Python challenge
- Rust
- ์๊ณ ๋ฆฌ์ฆ
- Operating System
- java
- ํ์ด์ฌ ์๊ณ ๋ฆฌ์ฆ
- ์ค๋ผํด
- ๋ฐฑ์ค
- ๋ฐ์ดํฐ ํต์
- C
- ๋ฌ์คํธ ํ๋ก๊ทธ๋๋ฐ ๊ณต์ ๊ฐ์ด๋
- ํ์ด์ฌ ์ฑ๋ฆฐ์ง
- ๋ฐฑ์ค ๋ฌ์คํธ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
Archives
- Today
- Total
IT’s Portfolio
[System] The Elements of Computing System - 2 ๋ณธ๋ฌธ
728x90
๋ฐ์ํ
๐ป The Elements of Computing System - 2
๐ค 2์ง์
- ์ปดํจํฐ๋ ์๋ฅผ 2์ง์๋ก ๋ค๋ฃธ
- 10์ง์ : 21
- 2์ง์ : 10101($2^4\times1+2^2\times1+1$)
๐ค 2์ง ๋ง์
- ์ตํ์ ๋นํธ๋ถํฐ ์ต์์ ๋นํธ๊น์ง ๊ฐ์ ์๋ฆฌ์ ์๋ผ๋ฆฌ ์๋ฆฌ์ฌ๋ฆผ์๊น์ง ๊ณ ๋ คํด ๋ํจ
- ๋ง์ง๋ง ๋นํธ๋ฅผ ๋ํ๊ณ ๋์ ์๋ฆฌ์ฌ๋ฆผ์๊ฐ 1์ด๋ผ๋ฉด, ์ค๋ฒํ๋ก ๋ฐ์
๐ค ๋ถํธ๊ฐ ์๋ 2์ง์
- ์ปดํจํฐ๋ 2์ ๋ณด์(2's complement) ๋ฐฉ์ ์ฌ์ฉ
- $x$์ ๋ณด์ = $2^n-x$
- 0์ 1๋ก, 1์ 0์ผ๋ก ๋ค์ง์ ๋ค +1 ํด์ฃผ๋ฉด ์์๊ฐ ๋จ
- ๋ชจ๋ ์์ ์ฝ๋๋ 1๋ก ์์ํจ
๐ค ๋ฐ๊ฐ์ฐ๊ธฐ
- ๋ ๋นํธ๋ฅผ ๋ํ๋ ๊ธฐ๋ฅ์ ํจ
- ๋ง์ ํ ๊ฐ์ ์ตํ์ ๋นํธ๋ฅผ sum, ์ต์์ ๋นํธ๋ฅผ carry๋ผ๊ณ ํจ
๐ค ์ ๊ฐ์ฐ๊ธฐ
- ์ธ ๊ฐ์ ๋นํธ๋ฅผ ๋ํ๋ ๊ธฐ๋ฅ์ ํจ
- ์ถ๋ ฅ์ ๋ฐ๊ฐ์ฐ๊ธฐ์ ๊ฐ์
๐ค ๊ฐ์ฐ๊ธฐ
- ๋ฉ๋ชจ๋ฆฌ์ ๋ ์ง์คํฐ ์นฉ์ n๋นํธ ํจํด์ผ๋ก ๋ ์ ์๋ฅผ ์ ์ฅํ๊ณ , n์ ํ๋ซํผ์ ๋ฐ๋ผ 16, 32, 64 ๋ฑ๋ฑ์ ๊ฐ์ด ๋จ
- ์ด๋ฐ ์ซ์๋ฅผ ๋ง์ ํ๋ ์นฉ์ ๋ฉํฐ๋นํธ ๊ฐ์ฐ๊ธฐ ํน์ ๊ฐ์ฐ๊ธฐ๋ผ ๋ถ๋ฆ
๐ค ์ฆ๋ถ๊ธฐ
- ์ฃผ์ด์ง ์ซ์์ 1์ ๋ํ๋ ๊ธฐ๋ฅ์ ํจ
๐ค ์ฐ์ ๋ ผ๋ฆฌ ์ฐ์ฐ ์ฅ์น(ALU)
- Arithmetic Logic Unit
- x์ y๊ฐ ์นฉ์ ๋ 16๋นํธ ์ ๋ ฅ์ด๊ณ , 16๋นํธ ์ถ๋ ฅ ๊ฐ์ ๊ฐ์ง
- ์ฃผ์ด์ง 2์ง ๊ฐ๋ค์ ๋ํด ALU๊ฐ ์ด๋ค ์ฐ์ฐ์ ํ ์ง๋ '์ ์ด ๋นํธ'๋ผ๋ 6๊ฐ์ ์ ๋ ฅ ๋นํธ๋ฅผ ํตํด์ ๊ฒฐ์ ํจ
๐ค ๊ตฌํ
CHIP HalfAdder {
IN a, b; // 1-bit inpus
Out carry, // Left bit of a + b
sum; // Right bit of a + b
PARTS:
// Put you code here:
And(a=a, b=b, out=carry);
Xor(a=a, b=b, out=sum);
}
- Half-Adder
- sum์ Xor๊ณผ ๊ฐ์
- carry๋ And์ ๊ฐ์
CHIP FullAdder {
IN a, b, c; // 1-bit inputs
OUT carry, // Left bit of a + b + c
sum; // Right bit of a + b + c
PARTS:
HalfAdder(a=a, b=b, carry=carryAB, sum=sumAB);
HalfAdder(a=sumAB, b=c, sum=sum, carry=carrySumABSumC);
Or(a=carryAB, b=carrySumABSumC, out=carry);
}
- Full-Adder
- a์ b๋ฅผ ๋ฐ๊ฐ์ฐ๊ธฐ๋ก ๋ํ sum์ c์ ๋ํ๋ฉด ์ต์ข sum ๋์ถ
- ๊ฐ๊ฐ์ ๋ฐ๊ฐ์ฐ๊ธฐ์์ ๋ฐ์ํ carry๋ฅผ Or ์ฐ์ฐํ๋ฉด ์ต์ข carry ๋์ถ
CHIP ALU {
IN
x[16], y[16], // 16-bit inputs
zx, // zero the x input?
nx, // negate the x input?
zy, // zero the y input?
ny, // negate the y input?
f, // compute out = x + y (if 1) or x & y (if 0)
no; // negate the out output?
OUT
out[16], // 16-bit output
zr, // 1 if (out == 0), 0 otherwise
ng; // 1 if (out < 0), 0 otherwise
PARTS:
// Put you code here:
Mux16(a=x, b[0..15]=false, sel=zx, out=zX); // zx๊ฐ 1์ด๋ผ๋ฉด x๋ฅผ 0์ผ๋ก ์ด๊ธฐํํ๋ค.
Not16(in=zX, out=notZx);
Mux16(a=zX, b=notZx, sel=nx, out=znX); // nx๊ฐ 1์ด๋ผ๋ฉด ํ์์ ์ x๊ฐ์ ๋ฐ์ ์ํจ๋ค.
Mux16(a=y, b[0..15]=false, sel=zy, out=zY); // zy๊ฐ 1์ด๋ผ๋ฉด y๋ฅผ 0์ผ๋ก ์ด๊ธฐํํ๋ค.
Not16(in=zY, out=notZy);
Mux16(a=zY, b=notZy, sel=ny, out=znY); // ny๊ฐ 1์ด๋ผ๋ฉด ํ์์ ์ y๊ฐ์ ๋ฐ์ ์ํจ๋ค.
And16(a=znX, b=znY, out=andznXY);
Add16(a=znX, b=znY, out=addznXY);
Mux16(a=andznXY, b=addznXY, sel=f, out=fout); // f๊ฐ์ผ๋ก and, add ์ค ์ด๋ค ์ฐ์ฐ์ ํ ์ง ๊ฒฐ์ ํ๋ค.
Not16(in=fout, out=nfout);
Mux16(a=fout, b=nfout, sel=no, out[0..7]=out1, out[8..15]=out2, out[15]=ng, out=out); // no๊ฐ์ด 1์ด๋ฉด ๊ฒฐ๊ณผ๊ฐ์ ๋ฐ์ ์ํจ๋ค. ์ต์ข
์ถ๋ ฅ๊ฐ์ด ์์๋ผ๋ฉด ng๋ฅผ 1๋ก ์ด๊ธฐํํ๋ค.
Or8Way(in=out1, out=orOut1);
Or8Way(in=out2, out=orOut2);
Or(a=orOut1, b=orOut2, out=orOut); // ์ถ๋ ฅ๊ฐ์ ์, ๋ค๋ก ๋๋์ด์ or์ฐ์ฐ์ ํด, 1์ด ์กด์ฌํ๋์ง ๊ฒ์ฌํ๋ค.
Not(in=orOut, out=zr); // or์ฐ์ฐ์ ์ต์ข
๊ฐ์ ๋ฐ๋ผ์ zr์ ๊ฒฐ์ ํ๋ค.
}
- ALU
728x90
๋ฐ์ํ
'Development Study > Rust' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[System] The Elements of Computing System - 4 (0) | 2023.11.08 |
---|---|
[System] The Elements of Computing System - 3 (1) | 2023.11.08 |
[System] The Elements of Computing System - 1 (1) | 2023.10.31 |
[Rust] How to study Rust? - "Copycat" (6) (0) | 2023.09.24 |
[Rust] How to study Rust? - "Copycat" (5) (0) | 2023.09.23 |
Comments