بهبود تحملپذیری تأخیر پوشه ثبات در پردازندههای گرافیکی به کمک بازتولید مقادیر میانی
محورهای موضوعی : مهندسی برق و کامپیوترراحیل براتی 1 * , محمد صدرالساداتی 2 , حمید سربازی آزاد 3
1 - دانشگاه صنعتی شریف،دانشكده مهندسي كامپيوتر
2 - پژوهشگاه دانشهای بنیادی،گروه برق
3 - دانشگاه صنعتی شریف،دانشكده مهندسي كامپيوتر
کلید واژه: پردازندههاي گرافيكي, پوشه ثبات, بازتوليد مقادير, واحدهاي اجرايي,
چکیده مقاله :
پوشه ثبات بزرگ در پردازندههای گرافیکی با بهبود موازات سطح نخ، باعث کاهش دسترسی به حافظه میشود. قبلاً برای افزایش ظرفیت پوشه ثبات با سربار توان و مساحت قابل قبول، روش LTRF ارائه شده است. معماری پوشه ثبات LTRF دوسطحی است که از یک حافظه نهان ثبات و یک پوشه ثبات اصلی استفاده میکند. ثباتهای کلافها قبل از اجرای یک کلاف به حافظه نهان ثبات پیشواکشی میشوند. برای پیشواکشی ثباتها، گراف کنترل جریان برنامه در سطح مترجم به زیرگرافهایی به نام بازهثبات تقسیم میشود. یکی از سربارهای روش LTRF انجام عمل پیشواکشی ثبات و تحمیل بیکاری کلاف در طول مدت پیشواکشی است که کاهش تعداد بازهثبات به میزان چشمگیری این سربار را کاهش میدهد. اما تعداد ثبات قابل استفاده در هر بازهثبات محدود است و افزایش این تعداد در بازهثبات منجر به افزایش ترافیک پیشواکشی و ظرفیت حافظه نهان میگردد که راه حل مناسبی برای کاهش تعداد بازهثباتها نیست. در این پژوهش به کمک بازتولید مقادیر میانی در زمان ترجمه سعی در کاهش تعداد ثباتهای مورد نیاز در هر بازهثبات داریم. نتایج شبیهسازی نشان میدهند که روش پیشنهادی ما، میزان تحملپذیری تأخیر دسترسی به پوشه ثبات در روش LTRF را به میزان 29 درصد بهبود میبخشد. همچنین با به کارگیری یک پوشه ثبات سلولهای حافظه DWM، معماری پیشنهادی قادر است که کارایی پردازنده گرافیکی مجهز به LTRF را به طور میانگین 18 درصد (حدود 30 درصد نسبت به معماری پردازنده گرافیکی پایه) افزایش دهد و این در حالی است که مقادیر انرژی و توان مصرفی به میزان 38 و 15 درصد کاهش مییابد.
Large register files reduce the performance and energy overhead of memory accesses by improving the thread-level parallelism and reducing the number of data movements from the off-chip memory. Recently, the latency-tolerant register file (LTRF) is proposed to enable high-capacity register files with low power and area cost. LTRF is a two-level register file in which the first level is a small fast register cache, and the second level is a large slow main register file. LTRF uses a near-perfect register prefetching mechanism that warp registers are prefetched from the main register file to the register file cache before scheduling the warp and hiding the register prefetching latency by the execution of other active warps. LTRF specifies the working set of the warps by partitioning the control flow graph into several prefetch subgraphs, called register-interval. LTRF imposes some performance overhead due to warp stall during the register prefetching. Reducing the number of register-intervals can greatly mitigate this overhead, and improve the effectiveness of LTRF. A register-interval is a subgraph of the control flow graph (CFG) where it has to be a single-entry subgraph with a limited number of registers. We observe that the second constrain contributes more in reducing the size of register-intervals. Increasing the number of registers inside the register-interval cannot address this problem as it imposes huge performance and power overhead during the register prefetching process. In this paper, we propose a register-interval-aware re-production mechanism at compile-time to increase register-interval size without increasing the number of registers inside it. Our experimental results show that our proposal improves the effectiveness of LTRF by 29%, and LTRF’s performance by about 18% (about 30% improvement over baseline GPU architecture). Moreover, our proposal reduces GPU energy and power consumption by respectively 38% and 15%, on average.
[1] A. Sethia and S. Mahlke, "Equalizer: dynamic tuning of gpu resources for efficient execution," in Proc. of the IEEE/ACM 47th Annual Int. Symp. on Microarchitecture, pp. 647-658, Cambridge, UK, 13-17 Dec. 2014.
[2] T. D. Han and T. S. Abdelrahman, "hiCUDA: high-level GPGPU programming," IEEE Trans. on Parallel and Distributed Systems, vol. 22, no. 1, pp. 78-90, Jan. 2011.
[3] NVIDIA Corporation. CUDA Programming Guide, V4.0.
[4] NVIDIA Corporation. CUDA Toolkit, 2012. Version 4.2, http://developer.nvidia.com/cuda/cuda-downloads. Sep. 2012.
[5] J. Lee, N. Lakshminarayana, H. Kim, and R. Vuduc, "Many-thread aware prefetching mechanisms for GPGPU applications," in Proc. IEEE/ACM of the 43th Annual Int. Symp. on Microarchitecture, pp. 213-224, Atlanta, GA, USA, 4-8 Dec. 2010.
[6] A. Jog, O. Kayiran, A. Mishra, M. T. Kandemir, O. Mutlu, R. Iyer, and C. R. Das, "Orchestrated scheduling and prefetching for GPGPUs," ACM SIGARCH Computer Architecture News, vol. 41, no. 3, pp. 332-343, Jun. 2013.
[7] A. Jog, O. Kayiran, N. Chidambaram, A. Mishra, M. T. Kandemir, O. Mutlu, R. Iyer, and C. R. Das, "OWL: cooperative thread array aware scheduling techniques for improving GPGPU performance," ACM SIGARCH Computer Architecture News, vol. 41, no. 1, pp. 395-406, Mar. 2013.
[8] A. Sethia, G. Dasika, M. Samadi, and S. Mahlke, "APOGEE: adaptive prefetching on GPUs for energy efficiency," in Proc. of the IEEE 22nd Int. Conf. on Parallel Architectures and Compilation Techniques, pp. 73-82, Edinburgh, UK, 7-11 Sept. 2013.
[9] H. Jeon, G. S. Ravi, N. S. Kim, and M. Annavaram, "GPU register file virtualization," in Proc. IEEE/ACM of the 48th Annual Int. Symp. on Microarchitecture, pp. 420-432, Waikiki, HI, USA, 5-9 Dec. 2015.
[10] M. Abdel-Majeed and M. Annavaram, "Warped register file: a power efficient register file for GPGPUs," in Proc. IEEE 19th Int. Symp. on High Performance Computer Architecture, pp. 412-423, Shenzhen, China, 23-27, Feb. 2013.
[11] S. Lee, K. Kim, G. Koo, H. Jeon, W. W. Ro, and M. Annavaram, "Warped-compression: enabling power efficient GPUs through register compression," ACM SIGARCH Computer Architecture News, vol. 43, no. 3, pp. 502-514, Jun. 2015.
[12] C. Hsiao, S. Chu, and C. Hsieh, "An adaptive thread scheduling mechanism with low-power register file for mobile GPUs," IEEE Trans. on Multimedia, vol. 16, no. 1, pp. 60-67, Sept. 2014.
[13] N. Jing, J. Wang, F. Fan, W. Yu, L. Jiang, C. Li, and X. Liang, "Cache-emulated registerfile: an integrated on-chip memory architecture for high performance gpgpus," in Proc. IEEE/ACM of the 49th Annual Int. Symp. on Microarchitecture, 12 pp., Taipei, Taiwan, 10-15?, Oct. 2016.
[14] H. Asghari Esfeden, A. A. Abdolrashidi, S. Rahman, D. Wong, and N. Abu-Ghazaleh, "BOW: breathing operand windows to exploit bypassing in GPUs," in Proc. IEEE/ACM of the 53th Annual Int. Symp. on Microarchitecture, pp. 996-1008, Athens, Greece, 17-21 Oct. 2020.
[15] F. Khorasani, H. A. Esfeden, A. Farmahini-Farahani, N. Jayasena, and V. Sarkar, "Regmutex: inter-warp gpu register time-sharing," in Proc. of the 45th Annual Int. Symp. on Computer Architecture, pp. 816-828, Providence, RI, USA, 13-17 Apr. 2018.
[16] H. Asghari Esfeden, F. Khorasani, H. Jeon, D. Wong, and N. Abu-Ghazaleh, "CORF: coalescing operand register file for GPUs," in Proc. of the 24th Int. Conf. on Architectural Support for Programming Languages and Operating Systems, pp. 701-714, Boston, MA, USA, 14-17 Oct. 2019.
[17] J. Kloosterman, et al., "Regless: just-in-time operand staging for gpus," in Proc. IEEE/ACM of the 50th Annual Int. Symp. on Microarchitecture, pp. 151-164, Boston, MA, USA, 14-17, Oct. 2017.
[18] M. Sadrosadati, A. Mirhosseini, S. B. Ehsani, H. Sarbazi-Azad, M. Drumond, B. Falsafi, R. Ausavarungnirun, and O. Mutlu, "Ltrf: enabling high-capacity register files for gpus via hardware/software cooperative register prefetching," in Proc. of the 23rd Int. Conf. on Architectural Support for Programming Languages and Operating Systems, pp. 489-502, Williamsburg, VA, USA, 24-18 Mar. 2018.
[19] J. E. Lindholm, M. Y. Siu, S. S. Moy, S. Liu, and J. R. Nickolls, Simulating Multiported Memories Using Lower Port Count Memories, US Patent 7,339,592, 2008.
[20] LTRF Register-Interval-Algorithm, https://github.com/CMU-SAFARI/Register-Interval, 2018.
[21] A. Bakhoda, G. L. Yuan, W. W. Fung, H. Wong, and T. M. Aamodt, "Analyzing cuda workloads using a detailed gpu simulator," ISPASS. in Proc. IEEE Int. Symp. on Performance Analysis of Systems and Software,, pp. 163-174, Boston, MA, USA, 26-28 Apr. 2009.
[22] S. Che, et al., "Rodinia: a benchmark suite for heterogeneous computing," in Proc. IEEE Int. Symp. on Workload Characterization, pp. 44-54, Austin, TX, USA, 4-6 Oct. 2009.
[23] J. A. Stratton, et al., "Parboil: a revised benchmark suite for scientific and commercial throughput computing," Center for Reliable and High-Performance Computing, vol. 127, p. 27, Mar. 2012.
[24] R. Venkatesan, S. G. Ramasubramanian, S. Venkataramani, K. Roy, and A. Raghunathan, "Stag: spintronic-tape architecture for GPGPU cache hierarchies," in Proc. IEEE Int. Symp. on Computer Architecture, pp. 253-264, Minneapolis, MN, USA, 14-18 Jun. 2014.
[25] V. Narasiman, M. Shebanow, C. J. Lee, R. Miftakhutdinov, O. Mutlu, and Y. N. Patt, "Improving gpu performance via large warps and two-level warp scheduling," in Proc. IEEE/ACM of the 44th Annual Int. Symp. on Microarchitecture, pp. 308-317, Porto Alegre, Brazil, 3-7, Dec. 2011.
نشریه مهندسی برق و مهندسی كامپیوتر ایران، ب- مهندسی کامپیوتر، سال 20، شماره 1، بهار 1401 13
مقاله پژوهشی
بهبود تحملپذیری تأخیر پوشه ثبات در پردازندههای
گرافیکی به کمک بازتولید مقادیر میانی
راحیل براتی، سیدمحمد صدرالساداتی و حمید سربازی آزاد
چكیده: پوشه ثبات بزرگ در پردازندههای گرافیکی با بهبود موازات سطح نخ، باعث کاهش دسترسی به حافظه میشود. قبلاً برای افزایش ظرفیت پوشه ثبات با سربار توان و مساحت قابل قبول، روش LTRF ارائه شده است. معماری پوشه ثبات LTRF دوسطحی است که از یک حافظه نهان ثبات و یک پوشه ثبات اصلی استفاده میکند. ثباتهای کلافها قبل از اجرای یک کلاف به حافظه نهان ثبات پیشواکشی میشوند. برای پیشواکشی ثباتها، گراف کنترل جریان برنامه در سطح مترجم به زیرگرافهایی به نام بازهثبات تقسیم میشود. یکی از سربارهای روش LTRF انجام عمل پیشواکشی ثبات و تحمیل بیکاری کلاف در طول مدت پیشواکشی است که کاهش تعداد بازهثبات به میزان چشمگیری این سربار را کاهش میدهد. اما تعداد ثبات قابل استفاده در هر بازهثبات محدود است و افزایش این تعداد در بازهثبات منجر به افزایش ترافیک پیشواکشی و ظرفیت حافظه نهان میگردد که راه حل مناسبی برای کاهش تعداد بازهثباتها نیست. در این پژوهش به کمک بازتولید مقادیر میانی در زمان ترجمه سعی در کاهش تعداد ثباتهای مورد نیاز در هر بازهثبات داریم. نتایج شبیهسازی نشان میدهند که روش پیشنهادی ما، میزان تحملپذیری تأخیر دسترسی به پوشه ثبات در روش LTRF را به میزان 29 درصد بهبود میبخشد. همچنین با
به کارگیری یک پوشه ثبات سلولهای حافظه DWM، معماری پیشنهادی قادر است که کارایی پردازنده گرافیکی مجهز به LTRF را به طور میانگین 18 درصد (حدود 30 درصد نسبت به معماری پردازنده گرافیکی پایه) افزایش دهد و این
در حالی است که مقادیر انرژی و توان مصرفی به میزان 38 و 15 درصد کاهش مییابد.
کلیدواژه: پردازندههاي گرافيكي، پوشه ثبات، بازتوليد مقادير، واحدهاي اجرايي.
1- مقدمه
طی سالهای اخیر، با محدودشدن میزان موازات در سطح دستور2، استفاده از چند هسته روی تراشه به عنوان راهکاری برای افزایش کارایی پردازندهها مورد توجه قرار گرفته است. به همین خاطر، رویکرد طراحان سیستمهای کامپیوتری به پردازش تعداد زیادی نخ به صورت موازی یا همروند معطوف شده است. در همین راستا از معماری پردازندههای گرافیکی3 که به طور سنتی برای پردازش تعداد زیادی نقطه4 در محاسبات گرافیکی طراحی شده بودند، به عنوان گزینه مناسبی برای محاسبات عاممنظوره نام برده میشود.
ویژگی معماری پردازندههای گرافیکی این است که با آماده نگه داشتن تعداد بسیار زیادی نخ برای اجرا، سعی در پنهانسازی تأخیر دسترسی به حافظه دارند [1] تا [4]. بنابراین اگر برنامه به گونهای باشد که به اندازه کافی نخ فعال در حین اجرا داشته باشد، هنگام رخداد دسترسی به حافظه، فرایند اجرا به یک نخ دیگر منتقل میشود تا تأخیر دسترسی به حافظه به کمک زمان اجرای سایر نخها پنهان شود. اما در تحقیقات گذشته نشان داده شده که تعداد نخهای آماده اجرا برای بارهای کاری عاممنظوره در پردازنده گرافیکی به اندازهای نیست که بتواند تأخیر دسترسی به حافظه را به صورت مناسب پنهان کند. در این راستا، عوامل متعددی از قبیل تعداد مجاز بلوک نخ، ظرفیت حافظه مشترک و ظرفیت پوشه ثبات منجر به کاهش تعداد نخهای آماده اجرا میشوند [1] و [5] تا [8].
مهمترین عامل محدودکننده تعداد نخهای آماده اجرا، ظرفیت محدود پوشه ثبات است [9] تا [11]. از آنجا که هر نخ باید ثباتهای اختصاصی داشته باشد تا فرایند تعویض محتوا به سرعت انجام گیرد، پردازندههای گرافیکی به تعداد ثباتهای بسیار زیادی نیاز دارند [9] تا [12]. متأسفانه به دلیل مساحت زیاد و توان مصرفی چشمگیر پوشه ثبات که از سلولهای SRAM ساخته شده است، ظرفیت کنونی آن بسیار کمتر از ظرفیت
مورد انتظار برای جلوگیری از محدودشدن آن برای تعداد نخهای آماده اجرا است.
افزایش حجم حافظههای روی تراشه از جمله افزایش ظرفیت پوشه ثبات با هدف بهبود کارایی، بدون در نظر گرفتن محدودیتهای مساحت
و توان مصرفی امکانپذیر نیست [13]. پژوهشهای زیادی به ارائه راهکارهایی با رویکرد کاهش توان مصرفی پوشه ثبات پرداختهاند [13] تا [16]. از جمله راهکارهای پیشنهادشده میتوان به اضافهکردن یک حافظه نهان به ساختار پوشه ثبات و یکپارچهسازی حافظههای روی تراشه و اختصاص آن به هر بخش به شکل ایستا یا پویا اشاره کرد [13]. در سال 2019 روشی به نام CORF ارائه شد که با کمک تکنیکهای زمان ترجمه به ادغام چند دسترسی به پوشه ثبات میپردازد. این روش با کاهش دفعات دسترسی فیزیکی به پوشه ثبات، انرژی مصرفی را کاهش میدهد و با ادغام چندین خواندن، فشار روی پوشه ثبات و احتمال تداخل بین بانکها در پوشه ثبات را کم میکند [16]. پژوهش دیگری با نام
شکل 1: معماری پایه پوشه ثبات در پردازندههای گرافیکی [19].
BOW با ایجاد تغییراتی در واحد جمعآوری عملوندها5 و اضافهکردن بافر، از خواندن و نوشتنهای غیر ضروری بر پوشه ثبات جلوگیری میکند. در روش BOW بهینهسازی در زمان ترجمه، در تصمیمگیری برای نوشتن یک عملوند در پوشه ثبات یا صرفاً نوشتن آن در بافر مؤثر خواهد بود [14]. در سالهای اخیر، توجه به تکنیکهای زمان ترجمه برای استفاده حداکثری از ظرفیت پوشه ثبات و یا تحملپذیر ساختن سربارها، مورد توجه بیشتری قرار گرفته که از این میان میتوان به روش RegMutex اشاره کرد [15]. در این روش در زمان ترجمه، پوشه ثبات به دو بخش مجموعه ثباتهای پایه و مجموعه ثباتهای گسترده تقسیم میشود. در زمان اجرا، ثباتهای متعلق به مجموعه ثباتهای گسترده میان کلافها به طور مشترک استفاده میشوند [15]. البته روشهای اشارهشده در بالا به موضوع سربار مساحت برای افزایش ظرفیت پوشه ثبات در کنار توان مصرفی به خوبی نپرداختهاند و بهبود اشارهشده در توان مصرفی پوشه ثباتهای پیشنهادی در بهترین حالت حدود 50 درصد گزارش شده است که میتواند برای طراحی یک پوشه ثبات با ظرفیت 5/1 تا 2 برابری مورد استفاده قرار گیرد. با توجه به تحلیلهای صورتگرفته (تأثیر افزایش ظرفیت پوشه ثبات بر کارایی در شکل 3 دیده میشود که این مقایسه با معماری پایه پردازنده گرافیکی صورت گرفته است)، این میزان افزایش در حجم پوشه ثبات کافی نبوده و نیاز به پوشه ثبات بسیار بزرگتر همچنان وجود دارد.
در سال 2017 یک پژوهش مدعی شد که با کمک تکنیکهای زمان ترجمه میتوان پوشه ثبات بسیار کوچکتری را جایگزین پوشه ثبات فعلی نمود و پوشه ثبات اصلی را به خارج از تراشه منتقل کرد [17]. از آنجایی که در روش ارائهشده، بخشی از پوشه ثبات به خارج از تراشه منتقل میشود و طراحی پوشه ثبات خارج از تراشه با محدودیتهای توان و مساحت کمتری روبهرو است، امکان افزایش ظرفیت آن وجود دارد. از طرفی، تأثیرگذاری و کارایی این روش طراحی، به مشخصات بارهای کاری وابسته است. اگر بازه زندگی ثباتهای مورد استفاده بارهای کاری طولانی باشد، نیاز به انتقال مقادیر ثبات بین بخش درون تراشه و بخش برون تراشه از پوشه ثبات بالا رفته و اثربخشی روش، کاهش مییابد. بنابراین اثربخشی این روش نیز عمومیت نداشته و به نوع بار کاری وابسته است.
روش 6LTRF [18] برای افزایش ظرفیت پوشه ثبات با سربار توان و مساحت قابل قبول ارائه شده است. معماری پوشه ثبات LTRF از یک حافظه نهان ثبات و یک پوشه ثبات اصلی استفاده میکند. ثباتهای کلافها قبل از اجرای یک کلاف از پوشه ثبات اصلی به حافظه نهان ثبات پیشواکشی میشوند و تأخیر پیشواکشی ثبات به کمک زمان اجرای سایر کلافها پنهان میشود. برای پیشواکشی ثباتها، گراف کنترل جریان برنامه در سطح مترجم به زیرگرافهایی به نام بازهثبات تقسیم میشود.
یکی از سربارهای روش LTRF بیکاری کلاف در طول مدت پیشواکشی است که با کاهش تعداد بازهثباتها میتوان این سربار را کاهش داد. هنگام تقسیم گراف کنترل جریان برنامه به بازهثباتها، 2 محدودیت اصلی در نظر گرفته میشود: 1) این که هر بازهثبات، زیرگرافی است که تنها یک ورودی دارد و 2) این که بیشینه تعداد ثبات در هر بازهثبات محدود است. بررسیها نشان میدهند که عامل محدودکننده اصلی برای بزرگترشدن بازهثبات و کمترشدن تعداد بازهثباتها، اغلب عامل دوم است. محدودیت ترافیک پیشواکشی و حجم حافظه نهان، اجازه افزایش تعداد ثباتهای مجاز در بازهثباتها را نمیدهد.
این پژوهش با هدف کاهش سربارهای پیشواکشی و بیکاری کلافها در طول زمان پیشواکشی با استفاده از بازتولید مقادیر میانی ارائه شده است. در بخش اول با استفاده از یک روش زمان ترجمه، به محاسبه مجدد ثباتها با توجه به مقادیر اولیه آنها میپردازیم. بازتولید این مقادیر با توجه به بازه زندگی هر ثبات و وجود عملوندهای مورد نیاز بازتولید صورت میگیرد. بازتولید مقادیر میانی در روش LTRF باعث بزرگترشدن اندازه بازهثبات، بیشترشدن تعداد دستورات قابل اجرا در یک بازهثبات و در نتیجه کاهش سربار پیشواکشی و نیز کاهش سربار بیکاری کلاف در طول مدت پیشواکشی میشود. مزیت این روش آن است که بدون ایجاد تغییر در تعداد مجاز ثباتها و بدون افزایش ترافیک پیشواکشی و تغییر در ظرفیت حافظه نهان، میتوان بازهثباتهای بزرگتری داشت. بهرهگیری از این روش در معماری LTRF باعث بهبود عملکرد روش LTRF و افزایش میزان تحملپذیری تأخیر دسترسی به پوشه ثبات آن گردیده است. نتایج شبیهسازی ما نشان میدهد که تحملپذیری تأخیر دسترسی به پوشه ثبات روش LTRF به میزان ۲۹ درصد با به کارگیری روش پیشنهادی بهبود مییابد.
در ادامه از نتایج روش پیشنهادی (تحملپذیری تأخیر پوشه ثبات) استفاده میکنیم تا کارایی و انرژی پردازنده گرافیکی را بهبود دهیم. آزمایشهای ما با پیکربندیهای گوناگون برای تعداد کلاف و تعداد بازهثبات متفاوت، نشان میدهند که طراحی صورتگرفته در بخش قبل، با پیکربندی 4 کلاف فعال و حداکثر 12 ثبات در هر بازهثبات، تحمل تأخیر پوشه ثبات تا 6 برابر ظرفیت معماری پردازنده گرافیکی پایه را دارد. نتایج شبیهسازی با پیکربندی جدید، بهبود 38 درصدی انرژی پردازنده گرافیکی و بهبود 18 درصدی کارایی را به همراه دارد.
1-1 معماری پوشه ثبات
شکل 1 معماری متداول پوشه ثبات در چند پردازنده جریانی پردازندههای گرافیکی را نشان میدهد [19]. ظرفیت پوشه ثبات در پردازندهای گرافیکی در حدود چندین مگابایت است که برای اجرای همزمان تعداد فراوان نخها ضروری است. به عنوان مثال، ظرفیت پوشه ثبات در پردازنده گرافیکی مدل GP 100 در حدود 14 مگابایت است. هر پوشه ثبات متشکل از تعدادی بانک میباشد و به منظور فراهمکردن پهنای باند مناسب، تعداد بانک بیشتری در پوشه ثبات پردازندههای
(الف)
(ب)
شکل 2: مقایسه تأثیر عوامل گوناگون در محدودسازی موازات سطح نخ، (الف) نسل فرمی و (ب) نسل پاسکال.
گرافیکی در نظر گرفته میشود تا امکان دسترسی موازی برای تعداد بالای نخها را ایجاد کند. هنگامی که پردازنده گرافیکی یک دستور برای اجرا صادر میکند، واحد جمعآوری عملوندها، ثباتهای مورد نیاز این دستور را طی چندین سیکل از پوشه ثبات میخواند. دسترسی واحدهای جمعآوری عملوند به بانکهای ثبات از طریق یک شبکه میانارتباطی تقاطع7 صورت میگیرد که مدیریت دسترسی به این شبکه میانارتباطی بر عهده یک داور مرکزی است.
1-2 موازات سطح نخ
عوامل متعددی وجود دارد که تعداد نخهای قابل تخصیص را به هر چند پردازنده جریانی، محدود میکنند که شامل موارد زیر هستند:
1) بیشینه تعداد بلوک نخ در چند پردازنده جریانی
2) ظرفیت حافظه مشترک
3) ظرفیت پوشه ثبات
تعداد بیشینه ثباتی که مترجم پردازنده گرافیکی در کد اسمبلی به کار میگیرد در نسلهای متوالی افزایش چشمگیری داشته است، به طوری که از 64 ثبات به ازای هر نخ در نسل فرمی به عدد 256 ثبات به ازای هر نخ در نسل ولتا رسیدهایم.
شکل ۲ تأثیر عوامل گوناگون را در محدودکردن موازات سطح نخ در دو نسل پردازنده گرافیکی، فرمی (سال ۲۰۰۹) و پاسکال (سال ۲۰۱۶) نشان میدهد. همان طور که مشاهده میشود در نسلهای کنونی، ظرفیت پوشه ثبات سهم ۸۳ درصدی در محدودکردن موازات سطح نخ دارد و در نتیجه، مهمترین عامل محدودکردن موازات سطح نخ ظرفیت پوشه ثبات است. معماری LTRF برای غلبه بر این مشکل طراحی شده که این معماری، امکان ساخت پوشه ثباتهای بزرگ و با توان مصرفی
و مساحت کم را ایجاد میکند، اما معایبی دارد که در بخش بعد به آن میپردازیم.
2- انگیزه
پوشه ثبات بزرگ میتواند در بهبود کارایی پردازندههای گرافیکی مؤثر باشد. شکل ۳ کارایی پردازنده گرافیکی را بعد از افزایش ظرفیت پوشه
شکل 3: تأثیر افزایش ظرفیت پوشه ثبات روی کارایی پردازندههای گرافیکی در حالت ایدهآل نسبت به معماری پایه پردازنده گرافیکی.
شکل 4: تأثیر افزایش تعداد مجاز ثباتها در بازهثبات بر میانگین تعداد بازهثباتها.
ثبات از ۲۵۶ کیلوبایت به ۵/۱ مگابایت نشان میدهد. در واقعیت افزایش ظرفیت پوشه ثبات منجر به افزایش تأخیر دسترسی به پوشه ثبات میشود که میتواند کارایی را کاهش دهد. اما در این آزمایش در حالت ایدهآل فرض شده که تأخیر دسترسی افزایش نیافته است. روش LTRF به عنوان یک پوشه ثبات سلسلهمراتبی با قابلیت تحمل تأخیر دسترسی ارائه گردیده است.
سازوکار کلیدی در روش LTRF پیشواکشی نزدیک به ایدهآل ثباتها است. در این سازوکار، گراف کنترل جریان برنامه به تعدادی بازهثبات تقسیم میگردد و مجموعه ثباتهای هر بازهثبات در آغاز آن به حافظه نهان پوشه ثبات آورده میشوند. در نتیجه، کلاف هنگام اجرای یک بازهثبات، با تأخیر کم دسترسی به حافظه نهان پوشه ثبات به جای تأخیر زیاد دسترسی به پوشه ثبات اصلی مواجه میشود. معماری LTRF مسیر را برای ارائه انواع روشهای بهینهسازی توان و مساحت در پوشه ثبات پردازندههای گرافیکی هموار میکند و با قابل تحمل ساختن اثر منفی پوشه ثبات کندتر بر کارایی، فضای طراحی بزرگتری در اختیار معماران پردازندههای گرافیکی قرار میدهد تا مصالحه بین توان، مساحت و تأخیر را با آزادی بیشتری انجام دهند.
هر بازهثبات یک زیرگراف از گراف کنترل جریان برنامه است که دو ویژگی مهم دارد: ۱) تنها یک نقطه ورودی کنترل جریان دارد و ۲) تعداد ثباتهای داخل آن از بیشینه تعداد ثبات مشخصشده برای هر کلاف در حافظه نهان پوشه ثبات کمتر یا مساوی است. در این بخش ابتدا بررسی میشود که کدام یک از ویژگیهای بازهثبات، در محدودکردن بازهثبات تأثیر بیشتری میگذارد. برای این منظور، تعداد مجاز ثباتها در یک بازهثبات از ۱۶ تا ۲۵۶ افزایش داده شده و میانگین تعداد بازهثباتها برای هر حالت بین بارهای کاری گوناگون محاسبه گردیده است.
در شکل 4، تأثیر افزایش تعداد مجاز ثباتها در یک بازهثبات بر تعداد بازهثباتها، در دو حالت بدون قانونِ CFG (خطچین نارنجی) و با قانونِ CFG (ممتد آبی) مقایسه شدهاند. در این شکل نتایج هنجارسازی شده به تعداد پایه بازهثبات گزارش شده است. همان طور که مشاهده میشود، افزایش تعداد ثباتها از ۱۶ به ۲۵۶، میانگین تعداد بازهثبات را به میزان ۹۸ درصد کاهش داده است. کاهش تعداد بازهثباتها در این آزمایش
شکل 5: مقایسه تأثیر افزایش تعداد مجاز ثبات در بازهثبات روش LTRF بر میزان پنهانسازی تأخیر دسترسی به پوشه ثبات در دو حالت ایدهآل و با سربار واقعی.
نشاندهنده کاهش محدودیت ساختهشدن بازهثبات و امکان ترکیبشدن بیشتر بازهثباتها با یکدیگر است.
سپس آزمایش با حذف اثر ویژگی کنترل جریانی تکرار شده (بدون قانونِ CFG) و میانگین تعداد بازهثباتها برای مقادیر گوناگون ثباتها محاسبه گردیده و نتایج به تعداد پایه بازهثبات، هنجارسازی شده است. مشاهده میشود که حذف قانون شماره ۱ تأثیر چندانی در کاهش تعداد بازهثباتها ندارد و تعداد بازهثباتها با حالت قبل تقریباً یکسان است. همچنین با افزایش تعداد مجاز ثباتها در بازهثبات، تأثیر حذف قانون
در سطح گراف کنترل جریان کاهش مییابد. نتیجه میگیریم که تعداد محدود ثباتها در بازهثبات، نقشی کلیدی را در تعیین تعداد بازهثباتها ایفا میکند.
کاهش تعداد بازهثباتها (یا افزایش اندازه بازهثباتها) میتواند مزایای زیر را به ارمغان بیاورد:
• تعداد دستورالعملهای ایستا و پویا را در بازهثبات افزایش میدهد که منجر به افزایش قدرت مکانیزم LTRF در پنهانسازی تأخیر پیشواکشی ثباتها میگردد.
• سربار انرژی و کارایی پیشواکشی ثباتها را به دلیل کاهش تعداد بازهثباتها، کاهش میدهد.
اما کاهش تعداد بازهثباتها از طریق افزایش تعداد ثباتهای مجاز در بازهثبات راهکار مناسبی نیست. زیرا افزایش تعداد ثباتها منجر به افزایش اندازه حافظه نهان پوشه ثبات و افزایش تأخیر پیشواکشی ثباتها میگردد که در نهایت میتواند سود حاصل از کاهش تعداد بازهثبات را از بین ببرد. برای نشاندادن بیشتر این موضوع آزمایشی را طرح کردیم.
در این آزمایش بیشینه تعداد مجاز ثبات در بازهثبات را از ۱۶ به ۶۴ افزایش دادیم و کارایی روش LTRF را در پنهانسازی تأخیر دسترسی
به پوشه ثبات در دو حالت بررسی نمودیم. در حالت اول سربار افزایش تعداد ثباتها را در نظر میگیریم و در حالت دوم فرض میشود که
سربار پیشواکشی با افزایش تعداد ثبات تغییری نمیکند. شکل ۵ نتایج هنجارشده نسبت به معماری پایه پردازنده گرافیکی را گزارش میکند. همان طور که مشاهده میشود با در نظر گرفتن سربار افزایش تعداد ثباتها، کارایی روش LTRF با افزایش تعداد ثباتهای بازهثبات تغییر چندانی نمیکند. در حالی که اگر تعداد ثباتها را بدون سربار افزایش دهیم میتواند کارایی روش LTRF در پنهانسازی تأخیر دسترسی به پوشه ثبات را به میزان قابل توجهی افزایش دهد. بنابراین کاهش تعداد بازهثباتها باید با راهی متفاوت از افزایش تعداد مجاز ثبات در بازهثبات صورت گیرد.
در این پژوهش تصمیم داریم که با کاهش تعداد ثباتهای مصرفی در بازهثبات به کمک روش بازتولید مقادیر میانی، تعداد بازهثباتها را بدون افزایش بیشینه تعداد مجاز ثبات، کاهش دهیم. پژوهشهای گذشته نشان میدهند که واحدهای اجرایی در پردازندههای گرافیکی به میزان قابل توجهی بیکاری دارند که میتوان از پهنای باند پردازشی به هدر رفته برای بازتولید مقادیر میانی بهره برد.
3- روش پیشنهادی
در روش پیشنهادی در الگوریتم ساخت بازهثباتها علاوه بر شرط تعداد ثبات مجاز در هر بازهثبات، شروط دیگری نیز بررسی میشوند.
• اول امکان محاسبه مجدد یک ثبات از طریق مقادیر پایه آن بررسی میگردد که این شرط با توجه به بازه زندگی هر ثبات و وجود عملوندهای مورد نیاز آن بررسی میشود. بازه زندگی هر ثبات از ابتدای تعریفشدن آن یعنی دستورالعمل نوشتهشدن در ثبات آغاز میگردد و تا آخرین باری که بدون تغییر خوانده میشود، ادامه مییابد. وجود عملوندها را این گونه تعریف میکنیم: قطعنشدن بازه زندگی عملوندها از محل تعریفشدن ثبات مورد نظر تا آخرین باری که استفاده شده است.
• دوم شرط کمترشدن مجموع تعداد ثبات از محدودیت تعیینشده در صورت محاسبه مجدد، مورد بررسی قرار میگیرد. بدیهی است که در صورت کمترنشدن تعداد ثبات از مقدار
عمل محاسبه مجدد تأثیری در اندازه بازهثبات نخواهد داشت.
در صورت برقراری این شروط در زمان ترجمه، کد محاسبه مجدد ثبات در کد اصلی جایگذاری میشود. به این ترتیب میتوان بازهثبات بزرگتری ساخت و نیز از پیشواکشی غیر ضروری به حافظه نهان ثبات جلوگیری کرد. عمل محاسبه مجدد یک ثبات از طریق مقادیر اولیه آن در ادامه این مقاله، بازتولید مقادیر میانی نامیده شده است.
در ادامه در بخش 3-1 مفاهیم تئوری ساخت بازهثبات در روش LTRF توضیح داده میشود و در بخش 3-2 شبهکد دومرحلهای روش پیشنهادی و توضیحات مربوط به آن آمده است.
3-1 نحوه ساخت بازهثباتها
به علت وقفه ایجادشده در ابتدای زیرگراف پیشواکشی، دستورات مربوط به پیشواکشی ثبات تأخیر زیادی دارند که این تأخیر میتواند منجر به کاهش کارایی پردازنده گرافیکی گردد و بنابراین استفاده از دستورالعملهای پیشواکشی باید بسیار محدود باشند. در روش LTRF گراف کنترل جریان برنامههای پردازنده گرافیکی به تعدادی بازهثبات تقسیم میشود. بازهثبات، زیرگرافی از گراف کنترل جریان با دو شرط است: ۱) تنها یک ورودی کنترل جریان دارد و ۲) تعداد ثباتهای داخل آن از بیشینه تعداد ثبات مشخصشده برای هر کلاف در حافظه نهان پوشه ثبات، کمتر یا مساوی است. مهمترین تفاوت بازهثبات با ساختارهای مشابهی که در کارهای گذشته ارائه شده است این است که در بازهثبات ساختارهای پیچیده کنترل جریان (مانند پرشهای برگشتی8) مجاز بوده و این ساختارها منجر به اتمام بازهثبات نمیشوند. به عبارت دیگر، بازهثبات محدودیتهای بسیار کمتری نسبت به ساختارهای گذشته دارد.
کاهش محدودیتها در ساخت بازهثبات 2 سود مهم به ارمغان میآورد: ۱) افزایش تعداد دستورالعملهای ایستا در بازهثبات که منجر به کاهش تعداد دستورالعملهای پیشواکشی میگردد و ۲) مجازبودن پرشهای برگشت در بازهثبات باعث میشود تا حلقهها در بازهثبات جای گرفته و