泰晓科技 -- 聚焦 Linux - 追本溯源,见微知著!

泰晓资讯·12月 / 第一期 / 2015

Chen Jie 创作于 2015/12/06

Swift is being released under an Apache 2.0 license … The project will be hosted on GitHub and will include the compiler, the LLDB debugger, the REPL command-line environment, the standard and core libraries, and code from supporting projects.

Officially supported ports of Swift currently include those for Apple’s platforms and also Linux

So instead of getting a big Swift 3.0 info dump at WWDC 2016 in the summer and then digging into the Xcode betas and adapting, developers can already find an “evolution document” on the Swift site …

One of Apple’s goals for Swift 3.0 is source compatibility going forward so that Swift code that is written may need to be recompiled as the language continues to evolve, but it will need to be rewritten or changed less frequently or not at all.

Swift 的源代码位于:github.com/apple;官网为 swift.org 以及开发博客Ubuntu Linux 上预编译好的环境

Swift 核心库包括 Foundation、libdispatch、XCTest。除上述提及,一同开源的还有 Swift 包管理器,但尚处早期阶段。

Swift 是一种编译型、特性丰富的高级语言,由 LLVM 创建者 Chris Lattner 主持设计 - 作为编译技术天才所设计的语言,有着颇高期望:

“We think [Swift] is how really everyone should be programming for the next 20 years,” Federighi told Ars. “We think it’s the next major programming language.“

“A number of developers, including enterprise developers like IBM, very early on as they began developing their mobile applications in Swift, really wanted to be able to take the talents that their developers were developing and even some of the code and be able to deploy it in the cloud, for instance,” Federighi continued. “We thought the best way [to enable that], ultimately, was open source.”

  • Anandtech:与 Chipworks 合作后弄清了 Apple A9A9X 部分规格。


… some further testing, and further discussions with Chipworks, both our performance analysis and their die analysis far more strongly point to a 4MB cache.

What I believe we’re looking at here is that Apple has gone from an inclusive cache on A7 and A8 to a victim cache on A9.

So like several other aspects of Apple’s SoC design, A9 is very much an Intel-style “tock” on the microarchitecture side, with Apple having made significant changes to much more than just the CPU.


Chipworks’ shot makes it clear that there are 12 GPU cores, twice the number found in the A9.

On that note, it’s worth pointing out that while Apple doesn’t talk about their chip design and licensing process, it’s highly likely that Apple has been doing their own layout/synthesis work for their PowerVR GPUs

Moving on, the memory controller of the A9X is a 128-bit LPDDR4 configuration. With twice as many GPU cores, Apple needs twice as much memory bandwidth to maintain the same bandwidth-to-core ratio, so like the past X-series tablet SoCs, A9X implements a 128-bit bus.

After introducing the L3 cache with the A7 in 2013, Apple has eliminated it from the A9X entirely. The only cache to be found on A9X are the L1 and L2 caches for the CPU and GPU respectively, along with some even smaller amounts for cache for various other functional blocks.

The big question right now is why Apple would do this. … As it stands there’s no one obvious reason, and it’s likely that all 3 factors – die size, LPDDR4, and power needs – all played a part here, with only those within the halls of One Infinite Loop knowing for sure.

However I will add that since Apple has removed the L3 cache, the GPU L2 cache must be sizable. Imagination’s tile based deferred rendering technology needs an on-chip cache to hold tiles in to work on, and while they don’t need an entire frame’s worth of cache (which on iPad Pro would be over 21MB), they do need enough cache to hold a single tile. It’s much harder to estimate GPU L2 cache size from a die shot (especially with Apple’s asymmetrical design), but I wouldn’t be surprised of A9X’s GPU L2 cache is greater than A9’s or A8X’s.

晶片照片、针对测试再结合理论,抛问题来思考,Anandtech 之分析颇有以小见大,知微见著风范,让人叹服。静候其 iPad Pro 评测报告到来。

1Ghz, Single-core CPU; 512MB RAM; Mini HDMI and USB On-The-Go ports; Micro USB power; HAT-compatible 40-pin header; Composite video and reset headers


Micro-threaded compressor - Dictionary updating, match finding, and parsing all in parallel. A lock-free approach is used to communicate between parser threads and match finder threads. The usual approach to threading a compressor blocks up the input and sacrifices ratio, which is not necessary with the correct design.

Interleaved coding - Huffman and binary arithmetic coding interleaved into the same bitstream. The compressor batches all symbols and simulates the entropy decoding steps the decompressor will use in order to figure out how to interleave the output bitstream.

Best of X arrivals parsing (called “extreme” parsing in the code) - This was obvious after figuring out how to construct a parse graph.

现就职于 Value 的 Rich Geldreich 于 2010 首次发布了 LZHAM alpha 版,试图作为下一代视频游戏的压缩算法。正如名字所隐含的那样,LZHAM 试图提供接近 LZMA 的压缩率,但解压很快。

Rich Geldreich 博客持续更新开发点滴,欢迎围观。其中「Quick Survey of the Lossless Decompression Pareto Frontier」提出“压缩率 vs 解压吞吐吞量”指标更有意义。同一个文件,压缩后体积越小则压缩率越高。而同一硬件平台上,解压时单位时间内产生的数据量,则为解压吞吐量。

Future Directions in Lossless Compression」依据上面的指标,标明 LZHAM 的预期值。

A graph submission API for lossless data compression」提出压缩过程非黑盒 - 即增加 push 和 pop APIs,让调用者尝试和比较不同的压缩路径,取得最佳路径 - 从而有效提升压缩率。

So far they have hacked together an implementation to mirror the current desktop using GStreamer. However, they are looking at doing an implementation where they hook into the DRM interfaces to avoid having to patch every compositor with support.

An initial idea was to do everything in user-space by redirecting the ioctls to user-space, but concerns were raised over implementing too much and allowing proprietary graphics drivers to be implemented in user-space atop any new interfaces from this work.

Read Album:

Read Related:

Read Latest: