CN105468448B - 一种面向异构众核环境的从核系统调用实现方法 - Google Patents
一种面向异构众核环境的从核系统调用实现方法 Download PDFInfo
- Publication number
- CN105468448B CN105468448B CN201510830277.1A CN201510830277A CN105468448B CN 105468448 B CN105468448 B CN 105468448B CN 201510830277 A CN201510830277 A CN 201510830277A CN 105468448 B CN105468448 B CN 105468448B
- Authority
- CN
- China
- Prior art keywords
- core
- main
- called
- subordinate
- principal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明提供了一种面向异构众核环境的从核系统调用实现方法,包括:在主核和从核之间布置主核和从核均能访问的一块共享的空间作为主从交互区,用于在主核和从核之间交互或传递数据;利用从核系统调用的处理代码,保存从核系统调用的上下文;利用从核系统调用的处理代码,解析系统调用的系统调用号,将系统调用号保存在主从交互区;利用从核系统调用的处理代码,解析系统调用的传递的参数,将这些参数保存到主从的交互区上;利用从核系统调用的处理代码,向主核发送中断以通知主核处理从核的相关系统调用;利用从核系统调用的处理代码,使得从核判断主核处理完成标志,恢复从核系统调用的上下文。
Description
技术领域
本发明涉及本发明涉及处理器技术领域,具体涉及一种面向异构众核环境的从核系统调用实现方法。
背景技术
异构众核计算作为一种新型计算模式推动计算机技术的发展,已成为高性能计算研究的前沿热点。在异构众核CPU中,由于从核上不能运行完整的操作系统,如何有效的支持从核完成大部分POSIX(Portable Operating System Interface)兼容的系统调用,将很大程度上决定了整个众核操作系统的好用性。当前为支持从核上系统调用的实现,主要有两种方式:1)使用用户层的系统调用库:对用户使用大部分的系统调用,直接以库的方式在用户层实现;2)在从核上直接运行操作系统,从而支持从核的用户运行,但该方式对从核的硬件要求较高,而且对整个众核操作系统的设计也是一个挑战。
一般情况下,用户程序(应用程序)通过应用编程接口(API)而不是直接通过系统调用来编程。一个API定义了一组应用程序使用的编程接口。它们可以实现成一个系统调用,也可以通过调用多个系统调用来实现,而完全不使用任何系统调用也不存在问题。在Unix世界中,最流行的应用编程接口是基于POSIX标准的,其目标是提供一套大体上基于Unix的可移植操作系统标准。在C语言程序设计中,C标准函数库是所有符合标准的头文件集合,以及常用的函数库实现,并且C库实现了Unix系统的主要API,包括C库函数和系统调用。Linux系统作为类Unix系统,系统调用也是作为C库的一部分,如图1所示。
在传统的C库系统调用的实现时,由于涉及到从用户态到核心态的切换,因此在不同的硬件平台上的实现是不一样的,但是它们都会提供一条特殊的指令,使得用户能够从用户态切换到核心态。如alpha架构下,使用的是一条sys_call 0x83这条指令完成的,而在x86平台则是通过IDT中断描述符表,以及指令int$0x80来实现的。但无论哪种方式都离不开一条会导致运行特权级切换(指从用户态切换到核心态)的指令(alpha下是sys_call,x86下是int)。传统的系统调用的具体实现主要流程如下:
系统调用号的传递:在Linux中,每个系统调用被赋予一个系统调用号,调用系统调用时,需传递系统调用号,在x86平台是使用eax寄存器保存调用的系统调用号的,而alpha架构下是$0寄存器。
参数传递:大部分系统调用还需要使用参数输入的,在x86系统上,ebx,ecx,edx,esi和edi按照顺序存放前五个参数。
切换到核心态:主要通过特殊的指令实现。X86下为int,alpha为sys_call。
系统调用返回值:一般是通过寄存器传递来完成结果的返回。如在alpha下使用$0寄存器保存系统调用的结果,错误码则使用$19传递。
但是,当前的技术中,直接实现用户层的系统调用库,工作量巨大,因为其需要对每一个系统调用仔细分析,重新在用户层实现,并且还有所受限(有很多系统调用是需要用到操作系统内部的结构,这个问题很难解决)。
发明内容
本发明所要解决的技术问题是针对现有技术中存在上述缺陷,提供一种简单且高效的面向异构众核环境的从核系统调用实现方法,其能够在异构众核环境下支持从核直接调用大部分的POSIX兼容的系统调用。
根据本发明,提供了一种面向异构众核环境的从核系统调用实现方法,包括:在主核和从核之间布置主核和从核均能访问的一块共享的空间作为主从交互区,用于在主核和从核之间交互或传递数据;利用从核系统调用的处理代码,保存从核系统调用的上下文;利用从核系统调用的处理代码,解析系统调用的系统调用号,将系统调用号保存在主从交互区;利用从核系统调用的处理代码,解析系统调用的传递的参数,将这些参数保存到主从的交互区上;利用从核系统调用的处理代码,向主核发送中断以通知主核处理从核的相关系统调用;利用从核系统调用的处理代码,使得从核判断主核处理完成标志,恢复从核系统调用的上下文。
优选地,主核在收到从核的中断后执行下述操作:内核层产生信号以发送给主核上处理从核系统调用的代理线程;代理线程在收到该信号时,从主从交互区中解析出系统调用号以及相关系统调用参数,并使用该系统调用号及相关系统调用参数直接产生一个系统调用,从而完成从核系统调用的代理;代理线程完成系统调用代理后,将系统调用的结果写回主从交互区,并填写主核完成标志。
优选地,主核能够运行操作系统。
优选地,所述操作系统是linux操作系统。
优选地,主核支持POSIX系统调用。
优选地,从核不具备运行操作系统的能力。
本发明提供一种简单且高效的面向异构众核环境的从核系统调用实现方法,其能够在异构众核环境下支持从核直接调用大部分的POSIX兼容的系统调用。
附图说明
结合附图,并通过参考下面的详细描述,将会更容易地对本发明有更完整的理解并且更容易地理解其伴随的优点和特征,其中:
图1示意性地示出了传统的系统调用的实现示意图。
图2示意性地示出了根据本发明优选实施例的面向异构众核环境的从核系统调用实现方法的流程图。
需要说明的是,附图用于说明本发明,而非限制本发明。注意,表示结构的附图可能并非按比例绘制。并且,附图中,相同或者类似的元件标有相同或者类似的标号。
具体实施方式
为了使本发明的内容更加清楚和易懂,下面结合具体实施例和附图对本发明的内容进行详细描述。
本发明主要是面向特定主从异构环境,在该环境下,主核能够运行完整的操作系统(例如linux操作系统),支持所有的POSIX系统调用,而从核不具备运行操作系统的能力。在此环境下,本发明利用主从之间的交互,通过主核代理的方式协助从核完成系统调用的执行。
本发明提出一种方法,通过修改C库以及利用主从共享交互区的方式,实现了高效的从核系统调用。首先介绍下本发明适用的前提条件:1)主核和从核之间需存在一块共享的空间(主核和从核均能访问的空间)用于在主核和从核之间交互或传递数据,这块空间简称为主从交互区;2)从核可以向主核发送中断通知主核;3)主从核空间视角一致,即主核可访问从核应用程序所使用的用户空间。在这三个前提条件下,本发明提出方法的具体内容如下.
图2示意性地示出了根据本发明优选实施例的面向异构众核环境的从核系统调用实现方法的流程图。
修改传统c库系统调用实现的流程,主要的修改包括将切换到核心态的动作使用一条长跳转来实现,如call或jmp指令。目的是跳到一段从核处理系统调用的特殊代码上。
从核系统调用的处理代码主要完成的工作包含:1)保存从核系统调用的上下文(主要是寄存器);2)解析系统调用的系统调用号,将系统调用号保存在主从交互区;3)解析系统调用的传递的参数,将这些参数也保存到主从的交互区上;4)向主核发送中断通知主核处理从核的相关系统调用;5)从核判断主核处理完成标志,恢复从核系统调用的上下文。
从核上课题运行启动时,在主核上需创建一个相应的代理线程,该线程拥有从核可访问的空间,即从核可访问的空间段,该线程也能相应的访问。
主核在收到从核的系统调用相关中断后,主要完成的工作包含:1)内核层产生一特殊信号,发送给主核上处理从核系统调用的代理线程;2)代理线程在收到该信号处理时,从该从核的主从交互区中解析出系统调用号以及相关系统调用参数,并使用该系统调用号及参数直接产生一个系统调用,从而完成从核系统调用的代理;3)代理线程完成系统调用代理后,将系统调用的结果写回主从交互区,并填写主核完成标志,从核再判断到该标志后,恢复执行,整个系统调用的流程结束。
在本发明的方法中,从核用户课题在整个操作系统上运行时,包含两部分:1)主核的代理线程;2)从核运行上下文;同时操作系统内核还包含相应的中断处理。
由此,本发明提供一种简单且高效的面向异构众核环境的从核系统调用实现方法,其能够在异构众核环境下支持从核直接调用大部分的POSIX兼容的系统调用。
为了本领域技术人员可以更清楚地理解本发明,下面对本发明中的一些术语进行简要说明:
异构众核:CPU拥有众多的处理核心,众多核心设计结构不同,分别承担了不同的系统功能。
核间通信:CPU上的处理核之间利用通信协议,相互传递消息。
系统调用:由操作系统实现提供的所有系统调用所构成的集合即程序接口或应用编程接口,是应用程序同系统之间的接口。
从核管理:针对异构众核的环境,在使用众核CPU时,需要选择某个或几个核担任管理其他核(从核)的任务,从而构成一个主从式的架构。从核管理主要就是指主核对从核的管理,包括从核的运行控制、空间管理等。
POSIX:表示可移植操作系统接口,posix标准定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称。
此外,需要说明的是,除非特别指出,否则说明书中的术语“第一”、“第二”、“第三”等描述仅仅用于区分说明书中的各个组件、元素、步骤等,而不是用于表示各个组件、元素、步骤之间的逻辑关系或者顺序关系等。
可以理解的是,虽然本发明已以较佳实施例披露如上,然而上述实施例并非用以限定本发明。对于任何熟悉本领域的技术人员而言,在不脱离本发明技术方案范围情况下,都可利用上述揭示的技术内容对本发明技术方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
Claims (5)
1.一种面向异构众核环境的从核系统调用实现方法,其特征在于包括:
在主核和从核之间布置主核和从核均能访问的一块共享的空间作为主从交互区,用于在主核和从核之间交互或传递数据;
从核利用从核系统调用的处理代码,在主从交互区中保存从核系统调用的上下文;
从核利用从核系统调用的处理代码,解析系统调用的系统调用号,将系统调用号保存在主从交互区;
从核利用从核系统调用的处理代码,解析系统调用的传递的参数,将这些参数保存到主从的交互区上;
从核利用从核系统调用的处理代码,向主核发送中断以通知主核处理从核的相关系统调用;
从核利用从核系统调用的处理代码,在判断主核处理完成的情况下恢复从核系统调用的上下文;
其中,主核在收到从核的中断后执行下述操作:
内核层产生信号以发送给主核上处理从核系统调用的代理线程;
代理线程在收到该信号时,从主从交互区中解析出系统调用号以及相关系统调用参数,并使用该系统调用号及相关系统调用参数直接产生一个系统调用,从而完成从核系统调用的代理;
代理线程完成系统调用代理后,将系统调用的结果写回主从交互区,并在主从交互区填写主核完成标志。
2.根据权利要求1所述的面向异构众核环境的从核系统调用实现方法,其特征在于,主核具备运行操作系统以使得操作系统在主核上运行的能力。
3.根据权利要求2所述的面向异构众核环境的从核系统调用实现方法,其特征在于,所述操作系统是linux操作系统。
4.根据权利要求1或2所述的面向异构众核环境的从核系统调用实现方法,其特征在于,主核支持POSIX系统调用。
5.根据权利要求1或2所述的面向异构众核环境的从核系统调用实现方法,其特征在于,从核不具备运行操作系统的能力。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510830277.1A CN105468448B (zh) | 2015-11-24 | 2015-11-24 | 一种面向异构众核环境的从核系统调用实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510830277.1A CN105468448B (zh) | 2015-11-24 | 2015-11-24 | 一种面向异构众核环境的从核系统调用实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105468448A CN105468448A (zh) | 2016-04-06 |
CN105468448B true CN105468448B (zh) | 2019-01-01 |
Family
ID=55606183
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510830277.1A Active CN105468448B (zh) | 2015-11-24 | 2015-11-24 | 一种面向异构众核环境的从核系统调用实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105468448B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110222007B (zh) * | 2019-06-20 | 2023-11-24 | 山东省计算中心(国家超级计算济南中心) | 一种基于申威众核处理器的加速运行方法 |
CN112306669A (zh) * | 2019-08-02 | 2021-02-02 | 中兴通讯股份有限公司 | 一种基于多核系统的任务处理方法及装置 |
CN112445696B (zh) * | 2019-09-02 | 2022-09-13 | 无锡江南计算技术研究所 | 面向异构众核Dcache纵向一致性的调试方法 |
CN116414424B (zh) * | 2023-06-09 | 2023-09-12 | 建信金融科技有限责任公司 | 热更新方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101025697A (zh) * | 2007-04-05 | 2007-08-29 | 杭州华为三康技术有限公司 | 实现用户配置的方法、系统及主核和从核 |
CN101354693A (zh) * | 2008-09-11 | 2009-01-28 | 重庆邮电大学 | 一种异构多核处理器的核间通信调度系统及方法 |
CN102077181A (zh) * | 2008-04-28 | 2011-05-25 | 惠普开发有限公司 | 用于在多核处理器中和在某些共享存储器多处理器系统中产生并输送处理器间中断的方法和系统 |
CN102446158A (zh) * | 2010-10-12 | 2012-05-09 | 无锡江南计算技术研究所 | 多核处理器及多核处理器组 |
CN102929834A (zh) * | 2012-11-06 | 2013-02-13 | 无锡江南计算技术研究所 | 众核处理器及其核间通信的方法、主核和从核 |
CN104461716A (zh) * | 2014-12-29 | 2015-03-25 | 迈普通信技术股份有限公司 | 一种多核异构系统的访问方法及多核异构系统 |
-
2015
- 2015-11-24 CN CN201510830277.1A patent/CN105468448B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101025697A (zh) * | 2007-04-05 | 2007-08-29 | 杭州华为三康技术有限公司 | 实现用户配置的方法、系统及主核和从核 |
CN102077181A (zh) * | 2008-04-28 | 2011-05-25 | 惠普开发有限公司 | 用于在多核处理器中和在某些共享存储器多处理器系统中产生并输送处理器间中断的方法和系统 |
CN101354693A (zh) * | 2008-09-11 | 2009-01-28 | 重庆邮电大学 | 一种异构多核处理器的核间通信调度系统及方法 |
CN102446158A (zh) * | 2010-10-12 | 2012-05-09 | 无锡江南计算技术研究所 | 多核处理器及多核处理器组 |
CN102929834A (zh) * | 2012-11-06 | 2013-02-13 | 无锡江南计算技术研究所 | 众核处理器及其核间通信的方法、主核和从核 |
CN104461716A (zh) * | 2014-12-29 | 2015-03-25 | 迈普通信技术股份有限公司 | 一种多核异构系统的访问方法及多核异构系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105468448A (zh) | 2016-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105468448B (zh) | 一种面向异构众核环境的从核系统调用实现方法 | |
US10318331B2 (en) | Method and apparatus for live-migrating virtual machines | |
US11221868B2 (en) | Security enhanced hypervisor userspace notifications | |
US9697031B2 (en) | Method for implementing inter-virtual processor interrupt by writing register data in a single write operation to a virtual register | |
EP2881860B1 (en) | Method for implementing an interrupt between virtual processors, related device, and system | |
CN107203465B (zh) | 系统接口测试方法及装置 | |
US20130231912A1 (en) | Method, system, and scheduler for simulating multiple processors in parallel | |
US8938712B2 (en) | Cross-platform virtual machine and method | |
CN102567090A (zh) | 在计算机处理器中创建执行线程的方法和系统 | |
US10176002B2 (en) | Quiesce handling in multithreaded environments | |
US10754796B2 (en) | Efficient user space driver isolation by CPU page table switching | |
JP2017534970A (ja) | 複数のスレッドを実行する方法、システム、およびコンピュータ・プログラム製品、ならびに複数のスレッドの待ち状態を実現する方法、システム、およびコンピュータ・プログラム | |
US9886327B2 (en) | Resource mapping in multi-threaded central processor units | |
US9665424B2 (en) | Recovery improvement for quiesced systems | |
Ma et al. | DVM: A big virtual machine for cloud computing | |
CN111563253A (zh) | 智能合约运行方法、装置、设备及存储介质 | |
Dall | The design, implementation, and evaluation of software and architectural support for ARM virtualization | |
US20160378468A1 (en) | Conversion of boolean conditions | |
US10740099B2 (en) | Instruction to perform a logical operation on conditions and to quantize the boolean result of that operation | |
Ma et al. | DVM: Towards a datacenter-scale virtual machine | |
CN110515622B (zh) | 按钮状态的控制方法、装置、电子设备及存储介质 | |
CN103197959B (zh) | 一种多核cpu的切换方法 | |
Williamson et al. | PySy: a Python package for enhanced concurrent programming | |
KR101134464B1 (ko) | 네트워크 비동기 입출력 방법 및 장치 | |
Spiliopoulou | Concurrent and distributed functional systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |