houdini 是intel 研发的ARM binary translator。

它的原理在于把ARM的二进制代码转译为X86指令集,使得可以在X86的CPU上执行。

Intel是移动市场的新进者,最近出了几款面向移动市场的SOC,面对应用程序支持缺乏的问题,有两条路可以走:

1.逐家拜访应用开发商,要求他们重新为intel的cpu编译一份应用。

2.使用二进制转换,使得已有的应用可以运行在intel的cpu上。

该产品并不开源,可以在联想的K900 ROM里面可以找到二进制版本。一共有三个文件:libhoudini.so   libdvm_houdini.so  houdini_armlibs.tgz

原理是:当Dalvik VM加载lib失败时,程序流会再次尝试用libhoudini中的my_dlopen打开。该lib类似于QEMU的user mode emulator,通过虚拟一个ARM的CPU (包含指令集和寄存器,但是没有外设模拟),加载基于ARM指令集的lib。目前还不清楚是基于解析执行,还是JIT方式实现。

采用类似技术的产品有valgrind(模拟X86 CPU来检测程序内存泄露),qemu user mode(可以在X86 Linux下执行mips的elf文件)

类似概念的产品

  • 为ARM服务器产品准备的二进制翻译软件  (X86转ARM指令集) http://server.chinabyte.com/345/12451845.shtml
  • FX!32 (X86 windows程序运行在Alpha CPU的Windows NT上) http://en.wikipedia.org/wiki/FX!32

下一个有可能出现类似产品的领域:
binary translator for windows RT  (至于原因。你懂的:))

================================================

前几日拿到联想K900,这款机器无论是硬件还是软件都十分不错,工业设计也很强。但很多网友仍然关心一个问题,X86的应用兼容性怎么样?在他们看来,兼容性很大程度上影响他们是否购买这款机器。

经过测试,X86的应用兼容性已经做的十分完善,英特尔此前宣布可达95%的兼容性不假,大家大可放下心里包袱。不过英特尔是如何做到的,这背后的原因很多人并不知道。恰好在IDF上,笔者遇到了一位英特尔软件部门工程师,他通俗的讲述了其中的原因。

其实问题主要出在指令集上,X86使用的是SSE指令集,而ARM是用的NEON指令集,两者差异导致了应用不兼容。不过好在Android 的大部分应用运行在Dalvik虚拟机之上,并不依赖CPU架构,因此这些应用可以很好地跑在X86上

支持Dalvik的程序占据大多数,但仍然会有一些应用绕过Dalvik。比如需要更高的性能或者需要硬件的支持的时候,前者通常是大型游戏,后者则是结合了感应器或者电源管理等硬件相关的应用。Angry Bird两者都不占,所以可以兼容,赛车游戏两者都需要,所以大多不兼容。

这些稍显复杂的应用数量并不低,且用户需求强烈。为了快速解决这些问题,英特尔试图通过技术去完善,开发了一种转换技术“Houdini”。“Houdini”相当于一个中间层,可以让原本不兼容的应用跑在X86上。但这种强行结合的技术运行起来往往效率不高,容易出问题,且会增加2%左右的耗电。

从源头解决问题显然是更好的办法,尽管速度会慢一下。自从英特尔和Android合作之后,英特尔就提供了X86的NDK。开发者只需在应用中支持这个NDK,应用在提交时会自动生成2 个App,设备在下载时会根据自己的架构下载合适的App。这种方法并不难,效果也最好,难的是如何让众多开发商甘愿合作。所以英特尔以及手机厂商会去和应用厂商挨个合作,督促其支持X86的NDK。

现在已经有很多大型游戏支持X86架构,包括极品飞车、Epic Citadel 等。用户大可不必担心,因兼容性引起的影响已经十分微小了。

况且用户日常使用最频繁的恰恰是那些十分简单、无需重新适配的应用。由于Android使用虚拟机,应用性能常遭人诟病,但是这样做的好处是,应用可以轻松跨平台运行。如果没有这个,那对英特尔来说将是灾难性的,从这点来看,英特尔还是十分幸运的。



houdini 技术相关推荐

  1. Houdini技术体系大纲

    Houdini for UE4 Pipeline的系列教程,前言等想好再写吧 转载于:https://www.cnblogs.com/TracePlus/p/9116910.html

  2. Houdini技术体系 基础管线(三) :UE4以选择区域的方式对地形做生成和更新 上篇...

    背景 前一节里,解决了Houdini地形无缝导入到UE4的流程问题.但这种方法也有它的局限性,在实际游戏项目里,LA和LD还是偏向在游戏引擎编辑器里工作,他们的一些设计也会影响到地形的信息,那么就需要 ...

  3. 过程化技术:打造「开放世界」的秘密

    如果你经常接触开放世界游戏,应该不难发现在这些作品中,并不是每个角落都经过了精雕细琢.一张硕大的地图里,往往充斥着诸多相同的物件.地形和建筑.某种程度上,这些都是使用过"过程化技术" ...

  4. CSS如何实现内凹角效果 By 大漠

    记得@Lea Verou的<CSS Secrets>一书和前几天@Chris Coyier刚发的帖子都介绍了CSS怎么实现元素斜切口的效果.我也尝试着借助Vue的能力,把这种效果构建成一个 ...

  5. CSS如何实现内凹角效果

    特别声明:此篇文章内容来源于@ANA TUDOR翻译的<Scooped Corners in 2018>一文. 记得@Lea Verou的<CSS Secrets>一书和前几天 ...

  6. UE4_地图程序化随机生成

    整理总结一下最近看到的关于程序化随机生成的东西 目前主要有四种方式: 随机迷宫生成算法 War3的地形拼接和随机算法,可以和其他噪声算法结合生成 perlin噪声等随机生成算法 wave functi ...

  7. Mac安装Drozer apk安全测试框架踩坑记录, ‘openssl/opensslv.h‘ file not found 和implicit declaration of function‘xx‘

    一. 环境准备 查看Drozer项目说明发现环境要求 大致就是: jdk1.7+ python2.7和pip 2不支持python3和pip3 Protobuf 2.6 + Pyopenssl 16. ...

  8. 爬虫(20)Scrapy知识补充+腾讯招聘案例+古诗文详情页+总结

    文章目录 第十八章 腾讯招聘案例 1. 腾讯招聘案例 2. 代码实现 2.1 配置项目 2.2 解析数据 2.3 翻页处理 2.4 获取详情页信息 3. 古诗词网补充 3.1 验证是否在源码中 3.2 ...

  9. 收集的计算机编程电子书目录,仅供日后查阅方便

    本人有收集电子书的癖好.每日在网上收集经典的电子书籍,尤其喜欢原版的,看起来舒服.不过总是心血来潮,当时下载后瞅几眼,之后就束之高阁,再也不问津了.很为此苦恼,过后找某本书时也总是不知道在哪,为了查找 ...

最新文章

  1. centos上tensorflow一键安装脚本
  2. MySQL性能优化(八)
  3. Oracle的分区操持
  4. 赶集网人事调整:三月内两副总离职
  5. JAVA子类是球父类是圆_java的父类和子类,这是矛盾...
  6. 名编辑电子杂志大师教程 | 添加搜索功能
  7. 进行单元测试时一直报这个错,原因是缺少aspectjweaver包
  8. 汉王手写输入法android,汉王手写输入法
  9. 搜狗输入法界面简化设置
  10. Java 学习 多态练习 1. 设计一个接口 接口叫做Mortal,其中有一个方法叫做die 在主方法中首先实例化出一个Hero对象:盖伦然后实例化出3个对象,分别是ADHero,APHero
  11. 工作态度决定了工作结果
  12. 用python画皮卡丘画法-用python画一只可爱的皮卡丘实例
  13. Android的根证书颁发机构列表
  14. 【点云处理技术之PCL】随机采样一致算法(Random sample consensus,RANSAC)
  15. bailianoj 4124海贼王之伟大航路
  16. 获取解析后的html内容,Android通过WebView获取解析html内容
  17. 深圳是“物联网之城”|草根逆袭之地
  18. 51单片机矩阵键盘——数码管显示
  19. gmt把ps转换成jpeg中文乱码
  20. Access to XMLHttpRequest at ‘http://xx‘ from origin ‘http://xx‘ has been blocked by CORS policy:

热门文章

  1. c语言程序 t代表什么意思,t表示什么(男生0和t是什么意思)
  2. AB罗克韦尔的PLC标签MQTT协议JSON格式发布与订阅-智能网关设置
  3. awx文件解析_9awx.com
  4. 古代一两银子到底值多少钱
  5. 2022年美容师(初级)考试题模拟考试平台操作
  6. 【软考】2020下半年软件设计师 易错知识点(4)
  7. 【整理】Google代码风格(C++)——注释
  8. 朗强:会议控制系统设备信号hdmi传输器有哪些
  9. 携程英语口语测验题目
  10. 纳税服务系统七(投诉管理模块)【显示投诉信息、处理回复、我要投诉、Quartz自动受理、统计图FusionCharts】...