CSAPP 4.3 Sequential Y86-64 Implementations
·983 words·5 mins
๐ ์์ธ ์ ๋ฆฌ # ์ด์ ์์ฐจ์ ํ๋ก์ธ์ (SEQ)๋ฅผ ๋จผ์ ๋ง๋ค ๊ฒ์ด๋ค. ๊ฐ ํด๋ก์ฌ์ดํด์์, ์์ ํ ๋ช
๋ น์ด๋ฅผ ์ฒ๋ฆฌํ๋ ๋ชจ๋ ๋จ๊ณ๋ฅผ ์ํํ๋ค. ๊ทธ๋์ ๋๋ฆด ๊ฒ์ด๋ค! 4.3.1 Organizing Processing into Stages # ์ผ๋ฐ์ ์ผ๋ก, ๋ช
๋ น์ด ์ฒ๋ฆฌ์๋ ์ฌ๋ฌ ์ฐ์ฐ์ด ์๋ฐ๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ ๋ชจ๋ ๋ช
๋ น์ด๊ฐ ์ผ๊ด๋ ๋จ๊ณ ์ํ์ค๋ฅผ ๋ฐ๋ฅด๋๋ก ํ๊ณ ์ถ๋ค. ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ๋ค Fetch PC๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ฃผ์๋ก ์ฌ์ฉํ์ฌ ๋ช
๋ น์ด ๋ฐ์ดํธ ์ฝ๊ธฐ icode / ifun / ๋ ์ง์คํฐ ์ง์ ์ / valC ๋ฑ์ ์ฝ๊ธฐ valP๋ ๋ค์ ๋ช
๋ น์ด ์ฃผ์ = PC์ ๊ฐ์ ์ฝ์ ๋ช
๋ น์ด์ ๊ธธ์ด๋ฅผ ๋ํ ๊ฐ Decode ๋ ์ง์คํฐํ์ผ์์ ์ต๋ ๋๊ฐ์ ์ฐ์ฐ์๋ฅผ ์ฝ์ด์ valA / valB ์ ๊ณต Execute ๋ช
๋ น์ด์ ์ํด ์ง์ ๋ ์ฐ์ฐ์ ์ํํ๊ฑฐ๋, ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ์ ์ฃผ์๋ฅผ ๊ณ์ฐํ๊ฑฐ๋, ์คํํฌ์ธํฐ๋ฅผ ์ฆ๊ฐ/๊ฐ์ํ๋ ๋ฑ. ์ด ๊ฐ์ valE๋ผ๊ณ ํ๋ค. ์กฐ๊ฑด ํ๋๊ทธ๊ฐ ์ค์ / ํ๊ฐํ๋๊ฒ๋ ์ฌ๊ธฐ Memory ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฑฐ๋ ๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๊ธฐ ๊ทธ ๊ฐ์ valM์ด๋ผ๊ณ ํ๋ค. Write back ์ต๋ ๋๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ ์ง์คํฐ ํ์ผ์ ์ฐ๊ธฐ PC update PC๋ฅผ ๋ค์ ๋ช
๋ น์ด ์ฃผ์๋ก ์
๋ฐ์ดํธ. ํ๋ก์ธ์๋ ์ ๊ณผ์ ์ ๋ฌดํํ ๋ฐ๋ณตํ๋ค. ์์ธ๊ฐ ๋ฐ์ํ ๋ ์ ์งํ๋ค halt / ์ ํจํ์ง ์์ ๋ช
๋ น์ด / ์ ํจํ์ง ์์ ์ฃผ์ ๋ฑ ๋ณด๋ค ์์ ํ ์ค๊ณ์์๋ ์์ธ์ฒ๋ฆฌ ๋ชจ๋์ ์ง์
ํด์ ํน์ ์ฝ๋๋ฅผ ์คํ ๊ณผ์ ์ด ๋๊ฒ ๋ง๊ฒ ๋๊ปด์ง์ง๋ง, ์ ๋ ๊ฒ ์ ์ฒด ํ๋ฆ์ ์ ์ฌํ๊ฒ ํด์ผ ํ๋์จ์ด์ ์์ ์ต์ํํ๊ณ ๋ณต์ก์ฑ์ ์ค์ผ ์ ์๋ค. ์๋ก ๋ค๋ฅธ ๋ช
๋ น์ด๊ฐ ๊ฐ๋ฅํ ๋ง์ ํ๋์จ์ด๋ฅผ ๊ณต์ ํ๋๋ก ํ๋ค๊ฑฐ๋.. ํ๋์จ์ด์์ ๋
ผ๋ฆฌ๋ธ๋ญ์ ์ค๋ณตํ๋ ๋น์ฉ์ ์ํํธ์จ์ด์์ ์ฝ๋๋ธ๋ญ์ ์ค๋ณตํ๋๊ฑฐ๋ณด๋ค ํจ์ฌ ๋น์ธ๋๊น! 4.3.2 SEQ Hardware Structure # ๋ชจ๋ Y86-64 ๋ช
๋ น์ด๋ค์ ์์ 6๋จ๊ณ์ ์ฐ์์ผ๋ก ์กฐ์งํํ ๊ฒ์ด๋ค. ํ๋์จ์ด์ ์ผ๋ก ์์ 6๋จ๊ณ๋ ์ด๋ป๊ฒ ๊ตฌ์ฑ๋๋๊ฐ? Fetch PC ๋ ์ง์คํฐ๋ฅผ ์ด์ฉํด์ ๋ช
๋ น์ด ๋ฐ์ดํธ ์ฝ๊ธฐ, valP ๊ณ์ฐ Decode ๋ ์ง์คํฐ ํ์ผ์ ๋๊ฐ์ ์ฝ๊ธฐํฌํธ๋ฅผ ํตํด valA, valB๋ฅผ ๋์์ ์ฝ๋๋ค. Execute ๋ช
๋ น์ด ์ ํ์ ๋ฐ๋ผ arithmetic / Logic ALU ์ ๋์ ๋ค์ํ๊ฒ ์ฌ์ฉํ๋ค. ๊ทธ์ค์ ์
๋ ฅ์ค ํ๋์ 0์ ๋ํ์ฌ ์ถ๋ ฅ์ผ๋ก ์ ๋ฌํ๋ ๋๋ฏธ adder๋ ์๋ค! CC (Condition Code Register) ์ธ๊ฐ์ ์กฐ๊ฑด ์ฝ๋ ๋นํธ๋ฅผ ๋ณด์ ํจ ์๋ก์ด ๊ฐ์ ALU์ ์ํด ๊ณ์ฐ๋๊ณ , ์กฐ๊ฑด๋ถ ์ด๋ ๋ช
๋ น์ด๋ฅผ ์คํํ ๋ ๋ชฉ์ ์ง ๋ ์ง์คํฐ๋ฅผ ์
๋ฐ์ดํธํ ์ง๋ฅผ ๊ณ์ฐํจ. ์ ํ๊ฐ์๊ฒ๋ ๋ง์ฐฌ๊ฐ์ง. Memory ๋ฉ๋ชจ๋ฆฌ์ ์๋๋ฅผ ์ฝ๊ฑฐ๋ ์. ๋ช
๋ น์ด ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ ๋ฉ๋ชจ๋ฆฌ๋ ๊ทธ๋ฆผ์์๋ ๋ค๋ฅด๊ฒ ๊ทธ๋ฆฌ์ง๋ง, ๊ฒฐ๊ตญ ํ๋์ ๋ฉ๋ชจ๋ฆฌ์ ์์ธ์คํ๋๊ฒ์ Write back ๋ ์ง์คํฐํ์ผ์ ๋๊ฐ์ ์ฐ๊ธฐ ํฌํธ๋ก ๋ฐ์ดํฐ๋ฅผ ์์ฑ ํฌํธ E๋ ALU์ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ์ฐ๊ธฐ ์ํด, ํฌํธ M์ ๋ฐ์ดํฐ ๋ฉ๋ชจ๋ฆฌ์์ ์ฝ์ ๊ฐ์ ์ฐ๊ธฐ ์ํด ์ฌ์ฉ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ผ๋ ๊ด๋ก ํด๋ญ ๋ ์ง์คํฐ๋ ํฐ์ ์ง์ฌ๊ฐํ (SEQ์์๋ PC๊ฐ ์ ์ผํ ํฌ๋ญ ๋ ์ง์คํฐ์ด๋ค) ํ๋์จ์ด ์ ๋์ ์ฐํ ํ๋์ ์ฌ๊ฐํ ์ ์ด ๋ก์ง ๋ธ๋ญ์ ํ์ ๋ฅ๊ทผ ์ฌ๊ฐํ ์์ด์ด ์ด๋ฆ์ ํฐ์ ์ (๋ผ๋ฒจ) ์๋๋ ์ค๊ฐ๋๊ป ์ , ๋ฐ์ดํธ๋ ์์์ , ๋จ์ผ๋นํธ๋ ์ ์ 4.3.3 SEQ Timing # SEQ๋ ์กฐํฉ๊ธฐ์ ๋๊ฐ์ง ํํ์ ๋ฉ๋ชจ๋ฆฌ ์ฅ์น(ํด๋ก ๋ ์ง์คํฐ, ๋๋ค ์ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ)๋ก ๊ตฌ์ฑ๋๋ค. ์กฐํฉ๊ธฐ๋ ์ํ์ฑ์ด๋ ์ ์ด ์์ด, ์
๋ ฅ์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ๋
ผ๋ฆฌ๊ฒ์ดํธ ๋คํธ์ํฌ๋ฅผ ํตํด ์ ํ๋๋ค. ๋๋ค ์์ธ์ค ๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ ๊ณผ์ ์ ์ฃผ์ ์
๋ ฅ์ ๊ธฐ๋ฐํ์ฌ ๊ณ์ฐ๋๋ค๊ณ ๋ด๋ ๋๋ค. ๋ ์ง์คํฐ ํ์ผ์์๋ ํฉ๋ฆฌ์ ์ด๊ณ , ๋ ํฐ ํ๋ก์์๋ ํน์ํ ํด๋ก ํ๋ก๋ฅผ ์ด์ฉํด์ ์ด๋ฅผ ๋ชจ๋ฐฉํ ์ ์๋ค. ์จ์๋ ๋ง์ด ์ข ๋ณต์กํ๋ฐ, ๊ทธ๋ฅ ํ๋ก ๊ด์ ์์ ์ด์ฐจํผ ์ฐ๊ธฐ๋ ํด๋ก ์ฃ์ง์์๋ง ์ผ์ด๋๊ณ , ์ฝ๊ธฐ๋ ์ฃผ์๋ฅผ ๋ฃ์ผ๋ฉด ๋ฐ์ดํฐ๊ฐ ๋์ค๋ ๊ณผ์ ์ด๋๊น ์กฐํฉ ๋
ผ๋ฆฌ ๋ธ๋ก์ด๋ ๋ค๋ฅผ๊ฒ ์๋ค๋ ๋ง์ธ ๊ฒ ๊ฐ๋ค. ๋ช
๋ น์ด ๋ฉ๋ชจ๋ฆฌ๋ ๋ช
๋ น์ด ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก๋ง ์ฌ์ฉ๋๋ฏ๋ก, ์ด ์ ๋ ์์ฒด๋ฅผ ์กฐํฉ๊ธฐ๋ก ์๊ฐํ ์ ์๋ค. ์ด๋ ๊ฒ ์๊ฐํ๋ฉด, ์ํ์ฑ์ ๋ํด ๋ช
์์ ์ผ๋ก ์ ์ด๊ฐ ํ์ํ๊ฑด PC, ์กฐ๊ฑด์ฝ๋ ๋ ์ง์คํฐ, ๋ฐ์ดํฐ ๋ฉ๋ชจ๋ฆฌ, ๋ ์ง์คํฐ ํ์ผ 4๊ฐ์ง๊ฐ ๋จ๋๋ค. ์ด๋ค์ ํด๋ก์ ํธ ํ๋๋ฅผ ํตํด ์ ์ด๋๊ณ , ๋ ์ง์คํฐ์ ๊ฐ์ ๋ก๋ํ๊ณ ๋๋ค์ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ์ฐ๋ ํ์ด๋ฐ์ ํธ๋ฆฌ๊ฑฐํ๋ค. PC๋ ๋งค ํด๋ก ์ฌ์ดํด๋ง๋ค ์๋ก์ด ๋ช
๋ น์ด ์ฃผ์๋ฅผ ๋ก๋ํ๊ณ , ์กฐ๊ฑด์ฝ๋ ๋ ์ง์คํฐ๋ OPq์์๋ง ๋ก๋๋๊ณ , ๋ฐ์ดํฐ๋ฉ๋ชจ๋ฆฌ๋ rmmovq, pushq, call์์๋ง ์ฐ์ด๊ณ … ๋ ์ง์คํฐ ํ์ผ์ ์ฐ๊ธฐ ํฌํธ๋ ๋งค ์ฌ์ดํด๋ง๋ค ๋๊ฐ์ ํ๋ก๊ทธ๋จ ๋ ์ง์คํฐ๋ฅผ ์
๋ฐ์ดํธํ ์ ์์ง๋ง, ํน์ ๋ ์ง์คํฐ ID์ธ 0xF๋ฅผ ํฌํธ์ฃผ์๋ก ์ฌ์ฉํด์ ์ฐ๊ธฐ๊ฐ ์๋๋ก ํ ์ ์๋ค. ์ด๋ฌํ ํด๋กing๋ ์ํ์ฑ์ ์ ์ดํ๋๋ฐ ๊ผญ ํ์ํ ๊ฒ๋ค์ด๋ค. ์์น: No reading back ํ๋ก์ธ์ค๋ ๋ช
๋ น์ด ์ฒ๋ฆฌ๋ฅผ ์๋ฃํ๊ธฐ ์ํด ํด๋น ๋ช
๋ น์ด์ ์ํด ์
๋ฐ์ดํธ ๋ ์ํ๋ฅผ ์ฝ์ ํ์๊ฐ ์๋ค.