CN104508626B - 可执行代码数据的无锁流传送的方法和系统 - Google Patents
可执行代码数据的无锁流传送的方法和系统 Download PDFInfo
- Publication number
- CN104508626B CN104508626B CN201380039991.8A CN201380039991A CN104508626B CN 104508626 B CN104508626 B CN 104508626B CN 201380039991 A CN201380039991 A CN 201380039991A CN 104508626 B CN104508626 B CN 104508626B
- Authority
- CN
- China
- Prior art keywords
- command code
- memory
- written
- command
- computer
- 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
- 238000000034 method Methods 0.000 title claims description 30
- 230000015654 memory Effects 0.000 claims abstract description 73
- 238000003860 storage Methods 0.000 claims description 19
- 230000008569 process Effects 0.000 description 14
- 238000013500 data storage Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 2
- 238000000354 decomposition reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000011229 interlayer Substances 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
分解器接收指令并将它们分解成多个分开的操作码。分解器创建标识每一个操作码之间的边界的表。通过原子地写存储器的标准块来将每一个操作码以逐操作码的方式写至存储器。当需要时将调试断点操作码追加到操作码以创建完整的存储器块。存储器块可以长达例如三十二位或者六十四位。长操作码可重叠两个或更多的存储器块。可将调试断点操作码追加到长操作码的第二部分以创建完整的存储器块。流故障拦截器标识何时所请求的数据页不可用并取回该数据页。
Description
技术领域
本发明涉及一种计算机系统和计算机实现的方法,尤其涉及可执行代码数据的无锁流传送的方法和系统。
背景技术
当同时收到读和写数据的命令时发生竞争状况。这也可以在例如在写线程将数据递送至存储器的同时一线程正在执行来自存储器的可执行数据分组的时候发生。结果可能是计算机崩溃、程序关闭、读/写错误或其他问题。在一个解决方案中,在等待写线程提供数据的同时可将执行线程挂起。然而,挂起线程可导致相关进程的性能问题。举例而言,对于进程可以有数十或数百个线程在运行,其中只有一个或几个线程访问该数据,但每一次流故障发生时所有的线程都必须被挂起以等待数据递送。
发明内容
提供本概述以便以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
各实施例通过分解可执行代码并对于对存储器页的写排序来允许可执行代码以无锁的方式递送。这允许可执行代码贯穿流数据的递送而保持在一致的状态中。因为存储器处于一致的状态,所以当字节代码被写进存储器时其他线程可继续执行。这允许更大的可扩展性和性能。
进一步的实施例启用用户模式中可执行代码数据的流传送,而无需挂起整个进程或使用内核模式组件。
附图说明
为了进一步阐明本发明的各实施例的以上及其他优点和特征,将参考附图来呈现对本发明的各实施例的更具体的描述。应当理解,这些附图只描绘本发明的典型实施例,并且因此将不被认为是对其范围的限制。本发明将通过使用附图用附加特征和细节来描述和解释,在附图中:
图1A-D示出了根据一个实施例的存储器写随时间的排序。
图2示出了根据一个实施例用于流传送无锁可执行代码数据的系统。
图3是根据一个实施例用于流传送可执行代码数据的过程或方法的流程图。
图4示出了提供可执行代码数据的无锁流传送的适合的计算和网络环境的示例。
具体实施方式
此处描述的无锁解决方案利用现代处理器的两个特征。首先,处理器提供原子三十二位或六十四位的存储器访问写。这保证了处理器将在存储器中看到所有的三十二位或六十四位。第二,处理器有一个字节的调试断点异常操作码(opcode)。此调试断点操作码允许处理器重试从存储器读和执行操作码而不导致调用线程失败。
在一个实施例中,在指令对处理器可用之前在存储器中分解代码。此分解允许创建包括数个单独的三十二位或六十四位写的存储器写的有序列表。此分解和分析可以在客户端或者服务器上执行。在客户端上执行此操作以增加处理器周期的代价节省网络传输,而在服务器上执行此操作意味着更大的网络传输但要求客户端节点处的较少处理器操作。
当存储器页被分配时,整个页用一个字节的异常代码来写。流故障处理器保持已经写过或者无效的页和位置的列表。
操作码使用从页末开始的分解的三十二位或六十四位的块写至存储器。替换性地,可以分析汇编树以标识叶操作码,叶操作码是由其他操作码调用的操作码。叶操作码可通过遍历操作码执行调用图来标识。这些叶操作码可首先被写至存储器。
对于三十二位或更小(或者在其他实施例中是六十四位或更小)的操作码,整个操作码被写至存储器使得处理器将成功地执行指令。如果操作码大于三十二位(或者在其他实施例中是大于六十四位),那么首先写操作码的“末尾”。通过首先写操作码的末尾,如果处理器在操作码仍在被写的时候执行指令,那么处理器将首先执行调试断点操作码。这允许流故障处理器完成写操作码并使得处理器可以重试该操作码。如果三十二位(或者六十四位)写跨多于一个操作码,那么调试断点操作码被编写成允许重试。如果三十二位(或者六十四位)写已经被写了,那么写入之前的值,在这种情况下操作码保持有效。
通过写入由调试断点分隔的经分解的操作码,处理器将或者遇到无效的调试断点或者遇到有效的可执行代码。若应用程序执行无效的调试断点,那么如此处所述的流故障拦截器将在异常被递送到应用程序之前拦截该异常。流故障拦截器等待直到存储器有效,然后重试操作码。流故障拦截器可以使用页和被写的操作码的表来区分作为流故障的一部分而发生、必须被重试的断点或者由调试器或应用程序使用、必须被传回应用程序的断点。在有效可执行代码的情况中,应用程序成功地执行代码。结果是,流故障处理器不需要在递送流故障的结果时挂起进程中的所有线程。
图1A-D示出了根据一个实施例的存储器写随时间的排序。在此示例中使用的程序代码包括指令:0xAB 0xE9 0x00 0xFE 0x70 0x08…。分解器将此代码拆分成以下操作码:
(1):0xAB
(2):0xE9 0x00 0xFE 0x70 0x08
(3):....
第一个操作码长达一个字节,第二个操作码长达五个字节,且不同长度的其它操作码是以类似的方式标识的。
存储器101包括数个三十二位的块102-104。在其他实施例中,存储器块可以是六十四位或某一其他大小。图1A示出了存储器101全部用一个字节的调试断点操作码0xCC填充的原始状态。如果线程在此时从存储器101读取指令,则调试断点操作码将导致流处理器试图将代码加载到存储器101于是线程将重试读取代码。
在图1B中,第一个操作码0xAB已经被写至三十二位的块102b。第一个、一个字节长的操作码0xAB用替代第一个0xCC的原子写来写入到存储器101中。写操作需要写三十二位的数据。因为指令在写入存储器之前已经被分解了,写操作跟踪正在写什么字节并知道用0xCC填充块102b剩下的二十四个位以填满整个三十二位的块。如果处理器执行第一个指令0xAB,它将会成功。但是,如果处理器试图在此时执行第二个指令,则调试断点0xCC将被读取并且流故障重试机制将接管。
现在流故障处理器需要写第二个操作码(即,0xE9 0x00 0xFE 0X70 0x08)。流故障处理器知道前一指令(0xAB)被写了并且知道块102b-104b是怎样被写的。流故障处理器也知道下一操作码是多长和它需要怎样被写至存储器101。特别是,流故障处理器知道第二个、五个字节长的操作码将在操作码0xAB之后被写至块102b和103b。流故障处理器也判断第二个操作码将不能放进单个三十二位块102b的剩余空间中。因而,第二个操作码必须在存储器块102b和103b之间拆分。
如图1C中所示,在写操作码的第一部分之前,操作码的第二部分(即,0x70 0x08)以调试断点0x00补充以填满三十二位而写至块103c。通过首先写操作码的第二部分,如果处理器执行0xAB块之后的操作码,那么处理器将招致调试故障(0xCC)并将不会试图执行垃圾。
在操作码的第二部分被写至块103c之后,然后第一部分(即,0xE9 0x000xFE)可以被写至存储器101。如图1D中所示,此第一部分随第一操作码0xAB写入它之前在块102d中所分配的位置。此时,处理器将能够成功地执行两个指令。将指令写到存储器101的这个过程将被逐操作码地应用直到整个页面常驻。
图2示出了根据一个实施例用于流传送无锁可执行代码数据的系统。在操作系统201上运行的应用程序试图从存储器读数据页202。当调用了可执行存储器的非常驻页时,这触发操作系统异常203,该异常通知操作系统201说这个调用失败了。在应用程序看到故障之前,操作系统201向流故障拦截器204发送读失败返回码。流故障拦截器204在它的数据库中查找该页并判断它需要取回该页。流故障拦截器204进行网络调用以从例如网络服务器205得到页面,并改变该页的存储器访问使得它可以将数据写至数据页202。
在已有的系统中,流故障拦截器204将需要挂起请求数据的进程。如果进程没有被挂起,那么另一个线程可以如同页202上的数据被写入存储器一样地执行该数据,并且当进程试图执行部分数据时将崩溃。在页202被写至存储器之后,进程可以恢复,流故障拦截器将操作系统异常改为“成功”且应用程序继续执行。
在已有的系统中,挂起整个进程的这个步骤是必要的,因为改变对数据页202的访问并将数据写至数据页202不能在单个步骤中完成。这意味着当服务于流故障时,进程中的两个线程不可能在执行。
本文通过添加分解器206和已写/未写页跟踪器207改进了已有的系统。分解器206负责取得返回的字节代码并分解它。分解器206返回包含每一个操作码的边界的偏移列表。如图1的示例中所注意到的,每一个操作可以长一个或多个字节。已写/未写页跟踪器207包含由分解器206生成的偏移列表和已经提交了的那些偏移的列表。
当使用分解器206和已写/未写页跟踪器207的时候进程不需要被挂起。相反,在将所请求的代码从服务器205返回给流故障拦截器204之后,分解器被调用以生成偏移地图。然后偏移地图由流故障拦截器204存储,该流故障拦截器开始以如上所述的逐操作码的方式将操作码写至数据页202。流故障拦截器204咨询此偏移地图以确定每一个操作码的边界。流故障拦截器204按照任何合适的从操作码列表的开头或末尾开始的排序将操作码写至数据页202。
如果发生任何争用诸如处理器执行部分填充的指令时,那么操作系统故障机制203将被触发。这将导致流故障拦截器204被操作系统201调用。流故障拦截器204咨询已写/未写页跟踪器207并或者将操作码本身写至数据页202或者等待直到另一个线程完成了写数据。然后流故障拦截器204重试异常。
图3是根据一个实施例用于流传送可执行代码数据的过程或方法的流程图。在步骤301,处理器接收包括多个操作码的指令。每一个操作码都可包括一个或多个字节的数据。在步骤302,使用分解器以将指令分解成分开的操作码。在步骤303,创建标识每一个操作码之间的边界的表。表可存储在例如已写/未写页跟踪器中。在步骤304,通过原子地写存储器的标准块来将每一个操作码以逐操作码的方式写至存储器。操作码可由例如流故障拦截器写至存储器。
在一些实施例中,可将调试断点操作码写至所有存储器位置以初始化存储器。当操作码被写至存储器时,可将调试断点操作码追加到操作码以创建完整的存储器标准块。存储器标准块可以长达例如三十二位或者六十四位。
当长操作码将与两个或多个存储器标准块重叠时,可将它分成两个部分。将长操作码的第二部分写至第二存储器块,然后将长操作码的第一部分写至第一存储器块。以这种方式写长操作码将保证,如果在写完整个操作码之前读存储器位置,将遇到调试断点。可将调试断点操作码追加到长操作码的第二部分以创建完整的存储器标准块。可将之前的操作码与长操作码的第一部分一起写至第一存储器块。
应理解,图3中所示的过程的步骤301-305可同时地和/或顺序地执行。还应理解,每一个步骤都可以任何次序执行且可被执行一次或重复地执行。
图4输出了适合的计算和网络环境400的示例,在其上可实现图1-3的示例以提供可执行代码数据的无锁流传送。计算系统环境400仅是适合的计算环境的一个示例,并不旨在建议对本发明的使用或功能性的范围的任何限制。本发明是可以多种其他通用或专门计算系统环境或配置操作。适合在本发明中使用的公知的计算系统、环境和/或配置的示例包括,但不限于,个人计算机、服务器计算机、手持或膝上型设备、平板设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子产品、网络PC、小型机、大型机、包含上述系统或设备中的任一个的分布式计算机环境等。
本发明可在诸如程序模块等由计算机执行的计算机可执行指令的通用上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。本发明也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。在分布式计算环境中,程序模块可以位于包括存储器存储设备在内的本地和/或远程计算机存储介质中。
参考图4,用于实现本发明的各方面的示例性系统可包括计算机400形式的通用计算设备。组件可包括但不限于,各种硬件组件诸如处理单元401、数据存储402诸如系统存储器、和将包括数据存储402的各种系统组件耦合到处理单元401的系统总线403。系统总线403可以是若干类型的总线结构中的任一种,包括使用各种总线体系结构中的任一种的存储器总线或存储器控制器、外围总线、以及局部总线。作为示例而非限制,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线,以及也称为夹层(Mezzanine)总线的外围部件互连(PCI)总线。
计算机400通常包括各种计算机可读介质404。计算机可读介质404可以是能由计算机400访问的任何可用介质,并包含易失性和非易失性介质以及可移动、不可移动介质,但不包括所传播的信号。作为示例而非限制,计算机可读介质404可包括计算机存储介质和通信介质。计算机存储介质包括以存储诸如计算机可读的指令、数据结构、程序模块或其他数据之类的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不仅限于,RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁存储设备,或可以用来存储所需信息并可以被计算机400访问的任何其他介质。通信介质通常以诸如载波或其他传输机构之类的已调制数据信号来具体化计算机可读指令、数据结构、程序模块或其他数据,并且包括任何信息传送介质。术语“已调制数据信号”是指具有以在信号中编码信息的方式被设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。上面各项中的任何项的组合也包括在计算机可读介质的范围内。计算机可读介质可体现为计算机程序产品,诸如存储在计算机存储介质上的软件。
数据存储或系统存储器402包括易失性和/或非易失性存储器形式的计算机存储介质,诸如只读存储器(ROM)和随机存取存储器(RAM)。数据存储402或计算机可读介质404可用来存储数据页、操作码边界列表、操作码等。基本输入/输出系统(BIOS)通常存储在ROM中,包含了诸如在启动过程中帮助在计算机400内的元件之间传输信息的基本例程。RAM通常包含处理单元401可立即访问和/或当前正在操作的数据和/或程序模块。作为示例而非限制性,数据存储402保存操作系统、应用程序、及其他程序模块和程序数据。运行在处理单元401上的操作系统可支持诸如操作系统异常203、流故障拦截器204、分解器206和/或已写/未写页跟踪器207的功能(图2)。
数据存储402也可包括其他可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,数据存储402可以是对不可移动、非易失性磁介质进行读写的硬盘驱动器、对可移动、非易失性磁盘进行读写的磁盘驱动器、以及对诸如CD ROM或其它光学介质等可移动、非易失性光盘进行读写的光盘驱动器。可在示例性操作环境中使用的其他可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。以上描述并在图4中示出的驱动器及其相关联的计算机存储介质为计算机400提供了对计算机可读指令、数据结构、程序模块和其他数据的存储。
用户可通过诸如平板、电子数字化仪、话筒、键盘和/或定点设备(通常指的是鼠标、跟踪球或触摸垫)等用户接口405或其他输入设备输入命令和信息。其他输入设备可包括操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等等。附加地,语音输入、使用手或手指的姿势输入、或其他自然用户接口(NUI)页可与合适的输入设备诸如话筒、相机、平板、触摸板、手套或其他传感器一起使用。这些及其他输入设备常常通过耦合到系统总线403的用户接口405连接至处理单元401,但也可通过其他接口和总线结构,诸如并行端口、游戏端口或通用串行总线(USB)端口来进行连接。监视器406或其他类型的显示设备也经由诸如视频接口的接口连接至系统总线403。监视器406也可以与触摸屏面板等集成。注意到监视器和/或触摸屏面板可以在物理上耦合至其中包括计算设备400的外壳,诸如在平板型个人计算机中。此外,诸如计算设备400的计算机页可包括其他外围输出设备,诸如扬声器和打印机,它们可以通过输出外围接口等连接。
计算机400可使用至一个或多个诸如远程计算机的远程设备的网络接口407在网络化或云计算的环境中操作。远程计算机可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点,并且通常包括上面相对于计算机400所述的许多或全部元件。图4中所示的网络接口包括一个或多个局域网(LAN)和一个或多个广域网(WAN),但也可以包括其他网络。此类联网环境在办公室、企业范围的计算机网络、内联网和因特网中是常见的。
当用于网络化或云计算的环境中时,计算机400可通过网络接口或适配器407连接至公共或私有网络。网络接口407可提供至诸如网络服务器205(图2)的远程设备的连接。在一些实施例中,用于通过网络建立通信的调制解调器或其他装置。调制解调器可以是内置的或外置的,可经由网络接口407或其他适当的机制连接至系统总线403。诸如包括接口和天线的无线联网组件可通过诸如接入点或对等计算机等合适的设备耦合到网络。在联网环境中,相对于计算机400所示的程序模块或其部分可被存储在远程存储器存储设备中。可以理解,所示的网络连接是示例性的,也可以使用在计算机之间建立通信链路的其他手段。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。更确切而言,上述具体特征和动作是作为实现权利要求的示例形式公开的。
Claims (9)
1.一种计算机实现的方法,包括:
接收包括多个操作码的指令,每一个操作码包括一个或多个字节的数据;
将所述指令分解成分开的操作码;
创建标识每一个操作码之间的边界的表;
将调试断点操作码追加到操作码以创建完整的存储器标准块;以及
通过原子地写存储器的标准块将每一个操作码以逐操作码的方式写至存储器。
2.如权利要求1所述的计算机实现的方法,其特征在于,还包括:
将调试断点操作码写至所有存储器位置以初始化所述存储器。
3.如权利要求1所述的计算机实现的方法,其特征在于,所述存储器标准块长达三十二位或六十四位。
4.如权利要求1所述的计算机实现的方法,其特征在于,还包括:
标识何时长操作码将重叠两个或更多的存储器标准块;
将所述长操作码的第二部分写至第二存储器块;以及
将所述长操作码的第一部分写至第一存储器块。
5.如权利要求4所述的计算机实现的方法,其特征在于,还包括:
将调试断点操作码追加到所述长操作码的第二部分以创建完整的存储器标准块。
6.如权利要求5所述的计算机实现的方法,其特征在于,还包括:
将之前的操作码和所述长操作码的第一部分写至第一存储器块。
7.一种计算机系统,包括:
处理器;
系统存储器;
其上存储有计算机可执行指令的一个或多个计算机可读存储介质,所述计算机可执行指令在由所述一个或多个处理器执行时使得所述处理器执行一种用于将可执行代码流传送的方法,所述处理器操作以:
接收包括多个操作码的指令,每一个操作码包括一个或多个字节的数据;
将所述指令分解成分开的操作码;
创建标识每一个操作码之间的边界的表;
通过原子地写存储器的标准块将每一个操作码以逐操作码的方式写至存储器;以及
将调试断点操作码追加到操作码以创建完整的存储器标准块。
8.如权利要求7所述的计算机系统,其特征在于,所述处理器还操作以:
将调试断点操作码写至所有存储器位置以初始化所述存储器。
9.如权利要求7所述的计算机系统,其特征在于,所述处理器还操作以:
标识何时长操作码将重叠两个或更多的存储器标准块;
将所述长操作码的第二部分写至第二存储器块;以及
将所述长操作码的第一部分写至第一存储器块。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/560,216 | 2012-07-27 | ||
US13/560,216 US9436474B2 (en) | 2012-07-27 | 2012-07-27 | Lock free streaming of executable code data |
PCT/US2013/052153 WO2014018812A1 (en) | 2012-07-27 | 2013-07-26 | Lock free streaming of executable code data |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104508626A CN104508626A (zh) | 2015-04-08 |
CN104508626B true CN104508626B (zh) | 2017-06-13 |
Family
ID=48985821
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380039991.8A Active CN104508626B (zh) | 2012-07-27 | 2013-07-26 | 可执行代码数据的无锁流传送的方法和系统 |
Country Status (11)
Country | Link |
---|---|
US (2) | US9436474B2 (zh) |
EP (1) | EP2877918B1 (zh) |
JP (1) | JP6328632B2 (zh) |
KR (1) | KR102042304B1 (zh) |
CN (1) | CN104508626B (zh) |
AU (2) | AU2013295686B2 (zh) |
BR (1) | BR112015001476B1 (zh) |
CA (1) | CA2878558C (zh) |
MX (1) | MX347111B (zh) |
RU (1) | RU2639235C2 (zh) |
WO (1) | WO2014018812A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9747189B2 (en) | 2015-11-12 | 2017-08-29 | International Business Machines Corporation | Breakpoint for predicted tuple processing time in a streaming environment |
CN107797821B (zh) * | 2016-09-05 | 2021-10-08 | 上海宝存信息科技有限公司 | 重试读取方法以及使用该方法的装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6253309B1 (en) * | 1998-09-21 | 2001-06-26 | Advanced Micro Devices, Inc. | Forcing regularity into a CISC instruction set by padding instructions |
CN101233495A (zh) * | 2005-06-07 | 2008-07-30 | 爱特梅尔公司 | 用于在具有快闪程序存储器的微控制器中提供程序断点的机制 |
US7581082B2 (en) * | 2005-05-13 | 2009-08-25 | Texas Instruments Incorporated | Software source transfer selects instruction word sizes |
CN101853148A (zh) * | 2009-05-19 | 2010-10-06 | 威盛电子股份有限公司 | 适用于微处理器的装置及方法 |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5768575A (en) * | 1989-02-24 | 1998-06-16 | Advanced Micro Devices, Inc. | Semi-Autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for sepculative and out-of-order execution of complex instructions |
JPH0395629A (ja) | 1989-09-08 | 1991-04-22 | Fujitsu Ltd | データ処理装置 |
JPH03216734A (ja) * | 1990-01-22 | 1991-09-24 | Hitachi Micro Comput Eng Ltd | データ処理方法及び中央処理装置 |
JPH05312838A (ja) * | 1992-05-12 | 1993-11-26 | Iwatsu Electric Co Ltd | ロジック・アナライザ |
GB9412434D0 (en) * | 1994-06-21 | 1994-08-10 | Inmos Ltd | Computer instruction compression |
US6009508A (en) * | 1994-06-21 | 1999-12-28 | Sgs-Thomson Microelectronics Limited | System and method for addressing plurality of data values with a single address in a multi-value store on FIFO basis |
CN101211255B (zh) * | 1994-12-02 | 2012-07-04 | 英特尔公司 | 对复合操作数进行压缩操作的处理器、设备和计算系统 |
US6212574B1 (en) | 1997-04-04 | 2001-04-03 | Microsoft Corporation | User mode proxy of kernel mode operations in a computer operating system |
US5946484A (en) * | 1997-05-08 | 1999-08-31 | The Source Recovery Company, Llc | Method of recovering source code from object code |
US6061772A (en) * | 1997-06-30 | 2000-05-09 | Sun Microsystems, Inc. | Split write data processing mechanism for memory controllers utilizing inactive periods during write data processing for other transactions |
US6282698B1 (en) * | 1998-02-09 | 2001-08-28 | Lucent Technologies Inc. | Detecting similarities in Java sources from bytecodes |
US6119115A (en) | 1998-03-12 | 2000-09-12 | Microsoft Corporation | Method and computer program product for reducing lock contention in a multiple instruction execution stream processing environment |
EP0955578A1 (en) * | 1998-05-04 | 1999-11-10 | International Business Machines Corporation | Method and device for carrying out a function assigned to an instruction code |
US6077312A (en) * | 1998-05-06 | 2000-06-20 | International Business Machines Corporation | Apparatus, program product and method of debugging utilizing a context sensitive breakpoint |
US6397273B2 (en) | 1998-12-18 | 2002-05-28 | Emc Corporation | System having an enhanced parity mechanism in a data assembler/disassembler for use in a pipeline of a host-storage system interface to global memory |
US6408382B1 (en) * | 1999-10-21 | 2002-06-18 | Bops, Inc. | Methods and apparatus for abbreviated instruction sets adaptable to configurable processor architecture |
US20030023960A1 (en) * | 2001-07-25 | 2003-01-30 | Shoab Khan | Microprocessor instruction format using combination opcodes and destination prefixes |
US7444500B1 (en) | 2000-08-14 | 2008-10-28 | General Software, Inc. | Method for executing a 32-bit flat address program during a system management mode interrupt |
US6708326B1 (en) * | 2000-11-10 | 2004-03-16 | International Business Machines Corporation | Method, system and program product comprising breakpoint handling mechanism for debugging and/or monitoring a computer instruction sequence |
US20040059641A1 (en) * | 2002-06-25 | 2004-03-25 | Lucas Brown | System and method for creating user selected customized digital data compilations |
US7917734B2 (en) | 2003-06-30 | 2011-03-29 | Intel Corporation | Determining length of instruction with multiple byte escape code based on information from other than opcode byte |
US20070006189A1 (en) * | 2005-06-30 | 2007-01-04 | Intel Corporation | Apparatus, system, and method of detecting modification in a self modifying code |
US7761864B2 (en) * | 2005-08-09 | 2010-07-20 | Intermec Ip Corp. | Method, apparatus and article to load new instructions on processor based devices, for example, automatic data collection devices |
US20070079177A1 (en) * | 2005-09-30 | 2007-04-05 | Charles Spirakis | Process monitoring and diagnosis apparatus, systems, and methods |
US7703088B2 (en) * | 2005-09-30 | 2010-04-20 | Intel Corporation | Compressing “warm” code in a dynamic binary translation environment |
US20070168736A1 (en) * | 2005-12-19 | 2007-07-19 | Ottavi Robert P | Breakpoint groups |
US8584109B2 (en) * | 2006-10-27 | 2013-11-12 | Microsoft Corporation | Virtualization for diversified tamper resistance |
US8037459B2 (en) * | 2007-07-31 | 2011-10-11 | International Business Machines Corporation | Recovery from nested exceptions in an instrumentation routine |
US8185783B2 (en) | 2007-11-22 | 2012-05-22 | Microsoft Corporation | Split user-mode/kernel-mode device driver architecture |
CN102077195A (zh) * | 2008-05-08 | 2011-05-25 | Mips技术公司 | 具有紧凑指令集架构的微处理器 |
US8423961B2 (en) | 2008-06-06 | 2013-04-16 | Microsoft Corporation | Simulating operations through out-of-process execution |
US8103912B2 (en) * | 2008-09-07 | 2012-01-24 | EADS North America, Inc. | Sequencer and test system including the sequencer |
KR101581001B1 (ko) * | 2009-03-30 | 2015-12-30 | 삼성전자주식회사 | 프로그램의 동적 분석 방법 및 그 장치 |
US9274796B2 (en) * | 2009-05-11 | 2016-03-01 | Arm Finance Overseas Limited | Variable register and immediate field encoding in an instruction set architecture |
US20120079459A1 (en) * | 2010-09-29 | 2012-03-29 | International Business Machines Corporation | Tracing multiple threads via breakpoints |
US9176738B2 (en) * | 2011-01-12 | 2015-11-03 | Advanced Micro Devices, Inc. | Method and apparatus for fast decoding and enhancing execution speed of an instruction |
US9053233B2 (en) * | 2011-08-15 | 2015-06-09 | Freescale Semiconductor, Inc. | Method and device for controlling debug event resources |
GB2501299A (en) * | 2012-04-19 | 2013-10-23 | Ibm | Analysing computer program instructions to determine if an instruction can be replaced with a trap or break point. |
US8990627B2 (en) * | 2012-05-23 | 2015-03-24 | Red Hat, Inc. | Leveraging page fault and page reclaim capabilities in debugging |
US9342284B2 (en) * | 2013-09-27 | 2016-05-17 | Intel Corporation | Optimization of instructions to reduce memory access violations |
US9619346B2 (en) * | 2013-10-31 | 2017-04-11 | Assured Information Security, Inc. | Virtual machine introspection facilities |
-
2012
- 2012-07-27 US US13/560,216 patent/US9436474B2/en active Active
-
2013
- 2013-07-26 EP EP13748402.8A patent/EP2877918B1/en active Active
- 2013-07-26 MX MX2015001127A patent/MX347111B/es active IP Right Grant
- 2013-07-26 WO PCT/US2013/052153 patent/WO2014018812A1/en active Application Filing
- 2013-07-26 CN CN201380039991.8A patent/CN104508626B/zh active Active
- 2013-07-26 RU RU2015102341A patent/RU2639235C2/ru active
- 2013-07-26 AU AU2013295686A patent/AU2013295686B2/en active Active
- 2013-07-26 CA CA2878558A patent/CA2878558C/en active Active
- 2013-07-26 KR KR1020157002060A patent/KR102042304B1/ko active IP Right Grant
- 2013-07-26 BR BR112015001476-3A patent/BR112015001476B1/pt active IP Right Grant
- 2013-07-26 JP JP2015524457A patent/JP6328632B2/ja active Active
-
2016
- 2016-09-06 US US15/257,794 patent/US9841976B2/en active Active
-
2018
- 2018-07-13 AU AU2018205196A patent/AU2018205196B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6253309B1 (en) * | 1998-09-21 | 2001-06-26 | Advanced Micro Devices, Inc. | Forcing regularity into a CISC instruction set by padding instructions |
US7581082B2 (en) * | 2005-05-13 | 2009-08-25 | Texas Instruments Incorporated | Software source transfer selects instruction word sizes |
CN101233495A (zh) * | 2005-06-07 | 2008-07-30 | 爱特梅尔公司 | 用于在具有快闪程序存储器的微控制器中提供程序断点的机制 |
CN101853148A (zh) * | 2009-05-19 | 2010-10-06 | 威盛电子股份有限公司 | 适用于微处理器的装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2877918B1 (en) | 2022-02-16 |
CA2878558C (en) | 2020-11-03 |
WO2014018812A1 (en) | 2014-01-30 |
AU2018205196A1 (en) | 2018-08-02 |
US20160371083A1 (en) | 2016-12-22 |
KR102042304B1 (ko) | 2019-11-07 |
AU2013295686A1 (en) | 2015-01-29 |
JP2015524591A (ja) | 2015-08-24 |
CA2878558A1 (en) | 2014-01-30 |
AU2018205196B2 (en) | 2019-07-25 |
BR112015001476B1 (pt) | 2022-06-28 |
RU2639235C2 (ru) | 2017-12-20 |
JP6328632B2 (ja) | 2018-05-23 |
MX2015001127A (es) | 2015-04-08 |
EP2877918A1 (en) | 2015-06-03 |
AU2013295686B2 (en) | 2018-04-19 |
RU2015102341A (ru) | 2016-08-10 |
US9436474B2 (en) | 2016-09-06 |
US20140032883A1 (en) | 2014-01-30 |
KR20150040277A (ko) | 2015-04-14 |
US9841976B2 (en) | 2017-12-12 |
BR112015001476A2 (pt) | 2017-07-04 |
MX347111B (es) | 2017-04-12 |
CN104508626A (zh) | 2015-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2019153544A1 (zh) | 注解后端校验方法、装置、计算机设备及存储介质 | |
US7975260B1 (en) | Method of direct access and manipulation of debuggee memory from debugger | |
JPH09500466A (ja) | オブジェクト指向ホスト・システム | |
TW200839513A (en) | Memory consistency protection in a multiprocessor computing system | |
US20150347263A1 (en) | Function-level dynamic instrumentation | |
EP2972881B1 (en) | Diagnostics of state transitions | |
US8819640B2 (en) | Establishing cloud debug breakpoints assigned to users | |
US10599541B2 (en) | Efficient breakpoint detection via caches | |
CN103678506B (zh) | 在浏览器中加载应用程序快捷方式的方法、装置和浏览器 | |
WO2011131845A1 (en) | Monitoring writes using thread-local write barrier buffers and soft synchronization | |
CN104866443A (zh) | 可中断存储独占 | |
US20140156959A1 (en) | Concurrent array-based queue | |
Guo et al. | Minimum viable device drivers for ARM TrustZone | |
CN104508626B (zh) | 可执行代码数据的无锁流传送的方法和系统 | |
CN112580086B (zh) | 配置文件的访问保护方法、装置、设备以及存储介质 | |
US10990439B1 (en) | Tracing task execution across services in microkernel-based operating systems | |
Jones | Anatomy of the Linux kernel | |
Russinovich | Inside windows server 2008 kernel changes | |
Allen et al. | Introducing SQLite | |
Radovici et al. | The Tock System Architecture | |
CN114064050A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
Altekar et al. | Automating the debugging of datacenter applications with ADDA | |
De Palma¹ et al. | Artifacts EAPLS EAPLS Available Evaluated Artifacts V1. 1 Functional V1. 1 An OpenWhisk Extension for Topology-Aware Allocation Priority Policies |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20171023 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |
|
TR01 | Transfer of patent right |