Saturday, May 7, 2022

100 posts

This marks my 100th blog posting, spanning 3 decades of blogs 1999-2022 https://vzimmer.blogspot.com/

This corresponds with 3 decades of publications https://dblp.org/pid/34/5641.html.

I start spilling across another decade, though, with 4 decades of patents https://en.wikipedia.org/wiki/List_of_prolific_inventors 1999—2022 , which generally tracks my Intel career of February 1997 to this date in 2022 touching 4 decades, too, namely 1990's, 2000's, 2010's, 2020's, respectively.

These are some pretty rough blogs hosted on a free blogging platform comprised mostly of rambling thoughts, with a few repeats, and little to no editing.

This effort is definitely not part of the day job. For after hours there are already a lot of other non-day job writing activities queued up historically, including patents, papers, books.  As such, this blog has often been often log-jammed behind those. It's hard to priority boost, other than signaling events like IDF STM unleashed http://vzimmer.blogspot.com/2015/08/smi-transfer-monitor-stm-unleashed.html I posted right after delivering https://www.intel.com/content/dam/develop/external/us/en/documents/stts003-sf15-stts003-100f-820238.pdf in San Francisco in 2015. Latter took a winding path. Showed up in coreboot  https://review.coreboot.org/c/coreboot/+/33234 https://www.platformsecuritysummit.com/2018/speaker/myers/ and a variant in ppam https://www.intel.com/content/dam/www/central-libraries/us/en/documents/drtm-based-computing-whitepaper.pdf. OG info can still be found at https://www.intel.com/content/dam/develop/external/us/en/documents/a-tour-beyond-bios-launching-stm-to-monitor-smm-in-efi-developer-kit-ii-819978.pdf  and  https://cdrdv2.intel.com/v1/dl/getContent/671411 and   I guess that I should go back and update the 'released' blog posting, too since so many of the referenced sites have come and gone over time. I can easily see how much history (I was about to type 'wisdom' but I cannot claim to discern wisdom signal from information glut noise easily) is lost during our age of everything online. 

While running into a colleague during the first visit to Oregon after COVID quarantine ended I was given a recommendation to read https://www.amazon.com/Inside-Intel-Worlds-Powerful-Company/dp/0452276438. The book ended in 1997, the year I joined Intel, so I cannot claim to have experienced the environment first hand. But some aspects of the culture described did map to my early Intel years. One quote I especially liked, though, was about how to work with an long-lived culture of technology, namely:

"Respect the past, be honest about the present, be optimistic about the future"

Or something like that. The stories about Hungarian Grove, whose signature I picked up as a recent hire shown in http://vzimmer.blogspot.com/2014/02/, reminded me of the manager in Oregon with whom I interviewed in October 1996, Mil Travniceck and then offered me the job, although I hemmed and hawed a few months while still working at Compaq prior to ultimately joining Intel in February 1997. From the first edition of https://www.amazon.com/Beyond-Bios-Implementing-Extensible-Interface/dp/0974364908



Mil coached me on many things, including life at Intel. He would always have the paper notebook and record meticulous details of our 1:1's, following the style described in Grove's https://www.amazon.com/High-Output-Management-Andrew-Grove/dp/0679762884. Mil was also from eastern Europe and had a deep accent. I never asked him his origin story, though. He was pretty legendary in the Intel BIOS community at the time and I appreciate the opportunity to have been hired by, learned from, and mentored by him in those early years in DuPont, WA. I still recall the last conversation I had with him. Although I was hired by him to lead the 64-bit Merced firmware in the High End Server Division (HESD), I had since moved on to the EFI team in the Microcomputer Software Labs (MSL) of the microprocessor division MD6. Mil was always a bit skeptical of the move from legacy BIOS, and in the hallway that day he challenged me "Is this move to EFI a good idea. A move away from legacy? You know legacy, we're really good at that here at Intel." 

Those are some words I'd like to carry forward, too. In this blog, though, maybe I'm starting to repeat myself.  As I close blog posting 100, maybe the universe is telling me that this blog stream is 'done'. Or maybe it's still an opportunity to practice respect, honesty, and optimism.

fin (100)

Friday, May 6, 2022

And then there were 99

One of the more satisfying areas in tech I’ve done involved creating a component based firmware model for early, space-constrained firmware execution, namely the Pre-EFI Initialization (PEI) architecture. I created both the specification, design and initial implementation. 

The journey to creation of PEI began in the late 1990’s. At that time the Extensible Firmware Interfaced (EFI) specification was defined, but the EFI ‘sample’ code was layered on top of a PC/AT BIOS or other precursor firmware. In 2000 there was a request to have a component-based firmware model for interoperable industry enabling. 

To that end, the PEI infrastructure includes a small core that is responsible for memory management, service registration, service discovery, and executable module dispatch. PEI Modules, or “PEIM’s”, can be PE/COFF executables or a subset of the PE/COFF referred to as a “Terse Executable”, or TE Image. The input of the PEI phase entails the machine reset and the output of the phase is a set of usable system memory that can be persist into the operating system runtime, along with the cause of the restart, or ‘boot mode.’

The problem being addressed was to allow for composing executable modules from different business entities, such as the CPU vendor for host CPU initialization, board vendor for platform specific logic, reusable generic infrastructure, and 3rd party silicon providers. These executables could range from a simple platform-specific PEIM that samples a general purpose I/O and publishes a flash map up into a module responsible for link and memory initialization built from 10’s of thousands of lines of ANSI C code. Given that the system on a chip vendor exposing the memory and fabric initialization can be different than the platform vendor, the ability to segregate the logic into separate executable modules was a requirement.  Correspondingly, some of the PEIM’s may only be delivered in binary, thus requiring a strong contract between the various units of execution.  The latter contract entailed the use of PEIM-to-PEIM interfaces, or sets of interfaces named by a Globally Unique Identifier (GUID). The PEI modules are stored in a container known as a Firmware Volume (FV). Typically a system will have a least two FV’s: one for the PEI Modules and another for the larger UEFI and DXE modules.

Compounding the need for module interoperability, the PEI phase had to eXecute-In-Place (XIP) from a memory-mapped store immediately after the machine reset. During this early phase the main DRAM complex has not been initialized, and the execution path to the SPI NOR-attached storage is typically slow, so the PEI core and modules had to be optimized to minimize both code size and memory usage.  Specifically, the memory for this early phase entailed the use of the process Cache As RAM (CAR).

The usage of CAR, both for single and later parallel PEI instances, was another innovation I drove from the PEI definition. This usage of PEI allowed for writing C code for even the earliest flows, especially the notoriously complex DDR initialization sequences. Prior to CAR the original design of PEI entailed an assembly-language, register-based software model with ‘call levels’ mapped to various sets of the CPU register set. We discovered that writing code with these ‘level’s’ instead of common idioms like a call stack was untenable, as was factoring large algorithmic routines in assembly. The latter made writing portable, re-usable code difficult. Also, as IP blocks were shared between different CPU cores, not having re-usable C code compounded the software development costs.

The PEI infrastructure started with the register-based model that was ultimately abandoned and then moved to the CAR-based software model in an Intel-defined capability in 2001, and finally culminated in the UEFI Platform Initialization (PI) specification http://www.uefi.org/sites/default/files/resources/PI_Spec_1_6.pdf, volume 1, on http://www.UEFI.org. There is a corresponding open source implementation of the EFI Developer Kit II (EDKII)-based PEI core at https://github.com/tianocore/edk2/tree/master/MdeModulePkg/Core/Pei with some sample platform and silicon PEIM’s at https://github.com/tianocore/edk2-platforms/tree/devel-MinPlatform/Platform/Intel/MinPlatformPkg/PlatformInit/PlatformInitPei. The UEFI Platform Initialization (PI) specific provides guidelines on how the PEI core operates, its core services, the TE definition, and the output state of the PEI phase, or the Hand-off-blocks (HOBs).  The latter decouples the PEI core from the later state of platform initialization.

PEI has bindings to several architectures, including Itanium, IA32, x64, 32-bit ARM and Aarch64. Today the ARM licensees and ARM Ltd. for 32-bit and Aarch64 servers and client, AMD client and servers, and all of Intel products provide PEI-based silicon enabling. Given the BSD licensing of the EDKII, commercial BIOS vendors and many OEM’s have their own instance of the PEI core. Silicon providers deliver PEI modules as binaries and/or source as either licensed closed source or open source. Regrettably, most of the critical silicon specific flows for memory initialization are either in a proprietary boot ROM or binary blob, not open source. In order to accommodate the various open source host firmware communities, Intel provides a variant of a PEI Firmware Volume with a set of additional API’s called the Intel Firmware Support Package (FSP) https://www.intel.com/fsp.  The latter specification has a set of simple services that allow for coreboot https://www.apress.com/us/book/9781484200711 or EDKII https://www.intel.com/content/dam/develop/external/us/en/documents/a-tour-beyond-bios-using-the-intel-firmware-support-package-with-the-efi-developer-kit-ii-fsp2-0-820293.pdf to ingest the PEI modules. 

Given that Intel uses UEFI PI EDKII based PEI modules to validate and enable its SOC’s, having the same critical code usable by various open or closed source host firmware frameworks, from U-boot to coreboot to UEFI to custom RTOS loading argues for the business value of container strategies like Intel FSP to deliver the PEIM’s.

PEI and the PI specification are really a business-to-business technology, namely silicon to OEM.  This is distinct from the UEFI specification which has both business-to-business, Original Equipment Manufacturer (OEM) to independent hardware vendor (IHV) and operating system vendor (OSV), and business-to-consumer, such as OEM to enthusiast or writing UEFI applications.

PEI isn’t universal, though. A native U-Boot SPL or coreboot romstage may not resemble PEI, or the alternate firmware boot flow such as OpenPower and its PEI-equivalent called HostBoot, or the RISC-V Freedom Unleashed’s FSBL. Also, the business-to-business interoperability or richness of PEI are not required for certain classes of platform designs.  Given the above caveats, though, I would say PEI has been a success given the mainstream CPU vendor usage, although it isn’t the only way to perform this initialization.

And I remember working on this tech in the early 2000's. A patent attorney helping to draft some of the material said 'no one is patenting this type of material.' Some work like expired https://patents.google.com/patent/US7103529B2/en filed in 2001 cited by https://scholar.google.com/scholar?oi=bibs&hl=en&cites=8788045269349566754&as_sdt=5&as_ylo=2022&as_yhi=2022 for their work on firmware sand boxing in products 20 years later.  Perhaps this, and PEI during 2001, can fall under the theme of 'value of working on unpopular things.' Once they become popular, the jfk quote kicks in about 'success has many patents but failure is an orphan.'

I hear other strange history, namely some parties outside of Intel working on EFI in 1997 and 1996 when IBI, the EFI predecessor, didn't commence until 1998. FSP started in 2012, but some folks mention it as being 14 years old.

Helping finish and scale is valuable. No need to claim inventorship/creation. Sometimes tech companies encourage that pernicious behavior as part of the promotion process. This leads to the 'pump and dump' phenomena I mentioned earlier http://vzimmer.blogspot.com/2019/02/tiano-147-and-22-or-anniversarynext7.html. And I'm still amazed by the tech market. From the feast-to-famine on hiring to the interesting organization psychology. For example, reading https://www.warp.dev/blog/problems-with-promotion-oriented-cultures reminds me of my PDD reference in March posting http://vzimmer.blogspot.com/2022/03/ that shared similar sentiment with this May article

The dark side of 'finishing' is the loose ends.  mention the capsule/variable tweet w nikolaj and tianocore infosec.  https://www.goodreads.com/quotes/276615-another-flaw-in-the-human-character-is-that-everybody-wants, which remind me of https://twitter.com/pietrushnic/status/1514741511203794945 and discussion with https://twitter.com/vincentzimmer/status/1501826510738522113.

Another reminder of finishing was helping stand up the EDKII infosec group https://tianocore.org/security. The journey went from chasing items like https://invisiblethingslab.com/resources/misc09/Quest%20To%20The%20Core%20(public).pdf and its ilk, curating bespoke list at https://edk2-docs.gitbook.io/security-advisory/, including epic fixes like https://edk2-docs.gitbook.io/security-advisory/boot_failure_related_to_uefi_variable_usage#description. Then leveraging the notification mechanism of https://uefi.org/security mantis tickets to until https://tianocore.org/security was ready. Some of the process



 was inspired by other open source projects like Xen https://xenproject.org/developers/security-policy/. The latest was ensuring that EDKII could issue its own CVE's as a CNA https://www.ami.com/ami-and-industry-partners-drive-acceptance-of-tianocore-as-cve-numbering-authority-cna-by-the-common-vulnerabilities-and-exposures-cve-program/#:~:text=The%20acceptance%20of%20TianoCore%20as%20a%20CNA%20by%20the%20CVE,%2Frequest_id.html%23cna_participants, including learning how to curate the json for issues and being tested by Mitre prior to achieving this milestone. There are still rough edges to work out, such as commitment from community, tragedy of commons, permissive license where folks can fix and not give back, such as marc jones mentions in http://vzimmer.blogspot.com/2020/12/musings-about-firmware-cultures.html

fin (99)

Tuesday, May 3, 2022

Re-use - ideas, et al.

This is a quick note on 're-use'.  Recall how UEFI was derived from EFI, which in turn started as IBI, as mentioned in in http://vzimmer.blogspot.com/2018/10/ghosts-of.html and various histories of EFI in books http://vzimmer.blogspot.com/2021/01/books-and-computers.html and papers https://www.intel.com/content/dam/www/public/us/en/documents/research/2011-vol15-iss-1-intel-technology-journal.pdf

As a background, the original Intel Boot Initiative had its own filesystem called "IBIFS". It was a simple log-structured filesystem that made for easy parsing. But the challenge with this filesystem was how to provision boot media from other operating systems, such as Windows. In the 1990's MS-FAT was the prevailing filesystem although it was much more complex than IBIFS. The IBI/EFI team was encourage to adopt MS-FAT https://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/fatgen103.doc, along with PE/COFF https://docs.microsoft.com/en-us/windows/win32/debug/pe-format executables, as the filesystem and executable format, respectively. This was supported by having a license to use these specifications for production of EFI firmware. 

The other advantage of using MS filesystem included MS providing tools to format, check and provision disks https://www.intel.com/content/www/us/en/download/714351/uefi-shell-disk-utilities.html whose sources were derived from MS Installable Filesystem (IFS) C++ kit provided to OEM's. This was my first dive into C++-on-a-C-framework (i.e., no global constructors, etc).

And PE/COFF allowed for using Visual Studio and commercial linkers. At the time we had less luck in getting PDB format and KD wire protocol made public. We wouldn't open source the EFI Debug support protocol and nub based upon reversing that infrastructure, of course. 

Of course using ANSI C with PE/COFF was more advantageous than using non-standard art like the coreboot romcc that proved brittle to maintain long-term, although it was a clever solution prior to the advent of cache-as-ram (CAR) https://www.coreboot.org/data/yhlu/cache_as_ram_lb_09142006.pdf. Prior to CAR we had to perform unnatural acts using MMX registers and other on-processor resources (with the peak weirdness of PEI CIS 0.3 and its register 'call levels') in order to implement pre-permanent memory flows like DRAM initialization in the host firmware. 

I was reminded of this logic of re-use based upon a few recent topics, including USF https://github.com/universalscalablefirmware and EDK2 GSoC conversation. On the USF topic, there is a discussion of using a self-describing format like CBOR https://www.rfc-editor.org/rfc/rfc8949.html in lieu of the UEFI HOB's https://universalscalablefirmware.groups.io/g/discussion/files/New%20data%20format%20for%20Universal%20Payload%20Interface.pdf. Even though I helped create HOB's, I am one of the first to support moving to a more standard format, especially given the existence of work like https://github.com/intel/tinycbor. To me this is the same spirit of using known filesystem formats, etc.

When asked about this I often cite the economics of host firmware development. Imagine a 5,000 person host firmware producing community across open source participants, OEM's, ODM's, firmware vendors, first party device creators, etc.  Recall the supply chain picture from erstwhile 2015 CanSecWest prezo



As such, compare this to the application and OS producing community that is easily orders of magnitude larger. Given the developer community size disparity it is difficult to justify the R&D and validation expense for bespoke host firmware-only solutions. Given NIH sometimes in engineering communities I also quote "Good artists invent, great artists steal" Picasso  https://medium.com/ben-shoemate/what-does-it-mean-good-artists-copy-great-artists-steal-ee8fd85317a0.

And given challenges of HOB's I understand the critique of Terse Executable (TE) during gsoc thread "[edk2-discuss] GSoC Proposala replacement for the TE format (it’s buggy and most platforms mostly abandoned it over various issues)," I'm not sure where he received his telemetry on 'abandoned' for working systems. Scraping FD images from the internet? Similar to some of the weird history on those GSoC threads like "PEI and DXE in 1998" when the latter were created in early 2000's as derivatives of EFI into the earlier boot flow. This TE assertion is close to home given the TE image format signature has 'vz' as opposed to PE/COFF 'mz', as originally described in https://www.amazon.com/Beyond-Bios-Implementing-Extensible-Interface/dp/0974364908



So has the TE image been relevant in the industry? Let's do some rough back-of-the-envelope calculations. To begin, the TE image format is easily over 20 years old. In the spirit of the last blog on statistics I'd sat we started to scale Framework EDKII in 2005


Imagine in the ensuing years it's tough to calculate the number of PC's, servers, and clients that shipped using UEFI PI-based firmware, including #'s like https://www.statista.com/statistics/576151/unit-shipments-pcs-united-states/. For Windows8 UEFI was required so you can argue 100% at that point. 

To take a swag lets assume 250 million units / year over the last 17 years, yielding 4.25 billion units. Let's also assume the fabrication of the PEI phase pre-memory uses TE's and that each fv/ibb/fvrecovery has ~ 50 peim's compiled with TE. So that would yield the market has shipped 50 * 4.25  =  212.5 billion TE images into the market. And if platform updated 5 times during life, 1 trillion TE's may have been produced. So even if we go 'Beyond TE', 1T has been a good run. And I look forward to the next wave of firmware technologists' proposals - the critique is a pre-condition to invention/innovation - but the next wave needs to close the loop by proposing, documenting, coding, delivering, validating, and scaling their alternative. 

I still recall meeting one of the original developers of MS-FAT in Windows at a driver dev-con in the early 2000's in Redmond. He mentioned that 'writing the code was only 10% of the effort.' The latter class of activities were the remaining 90% for a professional software engineer. Or the old trope 'the last 10% of a project takes 90% of the time.'

Finally, these cardinality of the produced TE image set calculations remind me of a colleague at Cornell during my undergrad. He worked part-time in the astrophysics department, whereas I spent time modeling and mocking up particle beams for a professor who did microwave and plasma research as part of SDI https://en.wikipedia.org/wiki/Strategic_Defense_Initiative. My friend noted that the astrophysics researchers there would reckon calculations plus or minus a couple orders of magnitude. I won't argue host firmware is of the same scale but it does note the challenges in precision in various domains.

Sometimes folks believe in bespoke and not studying the past arc of history in tech. I recommend spending some time on bitsavers.org, for example, to folks. But it reminds me of the advice given to me by a retired manager - "Sometimes you see someone put their hand in the chipper. You can say 'there's a chipper, there's a chipper', but they ignore you. Once they are beyond their elbow you need to jump in, at least." Or the dual of child rearing, which was "Sometimes the young child needs to bump her knees on the coffee table while learning to walk."  For those not in the PNW a chipper is https://www.familyhandyman.com/list/best-wood-chippers/.

BTW
I just sampled some of the OCP Security https://www.opencompute.org/wiki/Security tech talks. Work to avoid e-waste such as ownership transfer https://docs.google.com/document/d/1oANhjvv_R7E5n8w1RroN8l8-0jdYlfdQDp_3RqGV66k/edit# for servers presented by Google datacenter engineer nicely complements their work on Chromebooks with their developer mode https://www.chromium.org/chromium-os/chromiumos-design-docs/developer-mode/ and other art to allow for unsupported devices to be over-flashed by community firmware for continued life & usage. Nice to see work to avoid aged hardware from only have a fate of visiting the refuse bin/salvage yard.

It might be a stretch to analogize re-use of ideas in this blog post and re-use of hardware in the circular economy from this OCP talk. The former stands on the shoulders of giants and leverages information ecosystems (knowledge, tools, remediated flaws) whereas the latter leverages extant hardware for appropriate use-cases. But interesting stuff nevertheless.

fin (98)



Tuesday, April 12, 2022

1000. Lies, #$(@ lies, and statistics

It was with some regret that I learned a colleague I admire is retiring. After our last meeting he shared the following picture from osfc 2018 that he took while we were in Germany.

 


 

https://2018.osfc.io/speakers/vincent-zimmer.html with the prezo https://2018.osfc.io/uploads/talk/paper/1/OSFC_Keynote-005.pdf

Speaking of osfc, my most recent osfc prezo  https://talks.osfc.io/osfc2021/talk/HYZL3U/

 


 

mentions some upcoming books https://www.amazon.com/Firmware-Development-Specialized-Systemic-Knowledge/dp/1484279735/ and https://www.amazon.com/System-Firmware-Essential-Embedded-Solutions/dp/1484279387 

Speaking of books and the arc of history, my co-author on the UEFI Shell and Beyond Bios books Mike Rothman shared w/ me his recent fan-driven wikipedia page https://en.wikipedia.org/wiki/M._A._Rothman. On that page I noticed the assertion "He holds over 1000 patents worldwide." This made me curious about how the page author ascertained that number.

As folks can see from the link, Mike has elected to spend his after-hours on writing sci-fi and fantasy books, whereas my spare hours continue on tech books, patents, etc. Given our split in paths, I was curious how close I was to 1000 given his claim above.

To begin my search, I found the old-ish https://goodip.io/iq/assignee/intel-corp where I note that neither Mike or I are listed. Most of the folks there are microarchitecture and process technology. And given it's an old page, I suspect their #'s are much larger and wouldn't imply Mike or I entering that top 10 international.

For the next examination, from my earlier analysis http://vzimmer.blogspot.com/2021/07/patents-and-co-inventors.html I note that Rothman was in the high 200's on US patent grants (https://en.wikipedia.org/wiki/List_of_prolific_inventors at 284 now). 

Given that data, so how does the 1000 number come about?

Perhaps there is some confusion about espacenet, namely the link cited in the above wikipedia page https://worldwide.espacenet.com/searchResults?DB=EPODOC&IN=%22Michael+Rothman%22+or+%22Rothman+Michael%22 which lists 737 results for Mike. Regrettably 737 includes US applications and issued, so it's not so easy to glean international issued/granted from that #.

For example, my variant of above link is https://worldwide.espacenet.com/searchResults?DB=EPODOC&IN=vincent%20zimmer&ST=advanced&compact=false&locale=en_EP and lists 1265 items. I don't believe that's correct for me, either, for global granted patents.

So what is the truth?

I finally did some digging on my list and came up with the following #'s from my granted patents over the past 25+ years -

All patents (US + world) - 1037 as of 4/11/2022.

This means 459 US patents granted and 578 non-US patents granted.

The details of US and non-US grant numbers include:


11,074,085

11,249,748

10,761,951

11,061,692

10,929,146

10,852,988

10,649,918

10,382,489

10,251,060

10,564,986

6,633,964

10,262,140

10,031,993

7,392,371

ZL02825773.1

1485797

1485797

1485797

1068972

1485797

6,848,046

ZL02809670.3

10296798

1075718

10-0729793

7,260,848

7,103,529

ZL02819232.X

10297273

10-0692346

10,601,955

10,540,193

10,180,800

10,768,863

3382593

602018012850.6

3382593

3382593

3382593

10,546,156

10,474,473

10,503,523

10,394,295

10,552,613

6,978,018

7,243,353

6,775,728

ZL02822826.X

60217394.9

1449077

1449077

1449077

7,200,758

ZL200380105401.3

10393456

2410819

244483

4855679

5551130

I277904

7,127,579

7,254,676

ZL200380103263.5

2409747

4220469

I242746

7,143,277

7,543,048

7,974,416

9,026,773

10,275,598

ZL200380104038.3

2411989

2421612

I238357

7,320,052

8,130,960

8,842,837

6,996,641

6,993,608

7,082,523

7,263,605

8,108,665

ZL200380105211.1

10393859

2411498

I237790

7,080,246

7,421,431

7,653,808

7,583,591

7,231,512

7,681,027

7,222,258

7,284,136

7,107,440

7,549,055

8,010,799

8,364,974

9,710,647

7,134,125

7,395,420

8,281,116

7,082,509

7,136,994

7,107,441

7,174,451

7,051,215

ZL200480016970.5

602004041688.6

1634170

1634170

1634170

I247489

7,934,209

7,318,171

ZL200480005327.2

2414318

1077117

222852

I261748

7,444,667

7,222,339

7,328,340

ZL200480018100.1

7,475,233

ZL03156077.6

7,188,238

7,200,772

7,587,750

7,134,007

ZL200480018034.8

602004042829.9

1636696

1636696

4242420

1636696

7,730,205

7,478,141

7,082,527

7,483,974

7,146,512

7,107,388

7,159,105

7,243,167

7,478,176

7,380,136

7,434,231

7,562,230

8,127,150

ZL200480037167.X

121324

I280022

7,299,354

7,370,324

7,162,626

7,275,152

7,165,170

7,181,610

7,539,854

7,194,612

7,174,447

7,751,584

7,127,600

7,206,931

7,185,188

8,001,348

8,161,258

8,583,888

7,930,378

7,222,062

7,143,280

7,174,471

I265405

7,353,339

ZL200480038646.3

I292095

7,207,039

7,448,030

7,162,629

7,496,961

7,334,120

7,120,778

7,321,990

7,185,190

7,302,593

7,281,243

7,263,579

7,984,237

7,350,072

7,203,808

7,398,401

7,318,150

7,552,419

7,234,054

7,363,482

7,853,742

ZL200580013217.5

602005041610.2

1749266

1749266

4601665

1749266

7,421,533

7,739,527

7,269,768

7,048,877

7,290,178

7,340,616

7,788,460

7,370,188

7,543,166

8,943,346

7,310,725

7,364,087

7,243,222

7,246,224

7,281,124

7,653,727

ZL200580006193.0

602005047030.1

1727625

1727625

4664966

10-0855803

ZL200580006194.5

1728376

1728376

1728376

4579969

10-0831437

7,117,083

7,426,542

7,406,591

7,310,742

7,290,166

7,698,487

8,082,470

7,594,124

8,225,101

8,751,813

7,558,966

7,430,683

7,757,231

5042848

10-0984203

7,472,208

7,840,736

7,506,149

8,245,019

ZL200580017448.3

602005028329.3

1761837

1761837

4774049

7,711,965

9,135,470

9,654,464

9,942,219

ZL200580033440.6

602005047110.3

1805572

1805572

I314684

7,826,835

ZL200510132102.X

602005048479.5

1825703

1825703

4575958

10-1018213

7,181,293

7,305,544

8,745,364

7,366,891

7,383,450

7,373,551

7,694,298

ZL200580042442.1

4579298

10-0914077

7,281,127

7,752,428

7,660,913

7,409,575

8,862,785

9,891,929

8,286,169

7,451,301

7,581,037

7,293,184

7,278,006

ZL200580044889.2

602005040792.8

1839140

1839140

4802197

5167387

10-0907722

1839140

7,434,102

7,673,128

7,412,619

7,543,179

ZL200780009846.X

112007000688

I333144

7,617,400

7,398,382

602006049588.9

1856886

1856886

1856886

ZL200680005313.X

7,542,467

8,024,477

7,716,464

7,352,621

8,806,224

7,493,460

ZL200680032817.0

602006006846.8

1922617

1922617

7,373,537

7,441,112

8,046,576

8,862,862

9,465,623

7,543,287

ZL200680018961.9

4796625

10-0937062

7,734,934

7,580,701

8,032,117

7,870,373

7,774,846

7,516,336

8,195,968

8,595,526

9,158,362

7,478,196

8,327,192

7,647,474

ZL200680035585.4

602006024610.2

1934746

1934746

1934746

1934746

1934746

502011902004677

1934746

1934746

8,656,487

ZL200680035170.7

7,640,553

7,523,323

8,407,489

8,631,259

ZL200680033757.4

ZL201110308278.1

602006003912.3

1924909

1924909

1166389

7,480,791

ZL200680033756.X

7,793,127

7,584,374

7,634,629

ZL200680042498.1

I336039

7,631,206

7,461,299

7,725,747

7,555,641

7,660,977

ZL200710126426.1

10-1048914

7,930,728

7,370,175

7,716,421

I341464

ZL200780020629.0

7,889,685

7,840,398

8,368,711

8,786,622

9,448,828

7,818,558

8,082,431

ZL200710192949.6

5001773

7,886,190

7,685,376

7,721,080

7,406,560

8,266,238

7,765,440

8,510,859

ZL200710153796.4

9,235,707

602007038961.5

1906333

1906333

4775744

10-0989977

8,302,082

7,900,058

7,668,945

8,312,509

ZL200710170164.9

602007033774.7

1918815

1918815

4793733

5512610

10-0938305

1918815

2906661

2442348

10-0966398

1034453

7,594,077

7,987,458

7,941,624

9,384,039

7,673,126

7,788,475

7,945,841

7,779,244

7,822,960

7,596,714

7,689,817

7,627,718

ZL200710300216.X

8,688,965

ZL200810087275.8

7,987,348

ZL200810100361.8

ZL200810144638.7

8,984,265

ZL201410090626.6

602008052166.4

1975836

1975836

1975836

1975836

9,158,920

ZL200810127383.3

2017765

602008057777.5

2017765

2017765

2017765

7,747,846

7,761,701

8,452,950

7,890,811

7,882,341

7,818,560

8,645,965

10,585,702

ZL200810190343.3

7,900,033

7,987,349

9,047,491

7,827,371

8,458,726

7,793,090

7,873,846

8,402,262

8,185,886

8,391,913

8,649,818

7,831,858

7,900,084

8,583,908

7,962,738

ZL200810183979.5

5376928

8,839,356

ZL200810182279.4

2065800

602008054660.8

2065800

2065800

4896946

5410500

7,917,689

8,522,236

7,802,042

8,001,308

8,214,573

8,327,415

8,539,200

7,779,305

8,516,092

8,635,664

8,103,908

8,549,356

8,499,202

9,047,468

8,161,299

8,527,787

ZL200810188957.8

ZL201210028149.1

5636559

7,984,286

8,127,312

8,321,931

8,078,862

8,356,168

8,255,721

7,865,775

8,561,138

2207122

2207122

2207122

2207122

2207122

5350528

10-1208257

8,201,239

8,909,940

8,631,186

8,990,486

602009034009.3

2141625

2141625

ZL200810188988.3

2479666

2479666

2479666

2479666

2479666

10-1134816

8,910,169

ZL200910246861.7

2169514

602009056487.0

2169514

2169514

2169514

5532271

10-1114648

8,694,761

8,296,553

ZL200911000115.6

2189901

602009058867.2

2189901

2189901

2189901

5368947

8,296,528

8,086,839

7,953,916

8,463,972

8,832,454

ZL200910217300.4

2204755

2461264

2461264

2204755

2461264

2461264

2461264

2204755

2204755

5198422

10-1410078

10-1556818

8,151,027

602010032793.0

2239662

2239662

5497923

8,219,851

8,806,231

ZL201010621015.1

9,489,029

602010004816.0

2367091

2367091

5026579

10-1245442

2367091

9,015,268

ZL201110120401.7

5370897

10-1264521

ZL201180047970.1

8,539,245

2011285762

ZL201180048112.9

2601588

2601588

2601588

2601588

2601588

5705983

10-1518207

I467383

9,063,836

2011286271

ZL201180036850.1

2598997

2598997

2598997

2598997

2598997

5512892

10-1473119

I537967

8,522,066

9,098,300

ZL201110188572.3

5307196

10-1306395

8,312,258

ZL201180045466.8

602011036292.5

2596423

2596423

5540155

10-1407835

2596423

I482084

8,429,387

9,015,455

ZL201280037871.X

2729896

602012060184.1

2729896

2729896

2729896

5767751

10-1626397

9,367,327

I542992

8,370,667

ZL201180062019.3

5705996

10-1524961

I497289

8,499,141

ZL201180047390.2

602011021494.2

2601587

2601587

5607250

10-1370176

I521441

8,566,613

ZL201110153786.7

2395449

2395449

2395449

2395449

2395449

5301609

10-1312832

2510952

176870

8,479,017

2011271088

ZL201110165535.0

2397959

2397959

2397959

2397959

2397959

5394441

10-1276409

8,181,176

ZL201110179065.3

602011024271.7

2397943

2397943

5345652

10-1331311

8,739,177

ZL201110165550.5

602011002306.3

2398199

2398199

5275407

10-1444984

2398199

8,428,929

8,965,749

ZL201180046973.3

602011021514.0

2622533

2622533

5715256

5860504

10-1453266

I530872

8,977,871

ZL201080070815.7

ZL201610451692.0

5701399

10-1510028

8,607,040

2011329330

ZL201180055215.8

2641168

2641168

2641168

2641168

2641168

5606633

10-1512252

I524205

8,688,812

2011305211

ZL201180002816.2

5497190

10-1366913

I454924

8,386,618

ZL201180045848.0

2619679

602011059899.6

2619679

2619679

2619679

5657799

10-1465923

I482091

8,590,040

I499977

I564801

ZL201180075088.8

2761468

2761468

2761468

2761468

I468938

ZL201180075454.X

9,958,926

ZL201180074963.0

I512492

9,298,607

ZL201180075333.5

I566966

9,900,448

ZL201180076030.5

10-1646425

ZL201180076131.2

2798562

2798562

2798562

2798562

2798562

I476630

I515602

I599908

9,210,148

9,686,281

ZL201180049417.1

2798559

2798559

2798559

2798559

2798559

10-1359841

8,892,858

ZL201180075848.5

2795989

2795989

2795989

2795989

5890037

I477169

9,686,364

ZL201280071805.4

2831792

602012073987.8

2831792

2831792

2831792

10-1643072

9,251,347

ZL201280072136.2

2831788

2831788

2831788

2831788

5951879

10-1701014

9,507,937

9,262,178

2013215466

ZL201380007287.4

5893173

10-1609385

9,292,463

10,002,002

ZL201280075426.2

8,832,494

9,075,751

ZL201380004524.1

10-1618535

ZL201280075397.X

9,141,802

9,589,138

6096301

10-1775800

9,824,226

10,762,216

9,098,282

9,460,483

6105077

I502541

5,940,587

69838343.5

1038227

1038227

1038227

73695

ZL201380072535.3

6017706

10-1733903

9,311,177

602013022122.7

2959417

2959417

2959417

9,323,541

10,205,750

ZL201480008747.X

2973147

602014043689.7

2973147

2973147

2973147

ZL201380081151.8

10-1891420

9,832,172

ZL201380073058.2

2973139

2973139

2973139

2973139

2973139

6050528

10-1759411

9,223,983

9,563,775

2974123

602013061098.3

2974123

2974123

2974123

9,378,371

9,600,671

ZL201380079814.2

9,495,177

9,880,859

ZL201510093595.4

9,384,352

9,524,219

ZL201380079912.6

9,411,601

9,912,474

ZL201380080001.5

3063620

3063620

3063620

3063620

3063620

6272991

10-1861724

9,996,142

ZL201380077715.0

9,286,097

10-1915695

10,310,865

11,068,276

9,626,196

10,228,954

ZL201580009451.4

6316978

10-1891423

ZL201480076013.5

3120238

3120238

3120238

3120238

3120238

6466476

10-1920980

10,289,425

10,684,865

9,413,765

9,781,117

ZL201580010585.8

3123337

3123337

3123337

3123337

3123337

10-1823888

I556130

10,146,657

ZL201580010934.6

6297715

10-1931007

10,049,216

ZL201580003846.3

10,025,934

10-1802800

I601070

9,645,864

11,182,172

ZL201580003799.2

6152493

10-1826769

10-2219122

9,773,110

10,140,449

9,594,927

10,366,237

ZL201580042636.5

I546699

9,785,801

10,831,934

ZL201580028293.7

10-2244645

I570589

9,703,346

3158452

3158452

3158452

3158452

3158452

ZL201480079261.5

3161710

3161710

3161710

3161710

3161710

6481900

10-1881788

9,870,475

ZL201480079192.8

3161657

3161657

3161657

3161657

3161657

6396502

10-1896373

10,169,047

9,740,492

10,331,453

ZL201680011606.2

3274895

602016058368.2

3274895

3274895

3274895

9,589,155

ZL201580044960.0

I582637

ZL201580061649.7

3231129

3231129

3231129

3231129

3231129

10,389,788

9,817,673

10,592,254

10,185,547

ZL201680030406.1

9,525,675

ZL201580076833.9

10,372,491

9,626,227

10,067,805

ZL201680012778.1

3274827

3274827

3274827

3274827

3274827

6689873

10,430,589

ZL201680011476.2

10,496,974

ZL201680009786.0

10,747,884

9,836,307

ZL201680030403.8

3314416

3314416

3314416

3314416

3314416

9,612,887

10,445,154

6768710

ZL201580080108.9

10,664,573

10,223,187

9,858,412

ZL201680030338.9

3314444

3314444

3314444

3314444

3314444

ZL201580082636.8

9,691,278

9,998,284

10,218,508

9,769,169

10,069,826

10,432,627

9,798,641

ZL201611053849.0

6363153

10,061,424

9,977,682

10,776,524

10,496,388

10,158,671

10,776,283

10,635,607

10,581,815

10,592,670

Issuing bodies/countries beyond US above include Europe, WIPO, Japan, South Korea, China, Malaysia, Germany, India, Taiwan, Netherlands, Ireland, Poland, United Kingdom, Mexico, France, Singapore, Spain, Sweden, Finland, Italy, Australia, Brazil, ...

And another rub in my accounting is that some patents are done w/ McAfee, although the # is small.

Since my global patent isssued # is now greater than 1000, maybe I'll avoid doing this analysis again since I doubt I'll ever bump into another big milestone like 1500 or 2000.  

And for Mike's 1000 issued, given I am > 150 ahead of him on US grants and he only has a handful of non-joint filings, I suspect he's not at 1000 global issue yet, especially since I have barely tipped that #. But I don't think I have the energy to dig into Mike's actual #. Maybe Mike's wikipedia fanbois can do that recon. Given this twisted path of analysis, thus the blog title https://en.wikipedia.org/wiki/Lies,_damned_lies,_and_statistics.

fin (97)