{"title":"无同步多线程架构和应用程序编程接口","authors":"Haitham Akkary, Sami Ramly, Karim Serhan","doi":"10.1109/MELCON.2014.6820580","DOIUrl":null,"url":null,"abstract":"We present a multithreading architecture and application programming interface (API) for writing and executing synchronization-free shared-memory parallel applications. The API provides simple directives with which a programmer can specify parallel or mostly parallel threads in a C/C++ program. In case of inter-thread data dependences, the programmer simply declares these dependences instead of using synchronization directives that serialize the dependent threads execution. The hardware uses the dependences declared by the programmer to split the program execution into disjoint control and data threads that execute concurrently on multiple cooperating latency-tolerant out-of-order cores. We show that the new architecture with its API allows a programmer to parallelize code that is otherwise non-parallelizable with existing parallel programming APIs, such as OpenMP, thus providing better programmability and higher performance. We use as an example Viterbi algorithm code to explain the new architecture and its API and a multicore performance simulator to highlight its performance potential.","PeriodicalId":103316,"journal":{"name":"MELECON 2014 - 2014 17th IEEE Mediterranean Electrotechnical Conference","volume":"37 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2014-04-13","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":"{\"title\":\"Synchronization-free multithreading architecture and application programming interface\",\"authors\":\"Haitham Akkary, Sami Ramly, Karim Serhan\",\"doi\":\"10.1109/MELCON.2014.6820580\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"We present a multithreading architecture and application programming interface (API) for writing and executing synchronization-free shared-memory parallel applications. The API provides simple directives with which a programmer can specify parallel or mostly parallel threads in a C/C++ program. In case of inter-thread data dependences, the programmer simply declares these dependences instead of using synchronization directives that serialize the dependent threads execution. The hardware uses the dependences declared by the programmer to split the program execution into disjoint control and data threads that execute concurrently on multiple cooperating latency-tolerant out-of-order cores. We show that the new architecture with its API allows a programmer to parallelize code that is otherwise non-parallelizable with existing parallel programming APIs, such as OpenMP, thus providing better programmability and higher performance. We use as an example Viterbi algorithm code to explain the new architecture and its API and a multicore performance simulator to highlight its performance potential.\",\"PeriodicalId\":103316,\"journal\":{\"name\":\"MELECON 2014 - 2014 17th IEEE Mediterranean Electrotechnical Conference\",\"volume\":\"37 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2014-04-13\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"0\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"MELECON 2014 - 2014 17th IEEE Mediterranean Electrotechnical Conference\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1109/MELCON.2014.6820580\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"MELECON 2014 - 2014 17th IEEE Mediterranean Electrotechnical Conference","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/MELCON.2014.6820580","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
Synchronization-free multithreading architecture and application programming interface
We present a multithreading architecture and application programming interface (API) for writing and executing synchronization-free shared-memory parallel applications. The API provides simple directives with which a programmer can specify parallel or mostly parallel threads in a C/C++ program. In case of inter-thread data dependences, the programmer simply declares these dependences instead of using synchronization directives that serialize the dependent threads execution. The hardware uses the dependences declared by the programmer to split the program execution into disjoint control and data threads that execute concurrently on multiple cooperating latency-tolerant out-of-order cores. We show that the new architecture with its API allows a programmer to parallelize code that is otherwise non-parallelizable with existing parallel programming APIs, such as OpenMP, thus providing better programmability and higher performance. We use as an example Viterbi algorithm code to explain the new architecture and its API and a multicore performance simulator to highlight its performance potential.