#指令

2021-4-22 11:55
令人惊讶的是,给出一个很好的答案(在本文中提出的问题)。这取决于你的统计方式,细节很有趣(无论如何)。 不要离开你挂起:英特尔有一个官方x86编码器/解码器库,名为xed。根据英特尔的XED,就像这种写作一样,有1503个定义的x86指令(“Xed Lingo的iClasses”),从AAA到XTest(这也包括A......
2021-3-26 20:6
Home x86内部结构猜测整个x86-64指令在几秒钟内使用这个奇怪的技巧 作为俗气的标题声音,我保证无法击败技术的俗气,我会在这篇文章中告诉你。早上我看到Mark Ermolov的推文关于无证指导从/写入CRBUS,我手里有一点空闲时间,我知道我不得不找出OPCode,所以我立即开始理论制作。经过几个小时的数字......
2021-3-20 8:56
此前的这一份额是"基本上解释了FPGA和A' Hello World' nmigen例子。" 1在这篇文章中,我将详细说明我的CPU目前的设计,并追溯到我沿途所做的各种错误。与上一篇文章一起,我主要针对软件工程师的旨在新的硬件设计 - 但我希望它对尼格珍,RISC-V或CPU设计中的任......
2021-3-7 23:27
这是在Apple M1中的CPU中的微型建筑文件的早期尝试,灵感来自Andreas Abel,Andrei Frumusanu,@Veedrac,Travis Downs,Henry Wongand Aganter Fog的惊人工作。本文档是我的最佳努力,但它基于黑匣子逆向工程,肯定会有错误。没有任何形式的保修(而不......
2021-2-27 5:3
Uber的适用于Rider,Driver和Eats的iOS移动应用程序很大。选择Swift作为我们的主要编程语言,快速的开发环境和功能添加,分层的软件及其依赖项以及静态链接的平台库会导致大型应用程序二进制文件。减小应用程序大小对于我们的客户体验至关重要。此外,苹果公司对应用程序下载大小的限制禁止通过空中下载大量应用程......
2021-2-24 21:23
当计算机没有操作系统而没有ROM时,如何从打卡中启动计算机?要使事情更糟糕,这台计算机需要特殊的元数据,称为#34;字标记"可以' t在卡上代表。在这个博客文章中,我描述了复古IBM 1401计算机中使用的有趣硬件和软件技术,以从打卡甲板加载软件。(除其他内容中,每个人的一半卡包含读取每张卡时运行的加......
2021-1-9 15:50
现代处理器非常复杂,许多部件都有可能成为瓶颈。短代码的性能相对容易推断,尤其是在将内存影响保持在最低水平的情况下。在这种情况下,静态分析工具(如LLVM MCA和微基准)都可以提供很多信息。但是,整个程序的行为不仅仅是这些小部分的总和。随着代码变大和越来越复杂,其他效果开始出现。这种潜在问题之一是过多的指令高速缓存未......
2021-1-5 14:10
旧的Cray-1型矢量机还会回来吗?向量指令和现代SIMD指令之间到底有什么区别? 在1980年代,超级计算机的外观如下图所示。 Cray的半圆形是80年代超级计算机的代名词。那就是一台超级计算机的样子。 过去的超级计算时代与RISC-V有什么关系?您会看到Cray计算机,我们称之为矢量处理机。早已被视为过去......
2021-1-1 8:8
专门为英特尔处理器设计的主流操作系统的历史使得有时要由不编写操作系统本身的程序员来开发旨在在操作系统级别或接近操作系统级别运行的软件。这些程序员意在为操作系统添加功能,并且可能是Microsoft以外的程序员的创造性添加为Microsoft操作系统在消费市场上的稳定性和成功做出了很大贡献。 由于它们与处理器的协作更......
How do C++ using-directives work?(quuxplusone.github.io)
2020-12-24 21:18
使用声明在语义上类似于声明;它在当前范围内引入了名称的新含义。如果该名称已经具有来自外部作用域的一个或多个含义,则这些现有的含义将被新声明隐藏或遮盖。 Godbolt: 命名空间AnimalUtils {int foo(Zoo :: Animal);}命名空间Outer {int foo(Zoo :: Lion);......
What do RISC and CISC mean in 2020?(erik-engheim.medium.com)
2020-11-21 12:25
如今,许多人说RISC和CISC之间的区别变得无关紧要。真的吗?如果不是,那么现代RISC和CISC CPU之间到底有什么区别? Apple现在已经发布了M1 Apple Silicon芯片,经过一番摸索,您可能想知道它与Intel或AMD处理器有何不同?您可能听说过M1被称为ARM处理器,而ARM是所谓的RISC处......
2020-11-16 21:29
编写仿真器使旧的计算机硬件起死回生是一种流行的爱好,我最近通过自己的目标--编写一款Atari 2600仿真器--一直在享受这一爱好。然而,编写CPU仿真器可能会有些重复和乏味,所以我想我应该探索一种不同的方法-从规范生成CPU仿真代码,而不是手动转换它。这篇博文分享了丰硕的成果。 雅达利2600在70年代末和80年......
2020-11-5 20:10
管理程序内存自省(HVMI)依赖于分析内存访问以确定它们是否合法。例如,通过分析旧的存储值和新存储的值,HVMI可以决定是否允许修改。然而,这带来了需要对修改受保护内存的每条指令进行深入分析的复杂性。与RISC体系结构不同,x86有大量的指令可以通过复杂的读-修改-写(RMW)方式访问存储器,并使用复杂的寻址方案。为......
A First Look at the JIT(blog.erlang.org)
2020-11-5 2:6
这个问题在很大程度上是自己造成的,是由于编译器太慢(我们经常使用LLVM)造成的,而我们给它提供了大段代码来进行更多的优化,这让情况变得更糟。 通过限制自己一次只编译一条指令,我们在表上留下了一些性能,但极大地提高了编译速度。 这使得编译速度非常快,因为我们基本上只是在每次使用指令时复制-粘贴模板,仅根据其参数执行一......
2020-11-1 19:59
这份文件最初是几年前写的。当时我在ARM担任执行核心验证工程师。通过在不同处理器的执行核心内和周围工作,以下几点被涂上了浓墨重彩的色彩。加一小撮盐;观点包含不同程度的意见。 我仍然认为RISC-V可以设计得更好;尽管我也会说,如果我现在正在构建一个32位或64位的CPU,我很可能会实现该体系结构以受益于现有的工具。 ......
2020-10-30 5:40
英特尔在其Sunny Cove和Tremont内核中添加了伽罗瓦域指令集(GFNI)扩展。特别有趣的是,GFNI是SSE和VEX/AVX编码附带的唯一新的SIMD扩展(除了EVEX/AVX512),以允许它在所有未来的Intel内核上得到支持,包括那些不支持AVX512的内核(如Atom系列,以及赛扬/奔腾品牌的“大......
Parsing RISC-V assembly(web.eecs.utk.edu)
2020-10-27 6:26
最近,我需要为一个研究项目分析一些RISC-V汇编代码,然后计算一些基本指标,但我找不到合适的工具。好的,我将从一个较小的开放源码汇编器中获取一个解析器。这并不成功,因为我看到的那些使用粗糙的、基于正则表达式的解析器,这些解析器不维护有关结构的信息。 没问题,我会实现我自己的!让我查一下RISC-V汇编的语法...。......
2020-10-22 8:51
这篇文章是关于BEAM的简短入门读物,BEAM是在Erlang Runtime system(ERTS)中执行用户代码的虚拟机。它的目的是帮助那些BEAM新手关注OTP24中即将发布的关于JIT的一系列帖子,将实现细节留到后面。 BEAM经常与ERTS混淆,区分这两个很重要;BEAM只是虚拟机,它没有进程、端口、ET......
2020-10-19 13:54
欢迎回到编译Lisp系列。在这个激动人心的新更新中,我们将学习更多关于x86-64指令编码的知识,而不是在堆上分配更多有趣的东西或添加过程调用。 我之所以写这段插曲,是因为我把编译器代码中的一个寄存器(krbp改成了krsp),所有的地狱都崩溃了-结果程序崩溃了,rasm2/Cutter在给我的二进制文件时解码古怪的......
2020-10-17 23:31
RISC-V组件与任何其他组件类似,与MIPS组件相似。就像任何程序集一样,我们有一个指令列表,它会逐渐使我们更接近我们的解决方案。 我们将使用riscv-g++编译器并将C++文件与汇编文件链接起来。您将编写程序集文件,而C++文件有助于简化实验。 部件文件以.S(大写S)结尾。编译器包括编译、汇编和链接的所有阶段......
Z80 CPU User Manual (2016)(zany80.github.io)
2020-10-14 22:2
生命支持设备或系统是指(A)用于外科手术植入人体的设备,或(B)。 支持或维持生命,并且在按照以下说明正确使用时不能正常工作。 可以合理地预期标签中提供的使用会对使用者造成重大伤害。一个标准-。 校准组件是支持设备或系统中可能出现故障的任何组件-。 可能会导致生命支持设备或系统发生故障或影响其安全性或有效性。 或者所......
A New Back End for Cranelift(hacks.mozilla.org)
2020-10-11 16:19
这篇文章将我最近在Cranelift上的工作描述为我在Mozilla的日常工作的一部分。在这篇文章中,我将设置一些上下文并描述指令选择问题。特别地,我将谈一谈指令选择器和后端框架的总体改造,这是我们在过去九个月左右一直致力于的工作。这项工作是与我杰出的同事朱利安·苏厄德(Julian Seward)和本杰明·布维尔(......
2020-9-21 12:4
这篇文章是关于我在Mozilla的日常工作中最近在Cranelift上的工作的三部分系列中的第一部分。在第一篇文章中,我将设置一些上下文并描述指令选择问题。特别地,我将谈一谈指令选择器和后端框架的总体改进,这是我们在过去九个月左右一直在做的工作。这项工作是与我杰出的同事Julian Seward和Benjamin B......
2020-9-8 11:16
创建GraphQL服务器有两种方法:SDL优先(模式定义语言)方法和代码优先方法,这两种方法各有优缺点。并且有两种类型的指令:通过SDL在模式上声明的模式类型指令(例如@Deposated)和添加到客户端查询中的查询类型指令(例如@Include和@Skip)。 代码优先方法的一个缺点是,因为它没有SDL,所以它不能......
2020-8-28 20:17
我刚刚测试完AMD Zen2CPU。结果在我的微体系结构手册和我的指令表https://www.agner.org/optimize/#manuals.中。我发现Zen2有一个我们以前从未见过的新的令人惊讶的功能:它可以镜像CPU内部内存操作数的值,这样就可以零延迟地访问它。此汇编代码显示了一个示例:当CPU识别出所......
Ice Lake AVX-512 Downclocking(travisdowns.github.io)
2020-8-20 5:2
这是一篇简短的帖子,调查了英特尔最新的冰湖芯片上AVX2和AVX-512相关的基于许可证的降频行为。 基于许可证的降频1指的是当执行某些SIMD指令时,尤其是重浮点指令或512位宽指令时施加低于标称频率限制的半著名效应。 有关这种类型的降频的更多详细信息,请参阅StackOverflow解答,我们已经详细介绍了这些转......
2020-8-18 16:12
当我上第一节课的时候,大学里教我x86汇编的方式已经完全过时了很多年。那是在2008或2009年左右,64位处理器已经开始成为一种东西,甚至在我所处的环境中也是如此。与此同时,我们正在做DOS、实模式、内存分段和所有其他过去糟糕的事情。 尽管如此,我在课程期间(以及随后的几年)学到了足够多的代码,以便能够理解来自编译......
2020-7-14 22:26
关于苹果ARM的发布,我想我可能会就我最近写的一段代码写一篇帖子,专门研究ARM64,以及它在各种硬件上的基准测试。 我一直在为一个项目实现一些紧凑的数据结构。该实现的CPU热点之一是需要对可能很大的内存位运行快速人口计数。 如果您以前从未见过人口计数,则它是一个字节(或字节列表)中设置为1的位数的计数,例如: 现在......
Transmeta Crusoe(en.wikipedia.org)
2020-6-14 0:37
跳转到导航跳转到搜索Crusoe是由Transmeta开发并于2000年推出的x86兼容微处理器系列。Crusoe以其实现x86兼容性的方法而闻名。Crusoe运行软件抽象层或虚拟机,称为代码变形软件(CMS),而不是在硬件中实现或由专门硬件转换的指令集体系结构。CMS将从程序接收的机器代码指令翻译成用于微处理器的本......
2020-6-10 4:59
我们首次展示了推测性执行使攻击者能够跨多个Intel CPU的核心泄漏敏感信息,绕过针对先前的推测性(或瞬时)执行攻击(如Spectre、Meltdown等)的所有现有核心内缓解措施。到目前为止,所有攻击都假设攻击者和受害者共享同一核心,因此将相互不信任的代码放置在不同核心上可以阻止此类攻击。相反,我们提出了一个新的......