树莓派4B发布后续

这几天一直看着树莓派4B发布以来,各路渠道都是沸沸扬扬,各种欢呼呐喊,各种吐槽不满,各种期待焦灼的等待都不断在身边上演。

硬件上面做了什么改动么?有什么特别值得购买的么,我觉得唤醒你的树莓派3B+和3B才是王道,这个待会儿再聊~

先看看新pi的特别之处。。

Raspberry Pi 4型号B.

以下是亮点:

  • 1.5GHz四核64位ARM Cortex-A72 CPU(~3 × 性能
  • 1GB,2GB或4GB的LPDDR4 SDRAM
  • 全吞吐量千兆以太网
  • 双频802.11ac无线网络
  • 蓝牙5.0
  • 两个USB 3.0和两个USB 2.0端口
  • 双显示器支持,分辨率高达4K
  • VideoCore VI显卡,支持OpenGL ES 3.x.
  • HEVC视频的4Kp60硬件解码
  • 与早期的Raspberry Pi产品完全兼容

好吧,我这里不做评测,其实我更关心跑树莓派的兼容系统, 下面带领大家好好了解一下新版树莓派系统的过往。

巴斯特 – Raspbian的新版本

官方一直试图保持软件向后兼容旧硬件,因此所有Raspberry Pi型号的标准Raspbian映像现在都基于Debian Linux的最新版本Buster。

Buster?Excuse me ? 好吧,官方给了解释就算了。

为何选择巴斯特?

首先要提到的是巴斯特(皮克斯的“玩具总动员”电影中真正的狗,而不是用Slinky制作的玩具……)实际上是在官方Debian发布日期之前悄悄发布的。原因是Raspberry Pi 4的一个重要新功能是默认使用开源OpenGL视频驱动程序,这是使用最新版本的Debian开发的。将它所需要的东西移植到Raspbian Stretch上会有很多工作要做,所以我们决定在Raspbian Buster上启动 – 唯一的问题是Buster是否会在硬件出现之前做好准备!

事实上,准备的还算充分,不至于开机就黑屏,但是朋友测试teamviewer好像就出了问题。。。这么巧。

事实证明,事实并非如此。巴斯特的官方发布日期是7月7日,所以官方提前几周。也就是说,巴斯特现在处于“冻结”状态已有几个月了,只做了很小的改动,因此官方发布的版本与Debian将于7月7日正式发布的版本完全相同。

今年1月据说官方就开始在内部使用Buster,因此它已经在Pi上进行了大量测试,说它稳定而且功能强大,可以使用apt来更新从现在到7月7日之间发生的任何更改,而无需重新安装所有内容。

官方桌面图

Debian Stretch和Debian Buster之间没有太大的区别。令人遗憾地反映出当今世界的方式,大多数差异都是旨在使巴斯特难以入侵的安全变化。任何其他差异大多是小的增量变化,大多数人都不会注意到, 那就是说,基本上没啥变化。

当官方从Jessie搬到Stretch时,许多人评论说这两款操作系统实际上看不出任何差异 – 因为大多数变化都是“幕后”,桌面和应用程序看起来都是一样的。

桌面的整体外观在几年内没有显着变化,并且开始看起来有点陈旧,所以官方自己认为给Buster的外观做小小的刷新会很好。然后人们至少可以看到他们闪亮的新操作系统与旧的操作系统有所不同!其实就是用了一张柬埔寨的图换了以前的高速公路,其实我觉得还可以更好的…

新的外观

近年来,大多数计算机图形用户界面的设计出现了明显的趋势,就是扁平化; 减少装饰量,使按钮变成普通盒子而不是类似物理按钮的东西。可以在Windows等桌面操作系统和iOS等移动操作系统中看到这一点,因此官方决定做点儿类似的事了。(赤果果的抄袭吗?)

外观

大多数界面元素的整体外观已经简化; 减少了角落的曲率和用于给按钮之类的东西提供伪3D效果的阴影渐变。这种“更平坦”的设计看起来更干净,更现代,但这是一种取巧的行为; 它太容易走得太远,让事情看起来完全平淡无奇,据说Eben和UI设计师 对此还产生了分歧 ,Eben想要尽可能多的平整度,UI设计师想保留至少一点曲率,所以他们俩最后还是在某个中间点达成了共识。

这个桥段怎么看起来这么像乔布斯?我怎么觉得eben这个大头鬼在复刻乔布斯呢?pi store搞得很像apple store有没有? 发布会搞得也像apple的发布会有没有? 产品原型设计时的小冲突也和乔布斯当年的追求完美时遇到的一样有没有?

我觉得最像的是这系统越来越闭源的感觉有没有?专有硬件跑专有软件, 是不是有点儿当年Next的感觉~

官方还更改了Greg Annandale的新照片的默认桌面,已经转为灰色高亮颜色。

(如果你真的不喜欢新的外观,很容易恢复以前的外观 – 旧的桌面图片仍然安装,旧的UI主题也是如此。)

其他变化

官方系统一直在Raspbian中包含优秀的Thonny Python开发环境。在这个版本中,它现在是我们的默认Python编辑器,为此,默认情况下不再包括IDLE。

thonny

官方对任务栏进行了一些小的调整。现在,只有当您要弹出设备时,才会显示用于删除USB设备的“弹出”图标; 它剩下的时间都被隐藏了。同样,如果你使用的是较早的Pis而没有蓝牙支持,则现在隐藏蓝牙图标而不是灰色显示。此外,默认情况下,任务栏上不再显示CPU活动量表,因为在更强大的最新Raspberry Pi型号上,这一点已变得不那么必要了。如果仍想使用它,可以将其添加回来 – 右键单击​​任务栏并选择“添加/删除面板项”。按“添加”按钮,你会发现它被列为“CPU使用率监视器”。找到新的“CPU温度监视器”,如果有兴趣了解CPU的最新信息,可以添加它。

目前巴斯特失踪的一个项目是Mathematica。别担心 – 这只是暂时的删除!Wolfram正致力于让Mathematica与Buster一起正常工作,一旦准备好,它就可以从推荐软件安装。意味着有些就看重mathematica的朋友要失望了。

新的OpenGL驱动程序目前不支持旧的非OpenGL视频驱动程序的一些功能(例如像素加倍和欠扫描),因此如果正在使用GL驱动程序,则这些设置将隐藏在Raspberry Pi配置中。(GL驱动程序是Raspberry Pi 4的默认驱动程序 – 较旧的Pis默认情况下仍会使用非GL驱动程序。另外,如果使用Raspberry Pi 4无头驱动程序,我们建议切换回非GL驱动程序 – 选择’Legacy’在raspi-config中的“高级选项”中的“GL驱动程序”设置下。)

如果正在使用GL驱动程序,则会有一个新的“屏幕配置”工具 – 这使得你可以在Raspberry Pi 4上设置多个监视器的排列。它还可以用于设置自定义监视器分辨率,可用于模拟像素倍增的效果。


最后,“Raspberry Pi配置”中有几个新按钮控制Raspberry Pi 4的视频输出选项。(在Raspberry Pi的早期型号上运行时,这些按钮不会显示。)

Raspberry Pi 4上不可能同时具有模拟复合视频(通过3.5mm插孔)和HDMI输出,

因此默认情况下禁用模拟视频输出。

默认情况下,HDMI上的4Kp60分辨率也被禁用,因为这需要更快的时钟速度,从而导致更高的工作温度和更高的功耗。你懂的,买前树莓派,买后暖手派。

新按钮可以在根据需要启用这些选项中的任何一个中进行选择。

强烈不建议将现有的Stretch(或更早版本)系统升级到Buster。

官方无法知道我们对自己系统所做的更改,因此不知道当你迁移到Buster时可能会破坏什么。但是,官方已经测试了以下升级过程,它适用于官方发布的最后一个Stretch映像的纯净版本。而且官方不保证这个镜像能在你的系统上运行,所以建议买张新卡重新烧录。

官方在 Buster上安装了几个不支持的新应用程序。要删除它们,请打开终端窗口

sudo apt purge timidity lxmusic gnome-disk-utility deluge-gtk evince wicd wicd-gtk clipit usermode gucharmap gnome-system-tools pavucontrol

删除掉这些新应用程序就好了。

具体就期待新的树莓派4B到大陆吧!

Piboxy复古游戏机外壳

80后集体的记忆中肯定有过这样一段快乐的时光,就是在家玩儿游戏机,任天堂,红白机的时代,每每响起这些经典的音乐,我们的内心都会泛起一丝童年的记忆~

还有最酷的就是带个遥控器哦!

这是Raspberry Pi的升级NES风格的外壳,包含了安全电源控制和重置按钮可以防止SD卡上系统的损坏。Raspberry Pi可以通过红外遥控器打开/关闭, 远程开关机是不是很爽啊!当你购买的树莓派还在吃灰,赶紧拿出来DIY一个属于自己童年记忆的NES吧!Retropie官方支持许多复古游戏操作系统,如batocera, Retropie, Lakka等。

这款称为Piboxy的树莓派外壳是Raspberry Pi最强功能性的NESPI案例。

支持的树莓派型号:

  • RASPBERRY PI 3模型B.
  • RASPBERRY PI 2 B型
  • RASPBERRY PI 1型号B +

就是下面这些:

盒子的正面看上去这样的:

原始LAN端口和USB端口

保留原始LAN端口和USB端口,可直接使用。配置Raspberry pi只需要一行命令。

改进的HDMI和音频输出

保留了原有的HDMI和音频输出连接器,并在底部增加了散热孔。

Micro SD卡插槽

为背面的Micro SD卡提供插槽。特别设计,方便您插入micro SD卡。

微型USB电源输入

我们将电源输入接口放在独立的一边,以便为您提供更多空间,让您更自由地操作。

定制特性

我们量身定制此外壳,完美匹配您的Raspberry Pi PCB,数据线和风扇是定制和专用的。
请务必注意数据线和风扇的正确方向和位置。橙色的位置是你的树莓派哦!

技术规格

产品包含:

 

  • Piboxy案例x 1
  • 电源控制板x 1
  • GPIO 2 * 6电缆x 1
  • 螺丝x 5(备用1个)
  • 型号2507风扇x 1
  • 螺丝刀x 1
  • 红外遥控器x 1
  • 使用说明书x 1

通过这个外壳,可以将你的树莓派重新复活!你还可以购买2个USB手柄,从网络上下载游戏的ROM,然后上传到树莓派的TF卡中,重启一下设备就可以开始你的复古游戏之旅了!

安装驱动的方法也是简单到爆, 在retropie的字符界面执行:

curl -sSL  piboxy.com/install | bash

等待个几分钟就可以完成配置了,当然,在安装驱动前要保证网络畅通哦!

 

 

树莓派官方镜像更新-新特性解说

树莓派官方放出了最新的镜像版本为2018-06-17, 新版本的发布一般情况下会有一些软件的更新, bug 的修复等等, 我们来一起看看这款新版本的更新更新了什么内容:
1.  添加了新的启动配置向导, 真正实现了傻瓜化的配置道路…
设置国家
设置用户的密码
选择 wifi 网络.
检查更新
安装更新
配置完成后重启.
2. 添加了推荐软件安装器
3. Bluej, Greenfoot, NodeRED, Claws Mail, VNC Viewer 已经被从镜像移除, 可以通过推荐应用进行安装.
4. Qpdfview PDF viewer 集成在系统中用来取代Xpdf, 看 PDF 更加给力了!
5. 系统原生包含Version 65.0 的Chromium浏览器, 并支持最新的 Flash 播放器,意味着如果看优酷视频也不会因为播放器不兼容而不好用了, 系统烧录完直接打开浏览器就看世界杯了.
 
6. 音量的调节可以以5%的幅度进行增减了, 并且可以选择输出设备了.
7. 网络的插件可以对以前输入过的网络密码进行记忆了, 当重连的时候会提示密码信息.方便了不少.
8. 串口和串口控制台能够在树莓派配置中进行切换.
9. Lxkeymap 键盘语言设置移除 – 替换为在 Raspberry Pi Configuration的对话设置中了.
10.  Wifi 国家及键盘语言设置对话框可以被其他应用调用了,就意味着如果其他的应用程序需要修改语言或者键盘映射类型就可以直接调用管理控制台完成设置了.

11. 新版本的PiBOTO字体包括在某些恶意应用程序中以正确的权重渲染.

12. 在重新启动时,自动重新连接到蓝牙音频设备. 你如果有蓝牙音箱的应用就非常舒服了.

13. 如果选择了”单击启用” ,请在文件管理器中”禁用单击以重命名文件”

14. “外观设置对话框”对某些QT文件进行配置更改,以匹配选定主题.

15. 改进的MIME文件类型关联

16. 多个桌面管理选项取消了鼠标中键作用.

17. 修改了树莓派Pi网站的菜单快捷方式,使得访问更加清晰,帮助就是帮助,项目就是项目.一目了然.

18. 删除了Python 2 idle 的菜单链接,看来要全面支持 python3了.

19. MAGPI PDF安装在/home /pi/MagPi 中, 更加方便查看 magpi 杂志.

20. 应用各种小调整、错误修复和外观更改

21. 蓝牙更新, 连接速度更快更有效.并且具有蓝牙4.2特性的固件,虽然我的蓝牙无法支持4.2, 但是固件升级了肯定增加很多新特性.

22.通过bthelper.serivce添加了对 SCO 配置的支持.

23. 内核方面的升级: Linux内核4.1450+

Raspberry Pi固件78FB1799 2426BB29 D9224B93CB962FEFBDC833

更多新特性等待你起来尝试! 快点去下载新镜像来武装你的树莓派吧!!!

 

树莓派3B Plus评测(对比Pi 3B)

在评测之前呢,先介绍下目前树莓派家族~

可见,3B Plus为最高端产物,之前Model B之后有个Model B Plus,性能提升,温度下降,不知道3B Plus又能如何表现呢?我们就开封两个不同版本的Pi测试一下.

软件测试条件:

  1. TF卡 16G 东芝C10
  2. 5V 2.5A 电源
  3. newifi 3 千兆路由
  4. 超七类网线
  5. SanDisk U110 SSD (JMS576 转接)
  6. Raspbian 2018-03-13 版本(根据测试,其他版本无法再Raspberry Pi 3B Plus启动.)

测试对象:

  1. Raspberry Pi Model 3B Plus
  2. Raspberry Pi Model 3B

第一节,CPU基本信息.

首先是Raspberry Pi Model 3B Plus,识别出版本号是a020d3.

其次看看Raspberry Pi Model 3B,识别出版本号是a22082

第二节,wiringPi 识别

首先是Raspberry Pi Model 3B Plus,其中wiringPi是会识别的,但是GPIO操作是会失败…

在Raspberry Pi Model 3B完全正常,毕竟出来这么久了,也很正常了…

第三节:CPU性能(使用sysbench)

单核性能测试命令: sysbench –test=cpu –cpu-max-prime=20000 –num-threads=1 run

首先是Raspberry Pi Model 3B Plus,他的单核性能如下(317.6974 秒执行完成):

多核性能测试命令: sysbench –test=cpu –cpu-max-prime=20000 –num-threads=4 run

因为调度核心也是需要资源的,所以核心调度能力也影响了具体性能,所以执行时间会略比原来的1/4长一些.

在Raspberry Pi Model 3B Plus下,他的多核性能如下(80.6170 秒执行完成):

其次是Raspberry Pi Model 3B,他的单核性能如下(370.5472 秒执行完成):

而他的多核性能如下(93.0482 秒执行完成)

第四节:内存性能 (使用sysbench)

内存性能测试命令: sysbench –test=memory –memory-total-size=50G run

首先是Raspberry Pi Model 3B Plus,他的传输性能如下(传输速度:640.86MB/sec):

其次看看Raspberry Pi Model 3B,他的传输性能如下(传输速度:551.76/sec):

第五节:GPU性能( GeeXLab 测试软件,屏幕分辨率800 * 480 )

首先看Raspberry Pi Model 3B Plus,他的GPU性能如下(传输速度:216fps,窗口大小800*480.):

再看看Raspberry Pi Model 3B,他的GPU性能如下(传输速度:220fps,窗口大小800*480.):

他们几乎没区别,可以理解成误差了.

 

第六节:无线网络性能

Raspberry Pi Model 3B Plus 无线竟然没法用…

测试Raspberry Pi Model 3B.(距离路由30cm,附近有6个2.4G的AP)

第七节:有线网络性能(iperf 测试)

使用数据生成方法来测试,就是没有实际文件读取.

先看Raspberry Pi Model 3B Plus,他的TCP性能如下.可见于宣传还是有出入的,而且看起来不是CPU能力问题,是转换问题.

然后使用USB传输数据,为了避免速度瓶颈,我选择SSD插在USB上.理论上来说,大家都占用了USB带宽,应该速率会下降,我们来看看成绩.

因为Raspberry Pi Model 3B不带千兆网,所以成绩肯定差一下,也要试试.

另外,能传递多少速率,还要跟CPU一起衡量,幸好树莓派CPU还是足够处理这么点网络资源的.

下面结果是直接传输.

因为没有达到USB瓶颈,所以就算要发送的文件在USB上,也并没看出百兆网降低(因为本身就不快)

第八节:USB性能

先看Raspberry Pi Model 3B Plus,他的USB HUB芯片换成LAN7515,看起来更高端,虽然温度范围没那么广泛.但是USB性能也基本能跑满USB 2.0了.

再看Raspberry Pi Model 3B也读取速度欠佳一些.

USB2.0的理论带宽并不是480Mbps/8=60MB/s,而是约等于48MB/s(UASP协议),或22.14MB/s(BULK协议)

第九节:功耗测试

Raspberry Pi Model 3B Plus,因为Raspberry Pi Model 3B Plus暂时还没有支持的游戏机系统等,所以还是用默认系统测试.不接外设,只接入屏幕(屏幕独立供电),没有外设,空闲时候功耗约450mA.进入CPU和GPU双烤的状态下,功耗约1.67A.这些还是没有外设下功耗,如果带着外设,功耗会更大.

Raspberry Pi Model 3B,因为Raspberry Pi Model 3B 与Raspberry Pi Model 3B Plus同样条件测试,空闲时候功耗约370mA.进入CPU和GPU双烤的状态下,功耗约1.32A.总体来说,低于Raspberry Pi Model 3B Plus.

第十节:温度测试,使用如下脚本.(室温23度)

 while true;do vcgencmd measure_temp; cat /sys/class/thermal/thermal_zone0/temp; sleep 2; done

在Raspberry Pi Model 3B Plus双烤模式下,达到了81度的CPU温度,80度的GPU温度的高温,配备散热措施势在必行,因为官方说了,50度是正常的.而且这里测试不出HUB芯片的温度,实际上温度更高.PMIC是带有温度传感器的,然而官方还没开发.最后,得益于金属外壳封装的CPU,温度才下来了吧.

在充分关机降温情况下,重新开机测量温度,结果如下:

换作Raspberry Pi Model 3B,双烤接近85度.

在充分关机降温情况下,重新开机测量温度,结果如下:

第十一节:降频

在Raspberry Pi Model 3B Plus中,测试发现,无论如何,他频率都显示为1.4GHz,通过改变设备文件,发现没有效果,初步猜测频率只是一个数字,因为根据实际体验,只要温度上去了,运行就非常之卡!而在以往的Raspberry Pi Model 3B中,75度才降频.

大家还想知道其他的,我尽量给大家评测,欢迎大家留言.

树莓派Zero WH SBCs现在提供专业焊接头

树莓派基金会(Raspberry Pi Foundation)今天宣布推出一款带有预焊接头的微型Raspberry Pi Zero W单板电脑的新变种 – Raspberry Pi Zero WH,这是第三款Raspberry Pi Zero型号,它提供了与Raspberry Pi Zero W相同的功能,并且有专业的焊接头,方便那些不知道如何在Raspberry Pi Zero W上添加焊接头的用户,也方便于通过Raspberry Pi Zero进行小项目的用户。

据Raspberry Pi基金会介绍,Raspberry Pi Zero WH可以帮助用户在PC或Mac上充分利用Debian GNU / Linux 9“Stretch”操作系统的GPIO扩展工具,让他们从一个U盘启动Rasbian或使用Linux电脑。

GPIO扩展器工具可让用户快速而简单地访问物理计算,而无需完整的树莓派设置,也无需配置任何SD卡。除了利用GPIO扩展器工具外,Raspberry Pi Zero WH的预焊接头非常适合任何原型工作。

 

 

来自 cnBeta

 

树莓派是如何免疫 Meltdown 和 Spectre 漏洞的

原文作者:Eben Upton。参与:路雪、黄小天、李泽南

过去几天,对 Meltdown 和 Spectre 安全漏洞的讨论甚嚣尘上。该漏洞影响了所有的现代英特尔处理器,Spectre 还影响了 AMD 处理器和 ARM 内核。Spectre 漏洞使得攻击者可以绕过软件检查读取当前地址空间中的任意位置数据;Meltdown 漏洞使得攻击者可以读取操作系统核地址空间的任意位置数据(用户程序通常不可访问该数据)。这两种漏洞皆通过边信道攻击(side-channel attack)利用很多现代处理器都有的性能特征(缓存和推测执行)泄漏数据。近日,树莓派创始人 Eben Upton 称树莓派不受这些漏洞的影响,并撰文详解其原因。

谷歌 Project Zero 团队发现的漏洞分别被称为“Meltdown”和“Specter”。这些漏洞允许恶意程序从其它程序的内存中窃取信息,这意味着恶意程序可以监听密码、账户信息、密钥及理论上存储在进程中的任何内容。

其中,“Meltdown”影响英特尔处理器,它打破了用户应用程序和操作系统之间最基本的隔离。这种攻击允许程序访问其它程序和操作系统的内存,这可能导致数据泄露。而“Spectre”除了能影响英特尔处理器外,还能影响 AMD 与 ARM 架构的大量处理器,这意味着除服务器与个人电脑以外,智能手机等终端设备也会受到影响,几乎所有现代计算机处理器均无法幸免。它打破了不同应用程序之间的隔离,这意味着,攻击者可以使用恶意程序来获取被隔离的私有数据。

英特尔近日表示,在未来数周内将有软件补丁发布。尽管大多数 PC 用户不会受到影响,但安全补丁会导致处理器 0-30% 的运算速度下降。

根据Eben Upton所述,大量类似树莓派的廉价计算设备可能同样也不会受到两种安全漏洞的影响,包括很多低端安卓手机。

本文介绍现代处理器设计的一些概念,使用简单的 Python 程序解释这些概念,比如:

t = a+b
u = c+d
v = e+f
w = v+g
x = h+i
y = j+k

尽管你的计算机处理器不会直接执行 Python,但这里的语句足够简单,大致相当于简单的机器指令。本文不详述过多处理器设计中的重要细节(主要是 pipelining 和寄存器重命名),它们对理解 Spectre 和 Meltdown 的工作原理不太重要。

想全面了解处理器设计和现代计算机架构,可参阅 Hennessy 和 Patterson 的经典著作《Computer Architecture: A Quantitative Approach》。

什么是标量处理器?

最简单的现代处理器每次循环执行一个指令,我们称之为标量处理器。上述示例在标量处理器上需要执行六次循环。

树莓派 1 和树莓派 Zero 中使用的 Intel 486 和 ARM1176 都是标量处理器。

什么是超标量处理器?

很明显,加速标量处理器的方式就是提高其时钟频率(clock speed)。但是,我们很快就到达处理器内部逻辑门运行的极限;因此处理器设计人员开始寻找一次性处理多件事情的方式。

有序超标量处理器检查收到的大批指令,尝试在一个 pipeline 中一次性执行多个指令,这取决于指令之间的依赖关系。依赖关系很重要:你或许认为双向超标量处理器可以将 6 个指令配对执行,如下所示:

t, u = a+b, c+d
v, w = e+f, v+g
x, y = h+i, j+k

但是这没有作用:我们必须先计算 v 再计算 w,即第三个和第四个指令无法同时执行。双向超标量处理器实际上无法找到与第三个指令配对的指令,因此,该示例将执行四个循环:

t, u = a+b, c+d
v    = e+f                   # second pipe does nothing here
w, x = v+g, h+i
y    = j+k

超标量处理器包括 Intel Pentium 以及树莓派 2 和树莓派 3 分别使用的 ARM Cortex-A7 和 Cortex-A53。树莓派 3 的时钟频率只比树莓派 2 高 33%,但性能大约是后者的 2 倍:部分原因在于 Cortex-A53 超出 Cortex-A7 的对大量指令的配对执行能力。

什么是无序处理器(out-of-order processor)?

回到我们的示例,我们可以看到即使 v 和 w 之间存在依赖关系,我们也可以找到其他独立的指令填补第二次循环中空的 pipe。无序超标量处理器能够打乱指令的顺序(同样受限于指令之间的依赖关系)以保持每个 pipeline 都处于忙碌状态。

无序处理器可以有效交换 w 和 x 的顺序:

t = a+b
u = c+d
v = e+f
x = h+i
w = v+g
y = j+k

允许执行三次循环:

t, u = a+b, c+d
v, x = e+f, h+i
w, y = v+g, j+k

无序处理器包括 Intel Pentium 2(以及大部分后续 Intel 和 AMD x86 处理器,除了一些 Atom 和 Quark 设备)和很多近期的 ARM 处理器,如 Cortex-A9、-A15、-A17、-A57。

什么是分支预测器(branch predictor)?

上述示例是直线式代码块。真正的程序不是这样的:他们还包括正向分支(用于实现条件运算,如 if 语句)、反向分支(用于实现 loop)。分支可能是无条件的(通常被采用),也可能是有条件的(是否采用取决于计算值)。

获取指令时,处理器可能遇到依赖于计算值的条件分支(而该值目前尚未计算出)。为了避免停顿,处理器必须猜测下一个要获取的指令:内存顺序(对应未采用分支)或分支目标(对应采用分支)上的下一个指令。分支预测器通过收集某一个分支之前被采用频率的相关统计数据,帮助处理器猜测该分支是否被采用。

现在分支预测器非常复杂,可以生成非常准确的预测。树莓派 3 的额外性能部分是由于 Cortex-A7 和 Cortex-A53 之间分支预测的改进。但是,攻击者也可以通过执行精心设计的一系列分支,误训练分支预测器作出较差的预测。

什么是推测?

重排序顺序指令(reordering sequential instruction)是一种恢复指令级别并行化的强大方法,但是由于处理器变得更宽(能够一次执行三个或四个指令),保证所有 pipeline 处于忙碌状态变得更难了。因此,现代处理器提高了推测能力。推测执行可以处理并不需要的指令:这样就可以保证 pipeline 处于忙碌状态,如果最后该指令没有被执行,我们只需要放弃结果就可以了。

推测执行不必要的指令(以及支持推测和重排序的基础架构)需要耗费大量能源,但是在很多情况下为了获取单线程性能的提升,这种方法是值得的。分支预测器用于选择通过程序最可能的路径,最大化推测获得收益的可能性。

为了展示推测的好处,我们可以看一下另一个示例:

t = a+b
u = t+c
v = u+d
if v:
   w = e+f
   x = w+g
   y = x+h

现在,我们具备从 t 到 u 到 v、从 w 到 x 到 y 的依赖关系,那么没有推测的双向无序处理器无法填充第二个 pipeline。它用三次循环来计算 t、u 和 v,之后处理器知道 if 语句的主体是否被执行,然后用三次循环来计算 w、x 和 y。假设 if(由一个分支指令实现)使用了一次循环,那么该示例可以执行四次(v 是零)或七次循环(v 不是零)。如果分支预测器表明 if 语句的主体很可能被执行,那么推测可以有效打乱程序,如下:

t = a+b
u = t+c
v = u+d
w_ = e+f
x_ = w_+g
y_ = x_+h
if v:
   w, x, y = w_, x_, y_

因此现在我们有了额外的指令级别的并行来保持 pipeline 繁忙:

t, w_ = a+b, e+f
u, x_ = t+c, w_+g
v, y_ = u+d, x_+h
if v:
   w, x, y = w_, x_, y_

循环计数在推测性无序处理器中变得不太明确,但是 w、x 和 y 的分支和条件更新(几乎)是空闲的,因此上述示例几近于执行三个循环。

什么是缓存?

在过去,处理器速度与内存访问速度成正比。我的 BBC Micro(2MHz 6502),可以每 2μs(微秒)执行一次指令,存储周期为 0.25μs。在接下来的 35 年中,处理器已经变的非常快,但是内存几乎没变化:树莓派 3 中的一个 Cortex-A53 可以每 0.5ns(纳秒)执行一次指令,但是可能需要 100ns 才能访问主存。

a = mem[0]
b = mem[1]

需要 200ns。

但在实践中,程序倾向于以相对可预测的方式访问内存,同时展示时间局部性(如果我访问一个定位,我很可能很快再次访问它)和空间局部性(如果我访问一个定位,我很可能很快访问附近的位置)。缓存利用这些属性来降低访问内存的平均成本。

缓存是一个小的片上内存,接近于处理器,存储最近使用的位置(及其近邻)内容的副本,以便在随后的访问中可以快速获取。借助缓存,上述示例的执行将稍微超过 100ns:

a = mem[0]    # 100ns delay, copies mem[0:15] into cache
b = mem[1]    # mem[1] is in the cache

从 Spectre 和 Meltdown 的角度来看,最重要的一点是你可以对内存访问的时间进行计时,你可以知道访问的地址是在缓存之中(短时)或者不在(长时)。

什么是边信道?

来自维基百科:

“边信道攻击是基于从密码系统的物理实现获得的信息的任何攻击,而不是算法中的蛮力或理论弱点(相较于密码分析学)。例如,定时信息、功耗、电磁泄漏甚至声音都可以提供额外的信息源,这些信息可被用来破解系统。”

Spectre 和 Meltdown 属于边信道攻击,通过定时来观察缓存中是否有另一个可访问的位置,以推断内存位置的内容,这些内容通常不应该被访问。

把它放在一起

现在让我们看看如何结合推测和缓存以允许类似 Meltdown 的攻击。考虑下面这个示例,它是一个有时读取所有非法(内核)地址的用户程序,并导致错误(崩溃):

t = a+b
u = t+c
v = u+d
if v:
   w = kern_mem[address]   # if we get here, fault
   x = w&0x100
   y = user_mem[x]

现在,假设我们可以训练分支预测器,使其相信 v 很可能是非零的,那么我们的无序双向超标量处理器就会混洗程序,像这样:

t, w_ = a+b, kern_mem[address]
u, x_ = t+c, w_&0x100
v, y_ = u+d, user_mem[x_]

if v:
   # fault
   w, x, y = w_, x_, y_      # we never get here

即使处理器总是推测性地读取内核地址,它必须推迟产生的错误,直到知道 v 是非零。从表面上看,这是安全的,因为:

  • v 是零,所以非法读取的结果不会被提交给 w
  • v 是非零,但在读取结果被提交给 w 之前发生了错误

然而,假设我们在执行代码之前刷新缓存,并排列 a、b、c、d 以使 v 实际上为零。现在第三个循环中的推测性读取为:

v, y_ = u+d, user_mem[x_]

其将依赖非法读取结果的第八位获取用户地址 0x000 或 0x100,并把地址及其近邻加载进缓存。由于 v 是零,推测性指令的结果将被摈弃,执行将继续。如果我们随后访问其中一个地址,就可以决定哪个地址在缓存之中。恭喜:你刚刚从内核地址空间读取了一个位!

真正的 Meltdown 实际上要比这更复杂(特别是,为了避免错误训练分支预测器,作者无条件地优先执行非法读取,并处理产生的异常),但原理是相同的。Spectre 使用相似方法来颠覆软件阵列边界检查。

结论

现代处理器竭尽全力保持抽象,从而成为直接访问内存的有序标量机器,而事实上,使用包括缓存、指令重排序和推测在内的大量技术来提供比简单处理器更高的性能有望成为现实。Meltdown 和 Spectre 就是当我们在抽象的语境中推理安全性,然后在抽象与现实之间遇到细微差别时会发生的事情的实例。

树莓派使用的 ARM1176、Cortex-A7 和 Cortex-A53 内核中推测的缺失使我们免于此类攻击。

译文出处

本文来自:树莓派实验室

一张树莓派全家福,你拥有多少?

Raspberry Pi(树莓派)是为学习计算机编程教育而设计,只有信用卡大小的微型电脑。自问世以来,受众多计算机发烧友和创客的追捧。从第一枚树莓派发布至今,已经有过10种不同的版本,其尺寸从存储棒大小的 Zero 系列、到 A+、再到信用卡大小的 Model B,可用于各类智能产品、可穿戴设备的 DIY。下面发一张树莓派至今(2018年)最完整的全家福,包括了不同的小版本,看看你拥有多少?

Raspberry Pi Family Photo

再来看看不同版本的配置对比,内存从1代的 256MB 到最新的3代 1GB。

P.S.树莓派官方称下一代树莓派4预计在2019年发布,届时配置将达到 CPU BCM4908 64 Bit 1.8GHz\内存 2GB,同时支持 USB3.0。

本文来自:树莓派实验室

[树莓派官方新闻] 与绿海龟和ARRIBADA主动性一起旅行

今天,一个客座教授:Alasdair Davies,ZSL伦敦保护技术专家,Shuttleworth基金会研究员Naturebytes的共同创始人,分享了Arribada Initiative的工作。该项目使用树莓派零相机模块来跟随绿海龟的旅程。从这些宏伟的生物背面拍摄的画面是不可思议的 ~
小编独白: 海龟背上一个小小的 RPi zero 带着电池,还有一个摄像头,要一个防水外壳之类,全部加起来估计要500g 了, 要找大海龟才行.

在动物跟踪世界中获得价格合理,开放和可定制的保护技术往往是有限的。过去十年来,我一直是一名环保技术专家,共同创立Naturebytes,并在ZSL伦敦动物园工作,这是一个令我感到困扰的问题。收集必要的有价值的数据是非常昂贵的,这些数据是通报政策,指定海洋保护区或查明对物种的威胁所必需的。

今年3月,我获得了一个超级机会,成为沙特尔沃思基金会的成员,突破了这些障碍,这意味着我有时间和资源集中精力解决问题。该Arribada倡议成立,10个月后,开源Arribada PS-C绿海龟标签诞生。上面的视频是在两周前在西非普林西比岛的水域拍摄的。

View image on TwitterView image on TwitterView image on Twitter

该电子标签包含一个覆盖树莓派摄像头模块的Raspberry Pi Zero W,一个PiRA电源管理板,两个锂离子电池以及一个相当不错的外壳。它与Institute IRNAS一起建造,并且有一个不错的用户友好的无线充电箱,以便海员在海上航行后更换电子标签。当标签返回到案例中的一个坞站时,我们使用resin.io来管理它,下载视频,并远程配置电子标签。

电子标签还可以配置为定时拍摄视频剪辑,这意味着我们现在可以观察海洋垃圾,塑料碎片,由于附近的建筑,污染和其他威胁而导致的海洋环境变化之前/之后的情况。

被丢弃的渔网对海龟是致命的,所以使用这个新的电子标签 – 现在终于可能了,因为Raspberry Pi Zero有助于大幅度降低成本,同时保持出色的视频质量 – 为该领域的科学家提供了真正的价值。明年,我们将发布一个优化的,经济实惠的GPS版本。

绿海龟Alasdair戴维斯树莓派Arribada倡议

为了使这一切成为可能,我们必须设计一种将电子标签贴在海龟身上的更快速的方法,所以我们想出了“加油站”技术(这就是PS名为“Arribada PS-C”的站点对于)。就像一辆一级方程式赛车参观赛车轮胎的轮胎,当海龟返回沙滩时,我们会在海滩上切换电子标签,用快速释放的底板代替全新的电子标签。

为了实施该系统,我们首先将底板粘贴到海龟壳上(用的是环氧树脂,就是我们常说的502吧~),这使得尽可能快地减少对海龟的带来的任何压力。一旦环氧树脂(520胶)干了,我们贴上电子标签。当龟已经完成了排卵周期(他们在一个季节里每次下蛋三到四次,平均每10到14天下一次),我们只需要移除底盘即可完成采集的任务。

结束语:  看来我们还在摸索如何做更好玩儿的东西的时候, 这些科学家已经用树莓派做了太多关于生物,海洋, 生态的研究的设备了. 我们还需要努力啊~

树莓派:Raspbian Stretch 桌面版本更新

树莓派基金会今天发布了第一个 Debain Stretch 树莓派桌面版本,兼容通用 PC 和 Mac 硬件。并且还更新了一下用于树莓派的 Raspbian Stretch 系统。

关于 PC 和 Mac 版本

今年初,树莓派基金会发布了桌面操作系统 PIXEL OS。而后他们看到这个桌面版本逐渐流行,并决定持续发布这一版本。事实证明这项工作异常艰巨,特别是今年从 Jessie 版本的 Debian 版本到 Stretch 版本。

但是我们已经完成了将 Raspbian Stretch 中的所有相关代码移植到 Debian 的工作,所以从今天开始为您的 PC 或 Mac 提供第一个 Debian Stretch 版本的 Raspberry Pi Desktop。

Raspbian Stretch 系统的部分新特性

1.文件管理器
在旧系统中,文件管理器一直是 LXDE 的一部分。它的功能非常丰富,几乎没有什么是不能实现的。但是再使用了数年之后,官方决定将略显复杂的它用精简版替代。

移除了很多大部分用户不喜欢的菜单选项、重整了工具栏的图标风格。支持显示更为简洁的用户界面。

2.笔记本电脑的电量显示
既然都说适配普通 PC 了,当然要考虑笔记本电脑。这个版本在工具栏加入了电量显示,如图。

如果你使用 Pi-Top,请确认配置选项中 I2C 功能是开启的。

3.一些新应用
新系统中加入了一些适用于 PC 版本的新应用。比如 PiServer 允许你搭建一个类似于 Raspbian 的操作系统并将它共享给网络上的其他树莓派客户端。

最后给出传送门,获取新系统
Raspbian 树莓派版本:
https://www.raspberrypi.org/downloads/raspbian/
Raspbian 桌面版本:
https://www.raspberrypi.org/downloads/raspberry-pi-desktop/

本文来自:树莓派实验室