Describes metadata processing techniques that can be used to encode any number of security policies for code running on a processor. Metadata can be added to every word in the system and can work in parallel with data streams to implement metadata processing units of any policy set. In one aspect, metadata can be characterized as unrestricted and software programmable to be applied to various metadata processing strategies. Technologies and strategies can be used for a variety of purposes, including security, security and synchronization. In addition, aspects and techniques of metadata processing in implementations based on RISC_V architecture are described.
【技术实现步骤摘要】
【国外来华专利技术】用于元数据处理的技术相关申请的交叉引用本申请要求于2016年5月31日提交的美国申请No.15/168,689的优先权,该美国申请No.15/168,689要求于2015年12月17日提交的美国临时申请序号62/268,639,“SOFTWAREDEFINEDMETADATAPROCESSING”和于2015年12月21日提交的美国临时申请序号62/270,187,“SOFTWAREDEFINEDMETADATAPROCESSING”的优先权,将其全部通过引用包括于此。
技术介绍
本申请总的来说关于数据处理,且更具体地,涉及用于元数据处理的可编程单元。当今的计算机系统非常难以保护。例如,现有的处理器架构允许违反较高级抽象(abstraction)的比如缓存溢出、指针伪造等各种行为。关闭编程语言和硬件之间的间隙可能留给软件,而推行严密抽象的成本通常认为过高。一些近来的努力已经表明在执行期间传播(propagate)元数据以推行(enforce)在安全性违规(violation)和恶意攻击发生时抓住它们的策略(policy)的价值。这些策略可以以软件推行,但是典型地导致高的 ...
【技术保护点】
1.一种处理指令的方法,包括:对于元数据处理,接收具有关联的元数据标记的当前指令,所述元数据处理在与包括当前指令的代码执行域相隔离的元数据处理域中执行;在元数据处理域中和根据元数据标记和当前指令,确定规则是否存在于用于当前指令的规则高速缓存中,所述规则高速缓存包括关于由所述元数据处理使用以定义允许的操作的元数据的规则;和响应于确定没有规则存在于用于当前指令的规则高速缓存中,在元数据处理域中执行规则高速缓存未命中处理,包括:确定是否允许当前指令的执行;响应于确定允许在代码执行域中执行当前指令,生成用于当前指令的新规则;写入到寄存器;和响应于写入到寄存器,将新规则插入到规则高速缓存中。
【技术特征摘要】
【国外来华专利技术】2015.12.17 US 62/268,639;2015.12.21 US 62/270,187;1.一种处理指令的方法,包括:对于元数据处理,接收具有关联的元数据标记的当前指令,所述元数据处理在与包括当前指令的代码执行域相隔离的元数据处理域中执行;在元数据处理域中和根据元数据标记和当前指令,确定规则是否存在于用于当前指令的规则高速缓存中,所述规则高速缓存包括关于由所述元数据处理使用以定义允许的操作的元数据的规则;和响应于确定没有规则存在于用于当前指令的规则高速缓存中,在元数据处理域中执行规则高速缓存未命中处理,包括:确定是否允许当前指令的执行;响应于确定允许在代码执行域中执行当前指令,生成用于当前指令的新规则;写入到寄存器;和响应于写入到寄存器,将新规则插入到规则高速缓存中。2.如权利要求1所述的方法,其中,用于选择当前指令的规则的第一元数据存储在由元数据处理使用的多个控制状态寄存器的第一部分中,且其中,多个控制状态寄存器的第一部分用来将用于当前指令的多个元数据标记传递到元数据处理域,其中,所述多个元数据标记用作元数据处理域中的数据。3.如权利要求2所述的方法,其中,所述寄存器是由元数据处理使用的多个控制状态寄存器的第一控制状态寄存器,且其中,多个控制状态寄存器的第一部分用于将多个元数据标记从元数据处理域传递到规则高速缓存。4.如权利要求3所述的方法,其中,所述多个元数据标记用于当前指令。5.如权利要求4所述的方法,其中,所述新规则响应于将另一元数据标记写入到第一控制状态寄存器而插入到规则高速缓存中,其中,在当前指令的结果上放置所述另一元数据标记,所述结果是目的地寄存器或者存储器位置中的任意。6.如权利要求2所述的方法,其中,所述多个控制状态寄存器可以包括以下的任何一个或多个:包括所有其他生成的元数据标记从其推导出的初始元数据标记的自举标记控制状态寄存器;指定默认元数据标记的默认标记控制状态寄存器;指定用于标记指令和分类为公开和不可信的数据的公开不可信元数据标记的公开不可信控制状态寄存器;包括写入到包括关于操作组的信息和用于不同操作码的关心信息的表的数据的操作组值控制状态寄存器;指定操作组值控制状态寄存器的数据写入到的表中的位置的操作组地址控制状态寄存器;和其中到泵清空控制状态寄存器的写入触发规则高速缓存的清空的泵充溢控制状态寄存器。7.如权利要求2所述的方法,其中,所述多个控制状态寄存器包括表示元数据处理的当前模式的标记模式控制状态寄存器。8.如权利要求7所述的方法,其中,所述标记模式控制状态寄存器指示何时脱离元数据处理由此不由元数据处理推行一个或多个定义的策略的规则。9.如权利要求8所述的方法,其中,所述标记模式控制状态寄存器设置为允许状态的定义的集合之一以表示元数据处理的当前模式,所述允许状态包括:关闭状态,由此元数据处理在所有结果上写入默认标记的状态,和指示当以一个或多个指定特权级别在代码域中执行指令时启用了和操作元数据处理的状态。10.如权利要求9所述的方法,其中,所述规则高速缓存未命中处理在脱离元数据处理的允许状态的第一个定义的集合中执行。11.如权利要求9所述的方法,其中,所述允许状态包括指示仅当以用户特权级别在代码域中指令执行时启用元数据处理的第一状态;指示仅当以用户或者管理程序特权级别在代码域中指令执行时启用元数据处理的第二状态;指示仅当以用户、管理程序或者系统管理程序特权级别在代码域中指令执行时启用元数据处理的第三状态;和指示当以用户、管理程序、系统管理程序或者机器特权级别在代码域中指令执行时启用元数据处理的第四状态。12.如权利要求7所述的方法,其中,启用或者脱离元数据处理根据标记模式控制状态寄存器的当前标记模式与代码域中的代码执行的当前特权级别结合来确定,其中,当脱离元数据处理时不推行一个或多个定义的策略的规则,且其中,当启用元数据处理时推行所述规则。13.如权利要求2所述的方法,其中,表包括将指令集的操作码映射到相应的操作组的信息和位向量信息,所述操作组表示由元数据处理域类似地处理的一组关联的操作码,所述位向量信息表示是否关于处理操作码来使用相对于元数据处理域的特定输入和输出,其中,所述表使用小于可允许操作码位的最大数目的操作码位的第一部分操作码位来索引,所述最大数目表示指令集的操作码的位数的上限。14.如权利要求13所述的方法,其中,所述多个控制状态寄存器的第一部分包括扩展的操作码控制状态寄存器,其包括用于当前指令的附加操作码位(如果有的话),其中,所述当前指令包括在具有可变长度操作码的指令集中,且其中,所述指令集的每个操作码可选地包括附加操作码位,且所述扩展的操作码控制状态寄存器包括用于当前指令的附加操作码位(如果有的话)。15.如权利要求14所述的方法,其中,对于使用所述表映射的每个操作码,存在与所述每个操作码对应的结果位向量,所述结果位向量表示扩展的操作码控制状态寄存器中的附加操作码位的什么部分(如果有的话)用于所述用于元数据处理的每个操作码。16.如权利要求2所述的方法,其中,所述当前指令是与单个元数据标记相关联的存储器的单个字中存储的多个指令之一,所述单个元数据标记与单个字中包括的多个指令相关联。17.如权利要求16所述的方法,其中,所述多个控制状态寄存器包括指示单个字中存储的多个指令中的哪个是当前指令的子指令控制状态寄存器。18.如权利要求17所述的方法,其中,所述单个元数据标记是指向包括用于单个字中的多个指令中的每一个的不同元数据标记的第一存储器位置的第一指针。19.如权利要求18所述的方法,其中,至少用于多个指令的第一指令的第一存储器位置中存储的第一元数据标记包括指向包括用于第一指令的元数据标记信息的第二存储器位置的第二指针。20.如权利要求19所述的方法,其中,用于第一指令的元数据标记信息包括复杂结构,所述复杂结构包括至少一个标量数据字段和指向第三存储器位置的至少一个指针字段。21.一种在其上包括代码的非瞬时计算机可读介质,所述代码当执行时执行处理指令的方法,所述方法包括:对于元数据处理,接收具有关联的元数据标记的当前指令,所述元数据处理在与包括当前指令的代码执行域相隔离的元数据处理域中执行;在元数据处理域中和根据元数据标记和当前指令,确定规则是否存在于用于当前指令的规则高速缓存中,所述规则高速缓存包括关于由所述元数据处理使用以定义允许的操作的元数据的规则;和响应于确定没有规则存在于用于当前指令的规则高速缓存中,在元数据处理域中执行规则高速缓存未命中处理,包括:确定是否允许当前指令的执行;响应于确定允许在代码执行域中执行当前指令,生成用于当前指令的新规则;写入到寄存器;和响应于写入到寄存器,将新规则插入到规则高速缓存中。22.一种系统,包括:处理器;和存储器,包括在其上存储的代码,所述代码当由所述处理器执行时执行处理指令的方法,所述方法包括:对于元数据处理,接收具有关联的元数据标记的当前指令,所述元数据处理在与包括当前指令的代码执行域相隔离的元数据处理域中执行;在元数据处理域中和根据元数据标记和当前指令,确定规则是否存在于用于当前指令的规则高速缓存中,所述规则高速缓存包括关于由所述元数据处理使用以定义允许的操作的元数据的规则;和响应于确定没有规则存在于用于当前指令的规则高速缓存中,在元数据处理域中执行规则高速缓存未命中处理,包括:确定是否允许当前指令的执行;响应于确定允许在代码执行域中执行当前指令,生成用于当前指令的新规则;写入到寄存器;和响应于写入到寄存器,将新规则插入到规则高速缓存中。23.如权利要求22所述的系统,其中,所述处理器是精简指令集计算架构中的流水线处理器。24.一种处理指令的方法,包括:接收用于在与包括当前指令的代码执行域相隔离的元数据处理域中执行的元数据处理的当前指令;和由关于用于当前指令的元数据的元数据处理域根据一个或多个策略的集合确定是否允许当前指令的执行,其中,所述当前指令访问第一例程的堆栈帧的第一位置,其中,所述当前指令和堆栈帧的位置具有关联的元数据标记,且所述一个或多个策略的集合包括提供堆栈保护和防止对包括第一例程的堆栈帧的存储位置的堆栈存储位置的非法访问的堆栈保护策略。25.如权利要求24所述的方法,其中,所述堆栈保护策略包括在访问第一例程的堆栈帧的第一位置的当前指令的元数据处理中使用的第一规则,如果第一位置具有指示其是第一例程的堆栈位置且当前指令包括在第一例程中,则所述第一规则允许当前指令的执行。26.如权利要求24所述的方法,其中,所述当前指令由第一例程的特定起用实例使用,且其中,所述堆栈保护策略包括在当前指令的元数据处理中使用的第一规则,如果当前指令包括在第一例程中且也由第一例程的特定起用实例使用,则所述第一规则允许当前指令的执行。27.如权利要求26所述的方法,其中,所述第一规则包括检查与程序计数器相关联且表示任何授权和能力的元数据,以确定是否允许由第一例程的特定起用实例的当前指令的执行。28.如权利要求24所述的方法,其中,所述堆栈保护策略提供任何对象级别保护,其中,单个堆栈帧中的不同对象具有不同颜色元数据标记,且用于分层对象的分层对象保护包括多个子对象,其中单个堆栈帧的多个子对象中的每一个具有不同元数据标记。29.如权利要求24所述的方法,进一步包括:创建用于新例程起用的新堆栈帧;和根据严格对象初始化或者懒惰对象着色来标记或者着色新堆栈帧的存储器位置,其中,所述严格对象初始化包括执行初始化处理,所述初始化处理执行触发在将信息存储到新堆栈帧之前最初标记新堆栈帧的每个存储器位置的一个或多个规则的元数据处理的一个或多个指令,且其中,懒惰对象着色关于响应于将数据存储到特定存储器位置的指令而触发的规则的元数据处理来标记新堆栈帧的特定存储器位置。30.如权利要求24所述的方法,其中,所述一个或多个策略包括规则的集合,用于推行保证仅当在特定起用之后做出时到特定返回位置的返回是有效的动态控制流完整性策略。31.如权利要求30所述的方法,其中,所述第一位置包括转移控制到包括返回指令的被调用例程的调用指令,且所述第二位置包括第二指令,所述第二位置表示作为执行被调用例程的返回指令的结果,控制被转移到的返回目标位置,且所述方法进一步包括:以第一代码标记来标记包括调用指令的第一位置;以第二代码标记来标记表示返回目标位置的第二位置;执行用于以第一代码标记标记的调用指令的集合的第一规则的元数据处理,其中,用于以第一代码标记标记的调用指令的集合的第一规则的元数据处理包括用有效返回地址标记来标记返回地址寄存器,该有效返回地址标记表示返回地址寄存器包括用于第二位置的有效返回地址,其中,调用指令的执行更新关于返回地址寄存器的标记以表示返回到第二位置的能力;执行用于被调用例程的返回指令的集合的第二规则的元数据处理,如果以有效返回地址能力标记来标记返回地址寄存器,则所述被调用例程允许返回指令的执行以将控制转移到返回地址寄存器中存储的返回地址,其中,所述第二规则将返回地址寄存器的有效返回地址能力标记传播到用于在返回指令的运行时间执行之后的下一指令的程序计数器标记;和执行用于在返回指令的运行时间执行之后的用于第二指令的集合的第三规则的元数据处理,其中,如果第二指令具有等于第二代码标记的代码标记且如果程序计数器标记是有效返回地址能力标记,则所述第三规则的元数据处理允许第二指令的执行,其中,所述第三规则清除用于在第二指令的运行时间执行之后的下一指令的程序计数器标记。32.一种处理指令的方法,包括:接收用于在与包括当前指令的代码执行域相隔离的元数据处理域中执行的元数据处理的当前指令;和由关于用于当前指令的元数据的元数据处理域,根据一个或多个策略的集合来确定是否允许当前指令的执行,其中,所述一个或多个策略包括推行从完全序列的第一指令到完全序列的最后指令的以特定次序的指令的完全序列的执行的规则的集合。33.如权利要求32所述的方法,进一步包括:将第一共享物理页面映射到第一进程的第一虚拟地址空间中;和将第一共享物理页面映射到用于第二进程的第二虚拟地址空间中,所述第一共享物理页面包括多个存储器位置,其中,所述多个存储器位置中的每一个与关于元数据处理域中的规则处理使用的多个全局元数据标记之一相关联。34.如权利要求33所述的方法,其中,所述多个全局元数据标记表示由至少包括第一进程和第二进程的多个进程共享的元数据标记的集合,且其中,对于第一进程和第二进程两者由元数据处理域推行相同策略。35.如权利要求34所述的方法,其中,由元数据处理域的相同策略的推行使用元数据以允许第一进程执行操作,该操作在另外的情况就不由用于第二进程的相同策略允许,且其中,程序计数器具有关联的程序计数器标记,且关联的程序计数器标记的不同的值由相同策略的规则使用,以允许第一进程执行操作,该操作在另外的情况就不由用于第二进程的相同策略允许。36.如权利要求32所述的方法,进一步包括:由应用的分配例程执行第一处理以使用应用的当前颜色来生成用于应用的下一颜色,其中,所述应用的当前颜色表示用于应用的应用专用颜色序列的当前状态,所述下一颜色表示用于应用的应用专用颜色序列的下一状态,且当前颜色存储在关于第一原子单元的第一元数据标记中。37.如权利要求36所述的方法,其中,所述第一处理包括:执行第一组一个或多个指令,其中,所述第一组一个或多个指令触发由元数据处理域使用一个或多个规则的元数据处理,其中,所述由元数据处理域使用一个或多个规则的元数据处理使用当前颜色生成下一颜色,且通过在第一原子单元的第一元数据标记中存储下一颜色来更新用于应用的应用专用颜色序列的当前状态。38.如权利要求37所述的方法,其中,所述第一组一个或多个指令包括在应用的分配例程中,所述第一原子单元是寄存器和存储器位置中的任意,所述应用专用颜色序列是可用于由应用使用的不同颜色的无限制序列,且所述下一颜色存储为由应用使用的一个或多个存储器位置中的每一个的标记值,其中,所述一个或多个存储器位置由分配例程分配。39.如权利要求32所述的方法,其中,所述规则集合包括第一规则和第二规则,且其中,所述指令的完全序列包括第一指令和第二指令,其中,所述第二指令在第一指令之后立即执行,所述方法包括:执行用于第一指令的第一规则的元数据处理,其中,所述第一规则的元数据处理包括将用于第一指令的运行时间执行之后的下一指令的程序计数器的程序计数器标记设置为特殊标记值;和执行用于第二指令的第二规则的元数据处理,其中,所述第二规则的元数据处理包括保证仅当用于第二指令的程序计数器的程序计数器标记等于该特殊标记时允许第二指令的执行。40.一种包括在其上存储的代码的非瞬时计算机可读介质,所述代码当执行时执行处理指令的方法,所述方法包括:接收用于在与包括当前指令的代码执行域相隔离的元数据处理域中执行的元数据处理的当前指令;和由关于用于当前指令的元数据的元数据处理域根据一个或多个策略的集合来确定是否允许当前指令的执行,其中,所述当前指令访问第一例程的堆栈帧的第一位置,其中,所述当前指令和堆栈帧的位置具有关联的元数据标记,且所述一个或多个策略的集合包括提供堆栈保护和防止对包括第一例程的堆栈帧的存储位置的堆栈存储位置的非法访问的堆栈保护策略。41.一种系统,包括:处理器;和存储器,包括在其上存储的代码,所述代码当由所述处理器执行时执行处理指令的方法,所述方法包括:接收用于在与包括当前指令的代码执行域相隔离的元数据处理域中执行的元数据处理的当前指令;和由关于用于当前指令的元数据的元数据处理域根据一个或多个策略的集合来确定是否允许当前指令的执行,其中,所述当前指令访问第一例程的堆栈帧的第一位置,其中,所述当前指令和堆栈帧的位置具有关联的元数据标记,且所述一个或多个策略的集合包括提供堆栈保护和防止对包括第一例程的堆栈帧的存储位置的堆栈存储位置的非法访问的堆栈保护策略。42.一种包括在其上存储的代码的非瞬时计算机可读介质,所述代码当执行时执行处理指令的方法,所述方法包括:接收用于在与包括当前指令的代码执行域相隔离的元数据处理域中执行的元数据处理的当前指令;和由关于用于当前指令的元数据的元数据处理域,根据一个或多个策略的集合来确定是否允许当前指令的执行,其中,所述一个或多个策略包括推行从完全序列的第一指令到完全序列的最后指令的以特定次序的指令的完全序列的执行的规则集合。43.一种系统,包括:处理器;和存储器,包括在其上存储的代码,所述代码当由所述处理器执行时执行处理指令的方法,所述方法包括:接收用于在与包括当前指令的代码执行域相隔离的元数据处理域中执行的元数据处理的当前指令;和由关于用于当前指令的元数据的元数据处理域,根据一个或多个策略的集合来确定是否允许当前指令的执行,其中,所述一个或多个策略包括推行从完全序列的第一指令到完全序列的最后指令的以特定次序的指令的完全序列的执行的规则集合。44.一种生成和使用元数据标记的方法,包括:在与代码执行域相隔离的元数据处理域中使用的多个指定寄存器的第一指定寄存器中存储自举标记;和执行第一处理以从自举标记推导出一个或多个附加元数据标记,其中,所述第一处理包括执行触发元数据处理域中的一个或多个规则的元数据处理的代码执行域中的一个或多个指令。45.如权利要求44所述的方法,其中,所述自举标记使用由元数据处理域使用的所有其他元数据标记从其推导出的初始种子标记。46.如权利要求44所述的方法,其中,所述自举标记硬布线或者存储在只读存储器的一部分中。47.如权利要求44所述的方法,其中,所述存储和第一处理包括在当引导包括元数据处理域和代码执行域的系统时通过执行自举程序的第一代码部分而执行的处理中。48.如权利要求44所述的方法,进一步包括:从第一指定寄存器中存储的自举标记推导出默认标记;在多个指定寄存器的第二指定寄存器中存储默认标记;和执行触发元数据处理域中的规则的元数据处理的指令序列,其从第二指定寄存器写入默认标记作为用于由代码执行域使用的多个存储器位置中的每一个的元数据标记。49.如权利要求44所述的方法,其中,所述执行第一处理包括生成从自举标记推导出的元数据标记的初始集合,其中,所述初始集合的每一个元数据标记通过执行触发元数据处理域中的规则高速缓存未命中处理的代码执行域中的当前指令而生成,由此没有规则存在于用于当前指令的规则高速缓存中,所述规则高速缓存包括关于由元数据处理域使用以定义允许操作的元数据的规则。50.如权利要求49所述的方法,其中,所述规则高速缓存未命中处理包括:由元数据处理域中执行的规则高速缓存未命中处理器来计算用于当前指令的新规则,其中,所述新规则包括元数据标记的初始集合的结果元数据标记。51.如权利要求49所述的方法,其中,所述初始集合的每个元数据标记是可以进一步用于推导出其他元数据标记的标记发生器。52.如权利要求51所述的方法,其中,所述一个或多个指定指令的第一集合的执行触发规则和生成每个元数据标记的元数据处理域中的规则高速缓存未命中处理,所述每个元数据标记表示为用于生成一个或多个其他元数据标记的序列的标记发生器,且其中,所述一个或多个指定指令的第二集合的执行触发规则和生成每个元数据标记的元数据处理域中的规则高速缓存未命中处理,所述每个元数据标记表示为不能用于进一步生成附加元数据标记的非生成标记。53.如权利要求49所述的方法,其中,所述自举程序进一步包括触发写入关于指定代码部分的一个或多个指令的一个或多个特殊元数据代码标记以向标记的一个或多个指令提供扩展的特权、能力或者授权的在元数据处理域中处理的规则的指令。54.如权利要求53所述的方法,其中,所述指定代码部分包括一个或多个内核程序代码和加载器代码。55.如权利要求53所述的方法,其中,所述一个或多个特殊元数据代码标记从元数据标记的初始集合的第一元数据标记推导出,其中,所述第一元数据标记是特殊指令标记发生器...
【专利技术属性】
技术研发人员:A·德翁,E·博林,
申请(专利权)人:查尔斯斯塔克德雷珀实验室有限公司,
类型:发明
国别省市:美国,US
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。