{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2022,12,29]],"date-time":"2022-12-29T05:19:13Z","timestamp":1672291153870},"reference-count":29,"publisher":"Association for Computing Machinery (ACM)","issue":"4","content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Archit. Code Optim."],"published-print":{"date-parts":[[2006,12]]},"abstract":"<jats:p>\n            Several programming languages guarantee that array subscripts are checked to ensure they are within the bounds of the array. While this guarantee improves the correctness and security of array-based code, it adds overhead to array references. This has been an obstacle to using higher-level languages, such as Java, for high-performance parallel computing, where the language specification requires that all array accesses must be checked to ensure they are within bounds. This is because, in practice, array-bounds checking in scientific applications may increase execution time by more than a factor of 2. Previous research has explored optimizations to statically eliminate bounds checks, but the dynamic nature of many scientific codes makes this difficult or impossible. Our approach is, instead, to create a compiler and operating system infrastructure that does not generate explicit bounds checks. It instead places arrays inside of\n            <jats:italic>Index Confinement Regions<\/jats:italic>\n            (ICRs), which are large, isolated, mostly unmapped virtual memory regions. Any array reference outside of its bounds will cause a protection violation; this provides\n            <jats:italic>implicit<\/jats:italic>\n            bounds checking. Our results show that when applying this infrastructure to high-performance computing programs written in Java, the overhead of bounds checking relative to a program with no bounds checks is reduced from an average of 63% to an average of 9%.\n          <\/jats:p>","DOI":"10.1145\/1187976.1187982","type":"journal-article","created":{"date-parts":[[2007,1,16]],"date-time":"2007-01-16T19:38:29Z","timestamp":1168976309000},"page":"502-527","update-policy":"http:\/\/dx.doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":0,"title":["Implicit array bounds checking on 64-bit architectures"],"prefix":"10.1145","volume":"3","author":[{"given":"Chris","family":"Bentley","sequence":"first","affiliation":[{"name":"The University of Georgia, Georgia"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Scott A.","family":"Watterson","sequence":"additional","affiliation":[{"name":"The University of Georgia, Georgia"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"David K.","family":"Lowenthal","sequence":"additional","affiliation":[{"name":"The University of Georgia, Georgia"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Barry","family":"Rountree","sequence":"additional","affiliation":[{"name":"The University of Georgia, Georgia"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2006,12]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/335231.335232"},{"key":"e_1_2_1_2_1","unstructured":"Bailey D. Barton J. Lasinski T. and Simon H. 1991. The NAS parallel benchmarks. RNR-91-002 NASA Ames Research Center.  Bailey D. Barton J. Lasinski T. and Simon H. 1991. The NAS parallel benchmarks. RNR-91-002 NASA Ames Research Center."},{"key":"e_1_2_1_3_1","unstructured":"BEA. 2005. BEA JRockit whitepaper (http:\/\/www.bea.com\/content\/news_events\/white_papers\/bea_jrockit_wp.pdf).  BEA. 2005. BEA JRockit whitepaper (http:\/\/www.bea.com\/content\/news_events\/white_papers\/bea_jrockit_wp.pdf)."},{"key":"e_1_2_1_4_1","volume-title":"Proc. ACM Conference on Programming Language Design and Implementation. 321--333","author":"Bodik R.","unstructured":"Bodik , R. , Gupta , R. , and Sarkar , V . 2000. ABCD: eliminating array-bounds checks on demand . In Proc. ACM Conference on Programming Language Design and Implementation. 321--333 . 10.1145\/349299.349342 Bodik, R., Gupta, R., and Sarkar, V. 2000. ABCD: eliminating array-bounds checks on demand. In Proc. ACM Conference on Programming Language Design and Implementation. 321--333. 10.1145\/349299.349342"},{"key":"e_1_2_1_5_1","first-page":"11","article-title":"Optimizing array reference checking in Java programs. Concurrency","volume":"10","author":"Boisvert R. F.","year":"1998","unstructured":"Boisvert , R. F. , Dongarra , J. J. , Pozo , R. , Remington , K. A. , and Stewart , G. W. 1998 . Optimizing array reference checking in Java programs. Concurrency : Practice and Experience 10 , 11 - 13 , 1117--1129. Boisvert, R. F., Dongarra, J. J., Pozo, R., Remington, K. A., and Stewart, G. W. 1998. Optimizing array reference checking in Java programs. Concurrency: Practice and Experience 10, 11-13, 1117--1129.","journal-title":"Practice and Experience"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/195792.195795"},{"key":"e_1_2_1_7_1","volume-title":"Proc. IEEE International Conference on Distributed Computing Systems. 409--420","author":"Chiueh T.","unstructured":"Chiueh , T. and Hsu , F . 2001. RAD: A compile-time solution to buffer overflow attacks . In Proc. IEEE International Conference on Distributed Computing Systems. 409--420 . Chiueh, T. and Hsu, F. 2001. RAD: A compile-time solution to buffer overflow attacks. In Proc. IEEE International Conference on Distributed Computing Systems. 409--420."},{"key":"e_1_2_1_8_1","volume-title":"Proc. USENIX Security Conference. 63--78","author":"Cowan C.","unstructured":"Cowan , C. , Pu , C. , Maier , D. , Walpole , J. , Bakke , P. , Beattie , S. , Grier , A. , Wagle , P. , Zhang , Q. , and Hinton , H . 1998. StackGuard: Automatic adaptive detection and prevention of buffer-overflow attacks . In Proc. USENIX Security Conference. 63--78 . Cowan, C., Pu, C., Maier, D., Walpole, J., Bakke, P., Beattie, S., Grier, A., Wagle, P., Zhang, Q., and Hinton, H. 1998. StackGuard: Automatic adaptive detection and prevention of buffer-overflow attacks. In Proc. USENIX Security Conference. 63--78."},{"key":"e_1_2_1_9_1","volume-title":"Working Conference on Reverse Engineering. 323--333","author":"Dahn C.","unstructured":"Dahn , C. and Mancoridis , S . 2003. Using program transformation to secure c programs against buffer overflows . In Working Conference on Reverse Engineering. 323--333 . Dahn, C. and Mancoridis, S. 2003. Using program transformation to secure c programs against buffer overflows. In Working Conference on Reverse Engineering. 323--333."},{"key":"e_1_2_1_10_1","unstructured":"Frumkin M. Schultz M. Jin H. and Yan J. 2002. Implementation of the NAS parallel benchmarks in Java. NAS-02-009 NASA Ames Research Center.  Frumkin M. Schultz M. Jin H. and Yan J. 2002. Implementation of the NAS parallel benchmarks in Java. NAS-02-009 NASA Ames Research Center."},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/176454.176507"},{"key":"e_1_2_1_12_1","unstructured":"Intel. 2006. Intel Itanium Architecture Software Developer's Manual (http:\/\/download.intel.com\/design\/itanium\/manuals\/24531705.pdf).  Intel. 2006. Intel Itanium Architecture Software Developer's Manual (http:\/\/download.intel.com\/design\/itanium\/manuals\/24531705.pdf)."},{"key":"e_1_2_1_13_1","volume-title":"Proc. USENIX Operating Systems Design and Implementation. 215--228","author":"Itzkovitz A.","unstructured":"Itzkovitz , A. and Schuster , A . 1999. Multiview and Millipage---fine-grain sharing in page-based DSMs . In Proc. USENIX Operating Systems Design and Implementation. 215--228 . Itzkovitz, A. and Schuster, A. 1999. Multiview and Millipage---fine-grain sharing in page-based DSMs. In Proc. USENIX Operating Systems Design and Implementation. 215--228."},{"key":"e_1_2_1_14_1","unstructured":"Java hotspot vm options (http:\/\/java.sun.com\/docs\/hotspot\/vmoptions.html).  Java hotspot vm options (http:\/\/java.sun.com\/docs\/hotspot\/vmoptions.html)."},{"key":"e_1_2_1_15_1","volume-title":"Proc. ACM Conference on Programming Language Design and Implementation. 270--278","author":"Kolte P.","year":"2071","unstructured":"Kolte , P. and Wolfe , M . 1995. Elimination of redundant array subscript range checks . In Proc. ACM Conference on Programming Language Design and Implementation. 270--278 . 10.1145\/ 2071 10.207160 Kolte, P. and Wolfe, M. 1995. Elimination of redundant array subscript range checks. In Proc. ACM Conference on Programming Language Design and Implementation. 270--278. 10.1145\/207110.207160"},{"key":"e_1_2_1_16_1","volume-title":"Proc. IEEE International Conference on Dependable Systems and Networks. 388--397","author":"Lam L.","year":"2005","unstructured":"Lam , L. and Chiueh , T . 2005. Checking array-bound violation using segmentation hardware . In Proc. IEEE International Conference on Dependable Systems and Networks. 388--397 . 10.1109\/DSN. 2005 .25 Lam, L. and Chiueh, T. 2005. Checking array-bound violation using segmentation hardware. In Proc. IEEE International Conference on Dependable Systems and Networks. 388--397. 10.1109\/DSN.2005.25"},{"key":"e_1_2_1_17_1","volume-title":"Proc. ACM Conference on Programming Language Design and Implementation. 114--119","author":"Markstein V.","unstructured":"Markstein , V. , Cocke , J. , and Markstein , P . 1982. Optimization of range checking . In Proc. ACM Conference on Programming Language Design and Implementation. 114--119 . 10.1145\/800230.806986 Markstein, V., Cocke, J., and Markstein, P. 1982. Optimization of range checking. In Proc. ACM Conference on Programming Language Design and Implementation. 114--119. 10.1145\/800230.806986"},{"key":"e_1_2_1_18_1","unstructured":"McGary G. Bounds-checking C compiler (http:\/\/www.gnu.org\/software\/gcc\/projects\/bp\/main.html).  McGary G. Bounds-checking C compiler (http:\/\/www.gnu.org\/software\/gcc\/projects\/bp\/main.html)."},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1147\/sj.373.0409"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1147\/sj.391.0021"},{"key":"e_1_2_1_21_1","volume-title":"Linux Kernel: Design and Implementation","author":"Mosberger D.","year":"2002","unstructured":"Mosberger , D. and Eranian , S . 2002 . IA- 64 Linux Kernel: Design and Implementation . Prentice-Hall , Eaglewood Cliffs, NJ . Mosberger, D. and Eranian, S. 2002. IA-64 Linux Kernel: Design and Implementation. Prentice-Hall, Eaglewood Cliffs, NJ."},{"key":"e_1_2_1_22_1","unstructured":"Perens B. Electric Fence (http:\/\/sunsite.unc.edu\/pub\/linux\/devel\/lang\/c\/electricfence-2.0.5.tar.gz).  Perens B. Electric Fence (http:\/\/sunsite.unc.edu\/pub\/linux\/devel\/lang\/c\/electricfence-2.0.5.tar.gz)."},{"key":"e_1_2_1_23_1","volume-title":"Proc. ACM Conference on Programming Language Design and Implementation. 182--195","author":"Rugina R.","unstructured":"Rugina , R. and Rinard , M. C . 2000. Symbolic bounds analysis of pointers, array indices, and accessed memory regions . In Proc. ACM Conference on Programming Language Design and Implementation. 182--195 . 10.1145\/349299.349325 Rugina, R. and Rinard, M. C. 2000. Symbolic bounds analysis of pointers, array indices, and accessed memory regions. In Proc. ACM Conference on Programming Language Design and Implementation. 182--195. 10.1145\/349299.349325"},{"key":"e_1_2_1_24_1","unstructured":"SUN. 2002. The Java HotSpot virtual machine (http:\/\/java.sun.com\/products\/hotspot\/docs\/whitepaper\/java_hotspot_v1.4.1\/jhs_141_wp_d2a.pdf).  SUN. 2002. The Java HotSpot virtual machine (http:\/\/java.sun.com\/products\/hotspot\/docs\/whitepaper\/java_hotspot_v1.4.1\/jhs_141_wp_d2a.pdf)."},{"key":"e_1_2_1_25_1","volume-title":"Proc. ACM Symposium on Operating Systems Principles. 184--200","author":"Talluri M.","year":"1995","unstructured":"Talluri , M. , Hill , M. D. , and Khalidi ., Y. A. 1995 . A new page table for 64-bit address spaces . In Proc. ACM Symposium on Operating Systems Principles. 184--200 . 10.1145\/224056.224071 Talluri, M., Hill, M. D., and Khalidi., Y. A. 1995. A new page table for 64-bit address spaces. In Proc. ACM Symposium on Operating Systems Principles. 184--200. 10.1145\/224056.224071"},{"key":"e_1_2_1_26_1","unstructured":"Winwood S. Shuf Y. and Franke H. 2002. Multiple page size support in the linux kernel.  Winwood S. Shuf Y. and Franke H. 2002. Multiple page size support in the linux kernel."},{"key":"e_1_2_1_27_1","volume-title":"Proc. ACM Conference on Programming Language Design and Implementation. 249--257","author":"Xi H.","unstructured":"Xi , H. and Pfenning , F . 1998. Eliminating array-bound checking through dependent types . In Proc. ACM Conference on Programming Language Design and Implementation. 249--257 . 10.1145\/277650.277732 Xi, H. and Pfenning, F. 1998. Eliminating array-bound checking through dependent types. In Proc. ACM Conference on Programming Language Design and Implementation. 249--257. 10.1145\/277650.277732"},{"key":"e_1_2_1_28_1","volume-title":"Proc. Centre for Advanced Studies Conference. 110--125","author":"Xi H.","unstructured":"Xi , H. and Xia , S . 1999. Towards array-bound check elimination in Java virtual machine langauge . In Proc. Centre for Advanced Studies Conference. 110--125 . Xi, H. and Xia, S. 1999. Towards array-bound check elimination in Java virtual machine langauge. In Proc. Centre for Advanced Studies Conference. 110--125."},{"key":"e_1_2_1_29_1","volume-title":"Proc. ACM Symposium on Operating Systems Principles. 63--76","author":"Young M.","unstructured":"Young , M. , Avadis Tevanian , J. , Rashid , R. , Eppinger , D. G. J. , Chew , J. , Bolosky , W. , Black , D. , and Baron , R . 1987. The duality of memory and communication in the implementation of a multiprocessor operating system . In Proc. ACM Symposium on Operating Systems Principles. 63--76 . 10.1145\/41457.37507 Young, M., Avadis Tevanian, J., Rashid, R., Eppinger, D. G. J., Chew, J., Bolosky, W., Black, D., and Baron, R. 1987. The duality of memory and communication in the implementation of a multiprocessor operating system. In Proc. ACM Symposium on Operating Systems Principles. 63--76. 10.1145\/41457.37507"}],"container-title":["ACM Transactions on Architecture and Code Optimization"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1187976.1187982","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,12,28]],"date-time":"2022-12-28T17:54:12Z","timestamp":1672250052000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1187976.1187982"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2006,12]]},"references-count":29,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2006,12]]}},"alternative-id":["10.1145\/1187976.1187982"],"URL":"https:\/\/doi.org\/10.1145\/1187976.1187982","relation":{},"ISSN":["1544-3566","1544-3973"],"issn-type":[{"value":"1544-3566","type":"print"},{"value":"1544-3973","type":"electronic"}],"subject":[],"published":{"date-parts":[[2006,12]]},"assertion":[{"value":"2006-12-01","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}