project.pdf

‫ﺑﻪ ﻧﺎﻡ ﺧﺪﺍ‬
‫ﺗﺤﻮﻳﻞ‪ ۱۵ :‬ﺗﻴﺮ ‪ ۸۷‬‬
‫ﭘﺮﻭﮊﻩ ﺩﺭﺱ ﻫﻢ‐ﻃﺮﺍﺣﻲ ﺳﺨﺖﺍﻓﺰﺍﺭ‪/‬ﻧﺮﻡﺍﻓﺰﺍﺭ‬
‫ﻳﮏ ﭘﺮﺩﺍﺯﻧﺪﻩ ﺑﻪ ﺯﺑﺎﻥ ‪ SystemC ‬ﺑﺎ ﻣﺸﺨﺼﺎﺕ ﺯﻳﺮ ﻃﺮﺍﺣﻲ ﮐﻨﻴﺪ‪:‬‬
‫ﺷﺎﻣﻞ ﻣﺠﻤﻮﻋﻪ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﻫﺎﻱ ﺯﻳﺮ ﺑﺎﺷﺪ‪:‬‬
‫‪.۱‬‬
‫‪ .a‬ﺩﺳﺘﻮﺭﺍﺕ‪ ALU ‬ﻃﺒﻖ ﺟﺪﻭﻝ ﺯﻳﺮ‪ .‬‬
‫‪ .b‬ﺩﺳﺘﻮﺭﺍﺕ ﭘﺮﺵ ﻏﻴﺮ ﺷﺮﻃﻲ ﻭ ﺷﺮﻃﻲ ﺑﺮ ﺍﺳﺎﺱ ﺻﻔﺮ ﺑﻮﺩﻥ ﻳﮏ ﺛﺒﺎﺕ‪ .‬‬
‫‪ .c‬ﺩﺳﺘﻮﺭﺍﺕ ‪ load ‬ﻭ ‪ .store‬‬
‫‪ .d‬ﻳﮏ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﺑﺮﺍﻱ ﻓﺮﺍﺧﻮﺍﻧﻲ ﻣﺎﮊﻭﻟﻬﺎﻱ ﺳﺨﺖ ﺍﻓﺰﺍﺭﻱ ﺍﺿﺎﻓﻪ ﺷﺪﻩ ﺑﻪ ﭘﺮﺩﺍﺯﻧﺪﻩ‪ .‬ﺩﺭ ﺍﻳﻦ ﭘﺮﺩﺍﺯﻧﺪﻩ‪ ،‬ﻋﻼﻭﻩ ﺑﺮ ﺩﺳﺘﻮﺭﺍﺕ ﻣﻌﻤﻮﻝ‪ ،‬ﻣﻲ ﺗﻮﺍﻥ ﻳﮏ ﺍﻟﮕﻮﺭﻳﺘﻢ ﺭﺍ ﺑﻪ ﺻﻮﺭﺕ ﺳﺨﺖ‬
‫ﺍﻓﺰﺍﺭﻱ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﮐﺮﺩﻩ ﻭ ﺩﺭ ﻗﺎﻟﺐ ﻳﮏ ﭘﺮﺩﺍﺯﻧﺪﻩ ﮐﻤﮑﯽ ﻳﺎ )‪ FU (Functional Uint‬ﻣﻄﺎﺑﻖ ﺷﮑﻞ ﺯﻳﺮ ﺑﻪ ﭘﺮﺩﺍﺯﻧﺪﻩ ﻣﺘﺼﻞ ﻧﻤﻮﺩ‪ .‬ﻫﺮ ‪ FU‬ﺩﺍﺭﺍﻱ ﻳﮏ ﺷﻨﺎﺳﻪ )‪ (id‬ﺍﺳﺖ‪.‬‬
‫ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻠﻲ ﺑﻪ ﻓﺮﻡ ‪ CallFU fu_id‬ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﮐﻨﻴﺪ ﮐﻪ ﮐﺎﺭ ﺟﺎﺭﻱ ﭘﺮﺩﺍﺯﻧﺪﻩ ﺭﺍ ﻣﺘﻮﻗﻒ ﻭ ‪ FU‬ﻣﺮﺑﻮﻃﻪ ﺭﺍ ﻓﻌﺎﻝ ﮐﺮﺩﻩ ﻭ ﭘﺲ ﺍﺯ ﺍﺗﻤﺎﻡ ﮐﺎﺭ ‪ ،FU‬ﭘﺮﺩﺍﺯﻧﺪﻩ ﺭﺍ ﺟﻬﺖ ﺍﺩﺍﻣﻪ ﮐﺎﺭ ﻓﻌﺎﻝ‬
‫ﻧﻤﺎﻳﺪ‪ .‬ﭼﻮﻥ ‪ FU‬ﻫﺎ ﺑﺮ ﺭﻭﻱ ﺑﺎﺱ ﭘﺮﺩﺍﺯﻧﺪﻩ‐ﺣﺎﻓﻈﻪ ﻗﺮﺍﺭ ﺩﺍﺭﻧﺪ‪ ،‬ﺑﺎﻳﺪ ﻣﮑﺎﻧﻴﺰﻣﻲ ﺑﺮﺍﻱ ﺗﻤﺎﻳﺰ ﺑﻴﻦ ﻓﺮﺍﺧﻮﺍﻧﻲ ‪ FU‬ﻭ ﻋﻤﻠﻴﺎﺕ ﺧﻮﺍﻧﺪﻥ ﻭ ﻧﻮﺷﺘﻦ ﺩﺭ ﺣﺎﻓﻈﻪ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺖ‪ .‬ﺩﺭ ﺳﺎﺩﻩ‬
‫ﺗﺮﻳﻦ ﺭﻭﺵ‪ ،‬ﺑﺮﺍﻱ ﺍﻳﻦ ﮐﺎﺭ ﻣﻲ ﺗﻮﺍﻥ ﺍﺯ ﻳﮏ ﺳﻴﮕﻨﺎﻝ ﺑﻪ ﻧﺎﻡ ‪ call‬ﺩﺭ ﮐﻨﺎﺭ ﺳﻴﮕﻨﺎﻝ ﻫﺎﻱ ‪ read , write‬ﺍﺳﺘﻔﺎﺩﻩ ﮐﺮﺩ‪ .‬ﺑﺮﺍﻱ ﻋﻤﻠﻴﺎﺕ ﺧﻮﺍﻧﺪﻥ ﻭﻧﻮﺷﺘﻦ ﺣﺎﻓﻈﻪ‪ ،‬ﺁﺩﺭﺱ ﻣﻮﺭﺩ ﻧﻈﺮ ﺑﺮ‬
‫ﺭﻭﻱ ﮔﺬﺭﮔﺎﻩ ﺁﺩﺭﺱ ﻗﺮﺍﺭ ﮔﺮﻓﺘﻪ ﻭ ﺳﻴﮕﻨﺎﻝ ﻫﺎﻱ ‪ read ‬ﻳﺎ ‪ write‬ﻳﮏ ﻣﻴﺸﻮﻧﺪ‪ .‬ﺍﻣﺎ ﺑﺮﺍﻱ ﻓﺮﺍﺧﻮﺍﻧﻲ ‪ ،FU‬ﺷﻨﺎﺳﻪ ﺁﻥ ﺑﺮ ﺭﻭﻱ ﮔﺬﺭﮔﺎﻩ ﺍﺩﺭﺱ ﻗﺮﺍﺭ ﮔﺮﻓﺘﻪ ﻭ ﺳﻴﮕﻨﺎﻝ‪ call ‬ﻳﮏ ﻣﻲ‬
‫ﺷﻮﺩ‪ .‬ﺑﺮﺍﻱ ﺍﺭﺳﺎﻝ ﭘﺎﺭﺍﻣﺘﺮ ﻫﺎ ﺑﻪ ‪ FU‬ﻭ ﺩﺭﻳﺎﻓﺖ ﻣﻘﺎﺩﻳﺮ ﺑﺎﺯﮔﺸﺘﻲ ﺍﺯ ﺁﻥ‪ ،‬ﺑﻪ ﻫﺮ ‪ FU‬ﻳﮏ ﻣﺤﺪﻭﺩﻩ ﺍﺯ ﺁﺩﺭﺳﻬﺎﻱ ﺣﺎﻓﻈﻪ ﺭﺍ ﺍﺧﺘﺼﺎﺹ ﺩﻫﻴﺪ‪).‬ﺭﻭﺵ ‪.(Memory‐mapped‬ﺩﺭ ﺍﻳﻦ‬
‫ﻣﻌﻤﺎﺭﻱ‪ ،‬ﻧﻮﺷﺘﻦ ﭘﺎﺭﺍﻣﺘﺮ ﻫﺎﻱ ﻣﻮﺭﺩ ﻧﻴﺎﺯ ‪ FU‬ﻗﺒﻞ ﺍﺯ ﻓﺮﺍﺧﻮﺍﻧﻲ ﺁﻥ ﻭ ﺧﻮﺍﻧﺪﻥ ﻧﺘﻴﺠﻪ ﺑﻌﺪ ﺍﺯ ﺍﺗﻤﺎﻡ ﮐﺎﺭ ﺍﺯ ﺁﺩﺭﺱ ﺍﺧﺘﺼﺎﺹ ﺩﺍﺩﻩ ﺷﺪﻩ ﺑﺮ ﻋﻬﺪﻩ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺲ ﺍﺳﺖ‪ .‬‬
‫‪.۲‬‬
‫ﭘﺮﺩﺍﺯﻧﺪﻩ ﺑﺎﻳﺪ ﺑﻪ ﺻﻮﺭﺕ ﻳﮏ ﺧﻂ ﻟﻮﻟﻪ‪ 3 (pipeline) ‬ﻣﺮﺣﻠﻪ ﺍﻱ ﺷﺎﻣﻞ ‪،decode ،fetch‬ﻭ ‪ execute‬ﺑﺎﺷﺪ‪ .‬‬
‫‪.۳‬‬
‫ﻳﮏ ﺣﺎﻓﻈﻪ ‪ ۸‬ﮐﻴﻠﻮﺑﺎﻳﺘﻲ ﺭﺍ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﮐﺮﺩﻩ ﻭ ﺑﻪ ﭘﺮﻭﺳﺴﻮﺭ ﻣﺘﺼﻞ ﮐﻨﻴﺪ‪ .‬ﻳﮏ ﻧﻤﻮﻧﻪ ﺍﺯ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﺣﺎﻓﻈﻪ ﺩﺭ ‪ SystemC‬ﺩﺭ ﺑﺨﺶ ‪ ۷.۲‬ﮐﺘﺎﺏ ﺁﻣﺪﻩ ﺍﺳﺖ‪ .‬‬
‫‪.۴‬‬
‫ﻣﺪ ﺁﺩﺭﺱ ﺩﻫﻲ ﭘﺮﺩﺍﺯﻧﺪﻩ ﻣﺪ ﻣﺴﺘﻘﻴﻢ ﺍﺳﺖ‪ .‬ﺑﻪ ﻋﻨﻮﺍﻥ ﮔﺰﻳﻨﻪ ﺍﺧﺘﻴﺎﺭﻱ )ﻳﺎ ﺩﺭ ﺻﻮﺭﺕ ﻧﻴﺎﺯ( ﻣﺪﻫﺎﻱ ﺁﺩﺭﺱ ﺩﻫﻲ ﻏﻴﺮﻣﺴﺘﻘﻴﻢ‪ ،‬ﻧﺴﺒﻲ‪ ،‬ﻭ ﺁﻧﻲ ﺭﺍ ﭘﻴﺎﺩﻩ ﮐﻨﻴﺪ‪ .‬‬
‫‪.۵‬‬
‫ﺑﺎ ﻧﻮﺷﺘﻦ ﻳﮏ ‪ test bench‬ﻋﻤﻠﮑﺮﺩ ﭘﺮﺩﺍﺯﻧﺪﻩ ﺭﺍ ﭼﮏ ﮐﻨﻴﺪ‪ Test bench .‬ﺗﺮﺟﻴﺤﺎ ﻳﮏ ﺍﻟﮕﻮﺭﻳﺘﻢ ﻭﺍﻗﻌﻲ ﺭﺍ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﮐﻨﺪ‪ .‬‬
‫ﺗﻮﺿﻴﺤﺎﺕ‪ :‬‬
‫‪ .a‬ﻳﮏ ﭘﺮﻭﺗﮑﻞ ﺳﺎﺩﻩ ﺑﺮﺍﻱ ﻓﺮﺍﺧﻮﺍﻧﻲ ‪ FU‬ﻫﺎ ﻭ ﻧﺤﻮﻩ ﻃﺮﺍﺣﻲ ﺑﻪ ﺻﻮﺭﺕ ﺧﻂ ﻟﻮﻟﻪ ﺩﺭ ﮐﻼﺱ ﻣﻮﺭﺩ ﺑﺤﺚ ﻗﺮﺍﺭ ﮔﺮﻓﺖ ﻭ ﺩﺭ ﻣﺠﻤﻮﻋﻪ ﻓﺎﻳﻞ ﻫﺎﻱ ‪ SystemC‬ﺩﺭ ﺳﺎﻳﺖ ﺩﺭﺱ‬
‫ﻣﻮﺟﻮﺩ ﺍﺳﺖ‪ .‬‬
‫‪ .b‬ﻻﺯﻡ ﻧﻴﺴﺖ ﮐﺪ ﻧﻮﺷﺘﻪ ﺷﺪﻩ ﻗﺎﺑﻞ ﺳﻨﺘﺰ ﺑﺎﺷﺪ‪ .‬‬
‫‪ .c‬ﺍﻧﺘﺨﺎﺏ ﭘﺎﺭﺍﻣﺘﺮ ﻫﺎﻳﻲ ﮐﻪ ﺩﺭ ﺗﻮﺻﻴﻒ ﭘﺮﻭﮊﻩ ﺫﮐﺮ ﻧﺸﺪﻩ ﺍﺳﺖ )ﻣﺎﻧﻨﺪ ﺗﻌﺪﺍﺩ ﻭ ﭘﻬﻨﺎﻱ ﺑﻴﺘﻲ ﺛﺒﺎﺕ ﻫﺎ( ﺑﺮ ﻋﻬﺪﻩ ﺧﻮﺩﺗﺎﻥ ﺍﺳﺖ‪ .‬‬
‫‪ ‬‬
‫‪ ‬‬
‫ﻣﻌﻤﺎﺭﯼ ﮐﻠﯽ ﺳﻴﺴﺘﻢ‬
‫ﻣﺠﻤﻮﻋﻪ ﻋﻤﻠﻴﺎﺕ ﻭ ﻳﮏ ‪ bit‐slice‬ﺍﺯ ‪ ALU ‬‬
‫ﻣﻮﻓﻖ ﺑﺎﺷﻴﺪ‬
‫ﻣﺪﺭﺳﯽ‬