[发明专利]对动态类型化对象数据的并发访问有效
申请号: | 201480047216.1 | 申请日: | 2014-08-22 |
公开(公告)号: | CN105493042B | 公开(公告)日: | 2019-09-10 |
发明(设计)人: | F·J·皮泽罗 | 申请(专利权)人: | 苹果公司 |
主分类号: | G06F9/448 | 分类号: | G06F9/448;G06F9/455 |
代理公司: | 中国国际贸易促进委员会专利商标事务所 11038 | 代理人: | 宿小猛 |
地址: | 美国加*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 动态 类型 对象 数据 并发 访问 | ||
相关申请的交叉引用
本专利申请涉及并要求于2013年8月30日由FilipPizlo等人提交的名 称为“RUNTIMEACCESSOFDYNAMICOBJECTS”的美国临时专利申请 61/872,386的权益,该专利申请以引用方式全文并入本文。
技术领域
本发明通常涉及针对动态类型化数据的运行时访问。更具体地,本发 明涉及基于动态语言的代码的并发执行中的动态类型化数据共享。
背景技术
动态语言诸如JavaScript、Ruby、Python、Perl和PHP等正日益被认为 是静态语言诸如C和C++的替代。动态语言带来很多益处,诸如程序员生 产率和相对浅的学习曲线。然而,进一步采用包括JavaScript、Ruby、 Python和其他语言的动态语言的障碍是缺少高性能共享存储器并发机制, 诸如在静态语言中明显可用的线程和锁定或libdispatch。由于对象在动态语 言中的工作方式,这一问题被认为是困难的,所以至今还未解决。
先前为解决该问题所作的尝试包括围绕每个对象访问添加锁定机制。 尽管锁定机制可保证期望的并发语义,但是非常慢。锁定和解锁可按照低 于正常堆访问的量级来执行,因此引入过高的开销。
另外,内联高速缓存(IC)通常用于基于JavaScript的代码的高性能具 体实施。典型地,内联高速缓存包括自修改代码。然而,可在多个处理器 上执行的并发自修改代码可能既困难又慢。因此,向用于基于JavaScript的 代码的基于内联高速缓存的具体实施添加并发性可能造成不切实际的昂 贵。
此外,JavaScript作为语言允许在已构造对象之后向那些对象添加元 素。如果基于JavaScript的程序被执行以向对象添加比可被包含在其内联属 性存储装置中的更多的属性,则必须分配单独的外联存储器块以存储其附 加属性。JavaScript阵列主要用于编索引的属性存储。关于对象的编索引属 性的存在总是要求分配外联索引属性存储对象。
因此,用于执行基于动态语言的程序的现有具体实施往往缺乏效率、 并发性和有效优化。
发明内容
从动态编程语言诸如JavaScript生成的代码可包括增强型对象模型以允 许在运行时期间并发执行数据访问。除了对象的类型结构和数据有效载荷 存储属性或字段值之外,索引结构可被引入到表示动态类型化对象的对象 模型。索引结构的元素可作为用于访问对象的间接索引指向对应属性值 处。
在一个实施例中,动态类型化程序代码(例如,实现某一算法)可被 允许通过对象的索引结构经由附加间接索引来对对象的单个属性值并发执 行每次访问操作而不会产生竞争状况。针对对象的单个属性值的每次访问 (例如,加载/存储)操作可要求多个指令操作和/或原子操作。在并发执行 期间,这些指令可被允许以非同步方式交织。
在其他实施例中,用于访问单个线程中的动态类型化对象的内联高速 缓存初始化可被卸载到解译器而不会造成不必要的同步开销。可提供线程 偏置机制来检测代码块是否在单个线程中执行。此外,可减少经由编译器 诸如基线JIT编译器执行的内联高速缓存初始化的次数,以提高处理性能。
代码块可为编译单元、一部分源代码、一个或多个源代码文件或其他 可适用代码语句集(例如,代码规范的连续部分)。编译单元可指代被编 译为并且被认为是一个逻辑单元的源代码。编译单元可包括一个或多个完 整的源代码文件,但是还可为专用代码部分或文件的所选择的部分。编译 单元内的声明和定义可确定函数和数据对象的范围。
在其他实施例中,由多个线程中共享的代码块中的内联高速缓存初始 化可被延迟或定时以减少所要求的处理器同步(例如,光点)的出现,以 利用初始化来更新可执行代码。例如,每个线程可在运行时期间将初始化 代码存储在缓冲器中。光点定时器(例如,经由特定线程)可使得所有内 联高速缓存周期性地(例如,每10ms)初始化(例如,更新到运行时), 只要缓冲器对于所要求的处理器同步来说非空即可。因此,可减少针对内 联高速缓存初始化所需的昂贵或缓慢的同步操作的调用次数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苹果公司,未经苹果公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201480047216.1/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置