๐ง Spanning Tree ๊ทธ๋ ํ ๋ด์ ๋ชจ๋ ์ ์ ์ ํฌํจํ๋ ํธ๋ฆฌ๋ค ์ค, ์ต์ ์ฐ๊ฒฐ ํธ๋ฆฌ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ต์ ์ฐ๊ฒฐ์ ์๋ฏธ๋ ๊ฐ์ ์ ์๊ฐ ๊ฐ์ฅ ์ ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ฉฐ, ์ด๋ฅผ ์ํด์๋ ์ฌ์ดํด์ด ์กด์ฌํด์๋ ์๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ ์ ์ ์๊ฐ $n$ ๊ฐ์ธ ๊ทธ๋ํ์ Spanning Tree๋ edge๊ฐ ์ ํํ $n-1$ ๊ฐ ์กด์ฌํฉ๋๋ค. ๋ํ ํ๋์ ๊ทธ๋ํ์๋ ๋ง์ ์ ์ฅ ํธ๋ฆฌ๊ฐ ์กด์ฌํ ์ ์์ต๋๋ค. ๐ง ์ต์ ์ ์ฅ ํธ๋ฆฌ (MST) ์ ์ฅ ํธ๋ฆฌ๋ค ์ค edge๋ค์ ๋น์ฉ(cost)์ ์ด ํฉ์ด ์ต์์ธ ํธ๋ฆฌ๋ฅผ ์๋ฏธํฉ๋๋ค. ๋์ผํ Cost๋ฅผ ๊ฐ์ง๋ Edge๊ฐ ์ฌ๋ฌ๊ฐ ์์ ๊ฒฝ์ฐ MST๋ ์ฌ๋ฌ ์ข
๋ฅ๊ฐ ๋์ฌ ์ ์์ผ๋ฉฐ, ๋ฐ๋๋ก ๋ชจ๋ Edge๋ค์ cost๊ฐ ๊ตฌ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ MST๋ ๋จ ํ๋๋ง ์กด์ฌํ ์ ์์ต๋๋ค. (์ด๋ ๋ค์์ ์ฆ๋ช
ํด ๋ณด๋๋ก..
๐ฅ Computer Science
๐ง ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ ๋งค ๋จ๊ณ๋ง๋ค ํ์ฌ ์ํ์์ ์ต์ ์ ํด๋ฅผ ๋ง๋ค์ด์ฃผ๋ ๊ฒ์ ์ ํํ๋ฉฐ ์งํํ๋ ์๊ณ ๋ฆฌ์ฆ์
๋๋ค. ์ฃผ๋ก ์ต์ ํ ๋ฌธ์ (Optimization problem)์์ ๋ง์ด ์ฌ์ฉ๋๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, ๋๋ถ๋ถ์ ๋ฌธ์ ๋ค์์ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ต์ ํด(global-optimal)๋ฅผ ๋ณด์ฅํด ์ฃผ์ง๋ ์์ผ๋ ์ผ๋ถ ๋ฌธ์ ๋ค์ ํํ์ฌ global-optimal ํ๊ฑฐ๋ ๊ทธ์ ๋งค์ฐ ๊ทผ์ ํจ์ ๋ณด์ฅํด ์ฃผ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. โญ๏ธ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ์์ N๊ฐ์ ์ซ์๊ฐ ๋ค์ด์๋ ๋ฐ๊ตฌ๋๊ฐ ์์ต๋๋ค. ์ด ์ค ๊ทธ ์๋ค์ ํฉ์ด ์ต๋๊ฐ ๋๋๋ก m๊ฐ๋ฅผ ๊ณ ๋ฅด๊ณ ์ถ์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ๋งค ๋จ๊ณ์์ ํ์ฌ ๋ฐ๊ตฌ๋์ ๋จ์์๋ ์ซ์๋ค ์ค, ์ ์ผ ํฐ ์ซ์๋ฅผ ๊ณ ๋ฅธ ๋ค, ์ด๋ฅผ m ๋ฒ ๋ฐ๋ณตํจ์ผ๋ก์จ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋..
RISC-V๋ ๋ช
๋ น์ด์ ๊ธธ์ด๋ฅผ 32๋นํธ๋ก ๊ณ ์ ํ์ฌ ํ๋์จ์ด๋ฅผ ๊ฐ๋จํ๊ฒ ๋ง๋ค์์ผ๋, ๋ช
๋ น์ด ๋ด์ 32๋นํธ ์ด์์ ์์๋ ์ฃผ์๋ฅผ ํ์ํ ์ ์์ด ๋ถํธํ ์ ๋ ์์ต๋๋ค. ์ด๋ฒ์๋ ์ด๋ฌํ ๊ธด ์์ ์ฒ๋ฆฌ๋ฅผ ์ํ ์ผ๋ฐ์ ์ธ ํด๋ฒ๊ณผ, ๋ถ๊ธฐ ๋ช
๋ น์ด์์ ์ฌ์ฉ๋๋ ๋ช
๋ น์ด ์ฃผ์์ ์ต์ ํ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค. ๐ง ํฐ ์์น ํผ์ฐ์ฐ์ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ๋ ์์๋ ๋์ฒด๋ก ํฌ๊ธฐ๊ฐ ์์ผ๋ฏ๋ก, ๋๋ถ๋ถ์ ๊ฒฝ์ฐ 12๋นํธ ๋ด๋ก ํํ์ด ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ๋ ์์ผ๋ฏ๋ก ๋ ํฐ ์์๋ฅผ ๋ค๋ฃฐ ์ ์์ด์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํด RISC-V๋ ๋ ์ง์คํฐ์ ๋นํธ 12๋ฒ์งธ์๋ฆฌ๋ถํฐ 31๋ฒ์งธ ์๋ฆฌ๊น์ง์ 20๋นํธ ์์๊ฐ์ ๋ฃ๋ lui(load upper immediate) ๋ช
๋ น์ด๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋จ์ ํ์ 12๋นํธ ๊ณต๊ฐ์ 0์ผ๋ก ..
๐ง ๋ฐ๋ณต๋ฌธ ๊ธฐ๊ณ์ด์๋ ๋ฐ๋ณต๋ฌธ์ ๋์๋๋ ์ธ์คํธ๋ญ์
์ด ์์ต๋๋ค. ๊ทธ ๋์ ์กฐ๊ฑด๋ถ ํ
์คํธ์, ์ ํ ์ธ์คํธ๋ญ์
์ ํจ๊ป ์ฌ์ฉํ์ฌ ๋ฐ๋ณต๋ฌธ์ ํํํฉ๋๋ค. GCC ์ ๋ค๋ฅธ ์ปดํ์ผ๋ฌ๋ค์ ๋ฐ๋ณต๋ฌธ์ ๋ ๊ฐ์ ๊ธฐ๋ณธ ๋ฃจํ ํจํด์ ๊ธฐ์ดํ์ฌ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ๊ฐ์ฅ ๊ฐ๋จํ do-while๋ถํฐ ์์ํ์ฌ ๋ณด๋ค ๋ณต์กํ ๊ตฌํ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๋ฉฐ ๋ ๊ฐ์ง ํจํด์ ๋ค๋ฃจ๋๋ก ํ๊ฒ ์ต๋๋ค. ๐ง do - while do-while ๋ฌธ์ฅ์ ์ผ๋ฐ์ ์ธ ํํ๋ ์๋์ ๊ฐ์ต๋๋ค. do { body-statement } while ( test-expr ); ๋ฐ๋ณต๋ฌธ์ body-statement ๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์คํํ๊ณ , test-expr ์ ๊ณ์ฐํ์ฌ ๊ทธ ๊ฒฐ๊ณผ๊ฐ 0์ด ์๋๋ผ๋ฉด ๋ฐ๋ณตํฉ๋๋ค. body-statement ๋ ์ ์ด๋ ํ ๋ฒ ์คํ๋๋ค๋ ๊ฒ์ ์ฃผ๋ชฉํ๋ฉฐ, ํด๋น ..
๐ง ์ ์ด ๋ช
๋ น ์ฌ๋ฌ ์กฐ๊ฑด๋ฌธ๋ค์ ์ฌ์ฉํ๊ธฐ ์ํด ์ ์ด ๋ช
๋ น์ด ํ์ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก CPU ๋ด๋ถ์ ์ํ๋ฅผ ์ ์ฅํ ์ ์๊ธฐ ๋๋ฌธ์, ๋ ์ง์คํฐ์ ์ํ๋ฅผ ์ ์ฅํ๊ฒ ๋ฉ๋๋ค. %rax ๋ ์ง์คํฐ๋ ์์ ๋ฐ์ดํฐ, ์ฐ์ฐ์ ๊ฒฐ๊ณผ ๋ฑ์ ์ ์ฅํ๋ฉฐ %rsp ๋ ์ง์คํฐ๋ ๋ฐํ์ ์คํ์ ์์น๋ฅผ, %rip ๋ ์ง์คํฐ๋ ํ์ฌ ์คํ์ฝ๋์ ์์น๋ฅผ ์ ์ฅํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ต๊ทผ ์งํํ ์ฐ์ฐ์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์ํ๊ฐ ๋ณ๊ฒฝ๋๋ 4์ข
๋ฅ์ (1๋นํธ) ํ๋๊ทธ ๋ ์ง์คํฐ๊ฐ ์กด์ฌํฉ๋๋ค. ์ด๋ฆ์ CF, ZF, SF, OF์ด๋ฉฐ, ์ด๋ค์ ํตํด ์กฐ๊ฑด๋ฌธ ๋ฑ์ ์ ์ด๋ฅผ ์งํํฉ๋๋ค. ๐ง Conditional Codes (์กฐ๊ฑด ์ฝ๋) ํ๋๊ทธ ๋ ์ง์คํฐ๋ ์กฐ๊ฑด์ฝ๋ ๋ ์ง์คํฐ๋ผ๊ณ ๋ ๋ถ๋ฆฝ๋๋ค. ์ด๋ค์ ์ฐ์ ์ฐ์ฐ์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ๊ฐ์ด ๋ฐ๋๋ ๋ ์ง์คํฐ๋ค์
๋๋ค. ์ฃผ์ํ์ฌ์ผ ํ ์ ์ movq ํน์ l..
๐ง ๊ธฐ๊ณ์์ค ์ฝ๋ ํ๋์ ๊ธฐ๊ณ์ด ์ธ์คํธ๋ญ์
์ ๋งค์ฐ ๊ธฐ์ด์ ์ธ ๋์๋ง์ ์ํํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ ์ง์คํฐ๋ค์ ์ ์ฅ๋ ๋ ๊ฐ์ ์๋ฅผ ๋ํ๊ณ , ๋ฉ๋ชจ๋ฆฌ์ ๋ ์ง์คํฐ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๊ฑฐ๋, ์๋ก์ด ์ธ์คํธ๋ญ์
์ฃผ์๋ก ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ถ๊ธฐํ๋ ๋ฑ์ ๋์์ ์ํํฉ๋๋ค. ์ปดํ์ผ๋ฌ๋ ์ผ๋ จ์ ์ธ์คํธ๋ญ์
์ ์์ฑํด์ ์ฐ์ ์ฐ์ฐ์์ ๊ณ์ฐ, ๋ฐ๋ณต๋ฌธ ํ๋ก์์ ํธ์ถ๊ณผ ๋ฆฌํด ๋ฑ์ ํ๋ก๊ทธ๋จ ๊ตฌ๋ฌธ์ ๊ตฌํํด์ผ ํฉ๋๋ค. ๐ง ์ด์
๋ธ๋ฆฌ์ด ๊ธฐ๊ณ์ด์ 1๋1 ๋์๊ด๊ณ๋ฅผ ๊ฐ๋ ๋ช
๋ น์ด๋ก ์ด๋ฃจ์ด์ง low-level ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์
๋๋ค. โญ๏ธ ์ฝ๋ ์์ long plus(long x, long y); void sumstore(long x, long y, long * dest) { long t = plus(x, y); *dest = t; } ์์ ์ฝ๋๋ฅผ ์ด์
๋ธ๋ฆฌ์ด๋ก..
๐ง ํ๋ก์์ (procedure) ํ๋ก์์ ๋ ํจ์๋ ์ดํดํ๊ธฐ ์ฝ๊ณ , ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋๋ก ํ๋ก๊ทธ๋จ์ ๊ตฌ์กฐํํ๋ ๋ฐฉ๋ฒ ์ค ํ๋์
๋๋ค. ํ๋ก๊ทธ๋จ์ด ํ๋ก์์ ๋ฅผ ์คํํ ๋์๋ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฏ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ์ผ ํฉ๋๋ค. 1. ํ๋ก์์ ๊ฐ ์ ๊ทผํ ์ ์๋ ๊ณณ์ ์ธ์๋ฅผ ๋ฃ๋๋ค. ( x10 - x17 ๋ ์ง์คํฐ ์ฌ์ฉ ) 2. ํ๋ก์์ ๋ก ์ ์ด๋ฅผ ๋๊ธด๋ค. ( jal x1, ProcedureAddress ๋ช
๋ น์ด ์ฌ์ฉ ) 3. ํ๋ก์์ ๊ฐ ํ์๋ก ํ๋ ๋ฉ๋ชจ๋ฆฌ ์์์ ํ๋ํ๋ค. 4. ํ์ํ ์์
์ ์ํํ๋ค. 5. ํธ์ถํ ํ๋ก๊ทธ๋จ์ด ์ ๊ทผํ ์ ์๋ ์ฅ์์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฃ๋๋ค. ( x10 - x17 ๋ ์ง์คํฐ ์ฌ์ฉ ) 6. ํ๋ก์์ ๋ ํ๋ก๊ทธ๋จ ๋ด์ ์ฌ๋ฌ ๊ณณ์์ ํธ์ถ๋ ์ ์์ผ๋ฏ๋ก, ์๋ ์์น๋ก ์ ์ด๊ถ์ ๋๋ ค์ค๋ค. ( jalr x0, 0(x1) ..
๐ง ์์ฌ ๊ฒฐ์ ๋ช
๋ น์ด ์ปดํจํฐ๋ ๋จ์ํ ์ฐ์ ์ฐ์ฐ๋ง์ ์งํํ์ง ์์ต๋๋ค. ์
๋ ฅ ๋ฐ์ดํฐ๋ ์ฐ์ฐ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ช
๋ น์ด๋ฅผ ์คํํ ์ ์์ต๋๋ค. ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์๋ ๋ณดํต if ๋ฌธ์ฅ์ ํตํด์ ํ๋จ ๊ธฐ๋ฅ์ ํํํฉ๋๋ค. RISC-V ์ด์
๋ธ๋ฆฌ์ด์์๋ go to ๊ฐ ์๋ if ๋ฌธ๊ณผ ๋น์ทํ ํ๋จ ๋ช
๋ น์ด๋ฅผ ๊ฐ์ง๋๋ค. ๋๊ฐ์ ๋ช
๋ น์ด๋ฅผ ๋ณธ ํ ๋์ด๊ฐ๋๋ก ํ๊ฒ ์ต๋๋ค. โญ๏ธ beq - ๊ฐ์ผ๋ฉด ๋ถ๊ธฐํ๋ค. beq rs1, rs2, L1 ์ ๋ช
๋ น์ด๋ rs1์ ๊ฐ์ด rs2์ ๊ฐ๊ณผ ๊ฐ์ ๊ฒฝ์ฐ L1์ผ๋ก ์ด๋ํ๋ผ๋ ๋ป์
๋๋ค. โญ๏ธ bne - ๊ฐ์ง ์์ผ๋ฉด ๋ถ๊ธฐํ๋ค. bne rs1, rs2, L1 ์ ๋ช
๋ น์ด๋ rs1์ ๊ฐ์ด rs2์ ๊ฐ๊ณผ ๊ฐ์ง ์์ ๊ฒฝ์ฐ L1์ผ๋ก ์ด๋ํ๋ผ๋ ๋ป์
๋๋ค. ๐ง ์กฐ๊ฑด๋ถ ๋ถ๊ธฐ (Conditional branch) ์กฐ๊ฑด๋ถ..