Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

repoman27

macrumors 6502
Original poster
May 13, 2011
485
167
I am trying to learn more about the Q and R series SSDs that Apple uses in the M1 Macs. I have been looking specifically at the properties of the AppleANS3NVMeController object in the I/O Registry (ioreg). I already have this information for most of the entry level configurations, but I don't currently have access to any M1 Pro/Max/Ultra systems with the larger 4 or 8 TB SSD options (or an M1 with the 2 TB option). I was hoping someone with one of the big drives might be so kind as to help me out by issuing the following command in Terminal and reporting back with the output:

ioreg -lrw0 -d2 -c AppleANS3NVMeController

The output should look something like this:

Code:
AppleANS3NVMeController  <class AppleANS3NVMeController, id 0x10000033c, registered, matched, active, busy 0 (73 ms), retain 20>
{
  "IOMatchedAtBoot" = Yes
  "IOPolledInterface" = "IONVMeControllerPolledAdapter is not serializable"
  "IOMinimumSaturationByteCount" = 8388608
  "IOMinimumSegmentAlignmentByteCount" = 4096
  "IOMaximumByteCountWrite" = 1048576
  "Physical Interconnect" = "Apple Fabric"
  "Physical Interconnect Location" = "Internal"
  "Vendor Name" = "Apple"
  "Serial Number" = "XXXXXXXXXXXXXXXX"
  "IOMaximumSegmentByteCountWrite" = 4096
  "IOMaximumByteCountRead" = 1048576
  "Model Number" = "APPLE SSD AP0512R"
  "IOPropertyMatch" = {"role"="ANS2"}
  "AppleNANDStatus" = "Ready"
  "IOCommandPoolSize" = 253
  "Chipset Name" = "SSD Controller"
  "IOPersonalityPublisher" = "com.apple.iokit.IONVMeFamily"
  "IOPowerManagement" = {"DevicePowerState"=1,"CurrentPowerState"=1,"CapabilityFlags"=32768,"MaxPowerState"=1}
  "Firmware Revision" = "387.100."
  "NVMe Revision Supported" = "1.10"
  "CFBundleIdentifier" = "com.apple.iokit.IONVMeFamily"
  "IOMaximumSegmentCountWrite" = 256
  "IOProviderClass" = "RTBuddyService"
  "IOReportLegendPublic" = Yes
  "IOMaximumSegmentByteCountRead" = 4096
  "IOClass" = "AppleANS3NVMeController"
  "CFBundleIdentifierKernel" = "com.apple.iokit.IONVMeFamily"
  "IOPlatformPanicAction" = 0
  "IOMaximumSegmentCountRead" = 256
  "DeviceOpenedByEventSystem" = Yes
  "IOReportLegend" = ({"IOReportChannels"=((5644784279684675442,8590065666,"NVMe Power States")),"IOReportGroupName"="NVMe","IOReportChannelInfo"={"IOReportChannelUnit"=72058115876454424}})
  "IOMatchCategory" = "IODefaultMatchCategory"
  "Controller Characteristics" = {"default-bits-per-cell"=3,"firmware-version"="387.100.","controller-unique-id"="XXXXXXXXXXXXXXXX    ","capacity"=512000000000,"pages-per-block-mlc"=1152,"pages-in-read-verify"=384,"sec-per-full-band-slc"=52224,"pages-per-block0"=0,"cell-type"=3,"bytes-per-sec-meta"=16,"Preferred IO Size"=1048576,"program-scheme"=0,"bus-to-msp"=(0,0,1,1,2,2,3,3),"num-dip"=34,"nand-marketing-name"="itlc_3d_g4_2p_256               ","package_blocks_at_EOL"=31110,"sec-per-full-band"=156672,"cau-per-die"=2,"page-size"=16384,"pages-per-block-slc"=384,"sec-per-page"=4,"nand-device-desc"=3248925,"num-bus"=8,"block-pairing-scheme"=0,"chip-id"="S5E","Encryption Type"="AES-XTS","vendor-name"="Toshiba         ","blocks-per-cau"=974,"dies-per-bus"=(3,2,2,2,2,2,2,2),"msp-version"="2.8.10.2.0      ","manufacturer-id"=<983c98b3f6e30000>}
  "IOProbeScore" = 300000
}

Please take a moment to X-out the "Serial Number" and "controller-unique-id" properties if you do post your output here so you're not sharing any information that is specific to your personal device.

As you can see, a lot of details about these drives are being reported by ioreg. I hope to put together a post that explains what all of these properties mean so folks can better understand how Apple's SSDs work, and how they differ from most other SSDs available on the market.

Thank you for your assistance!
 
MacBook Pro 16" Apple M1 Max 4TB disk:

AppleANS3NVMeController <class AppleANS3NVMeController, id 0x1000003b4, registered, matched, active, busy 0 (51 ms), retain 20>

| {

| "IOMatchedAtBoot" = Yes

| "IOPolledInterface" = "IONVMeControllerPolledAdapter is not serializable"

| "IOMinimumSaturationByteCount" = 8388608

| "IOMinimumSegmentAlignmentByteCount" = 4096

| "IOMaximumByteCountWrite" = 1048576

| "Physical Interconnect" = "Apple Fabric"

| "Physical Interconnect Location" = "Internal"

| "Vendor Name" = "Apple"

| "Serial Number" = “XXXXXXXXXX”

| "IOMaximumSegmentByteCountWrite" = 4096

| "IOMaximumByteCountRead" = 1048576

| "Model Number" = "APPLE SSD AP4096R"

| "IOPropertyMatch" = {"role"="ANS2"}

| "AppleNANDStatus" = "Ready"

| "IOCommandPoolSize" = 253

| "Chipset Name" = "SSD Controller"

| "IOPersonalityPublisher" = "com.apple.iokit.IONVMeFamily"

| "IOPowerManagement" = {"DevicePowerState"=1,"CurrentPowerState"=1,"CapabilityFlags"=32768,"MaxPowerState"=1}

| "Firmware Revision" = "387.100."

| "NVMe Revision Supported" = "1.10"

| "CFBundleIdentifier" = "com.apple.iokit.IONVMeFamily"

| "IOMaximumSegmentCountWrite" = 256

| "IOProviderClass" = "RTBuddyService"

| "IOReportLegendPublic" = Yes

| "IOMaximumSegmentByteCountRead" = 4096

| "IOClass" = "AppleANS3NVMeController"

| "CFBundleIdentifierKernel" = "com.apple.iokit.IONVMeFamily"

| "IOPlatformPanicAction" = 0

| "IOMaximumSegmentCountRead" = 256

| "DeviceOpenedByEventSystem" = Yes

| "IOReportLegend" = ({"IOReportChannels"=((5644784279684675442,8590065666,"NVMe Power States")),"IOReportGroupName"="NVMe","IOReportChannelInfo"={"IOReportChannelUnit"=72058115876454424}})

| "IOMatchCategory" = "IODefaultMatchCategory"

| "Controller Characteristics" = {"default-bits-per-cell"=3,"firmware-version"="387.100.","controller-unique-id”=“XXXXXXXXXX”,”capacity"=4096000000000,"pages-per-block-mlc"=1152,"pages-in-read-verify"=384,"sec-per-full-band-slc"=393216,"pages-per-block0"=0,"cell-type"=3,"bytes-per-sec-meta"=16,"Preferred IO Size"=1048576,"program-scheme"=0,"bus-to-msp"=(0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7),"num-dip"=256,"nand-marketing-name"="itlc_3d_g4_2p_256 ","package_blocks_at_EOL"=234240,"sec-per-full-band"=1179648,"cau-per-die"=2,"page-size"=16384,"pages-per-block-slc"=384,"sec-per-page"=4,"nand-device-desc"=3248925,"num-bus"=16,"block-pairing-scheme"=0,"chip-id"="S5E","Encryption Type"="AES-XTS","vendor-name"="Toshiba ","blocks-per-cau"=974,"dies-per-bus"=(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),"msp-version"="2.8.10.2.0 ","manufacturer-id"=<983e99b3fae30000>}

| "IOProbeScore" = 300000

| }
 
  • Like
Reactions: repoman27
Much appreciated, donawalt!

So the 4TB really does have twice the packages, MSPs, NAND dies, channels, and overall parallelism of the 2TB model. I'm guessing the performance is pretty insane as a result. The 8TB probably only increases the NAND die density to 512 Gbit, so there shouldn't be much of a performance delta between those two.
 
  • Like
Reactions: donawalt
Here's my Studio Ultra with 8TB:

+-o AppleANS3NVMeController <class AppleANS3NVMeController, id 0x100000572, registered, matched, active, busy 0 (1075 ms), retain 20>


| {


| "IOMatchedAtBoot" = Yes


| "IOPolledInterface" = "IONVMeControllerPolledAdapter is not serializable"


| "IOMinimumSaturationByteCount" = 8388608


| "IOMinimumSegmentAlignmentByteCount" = 4096


| "IOMaximumByteCountWrite" = 1048576


| "Physical Interconnect" = "Apple Fabric"


| "Physical Interconnect Location" = "Internal"


| "Vendor Name" = "Apple"


| "Serial Number" = XXXXXX


| "IOMaximumSegmentByteCountWrite" = 4096


| "IOMaximumByteCountRead" = 1048576


| "Model Number" = "APPLE SSD AP8192R"


| "IOPropertyMatch" = {"role"="ANS2"}


| "AppleNANDStatus" = "Ready"


| "IOCommandPoolSize" = 253


| "Chipset Name" = "SSD Controller"


| "IOPersonalityPublisher" = "com.apple.iokit.IONVMeFamily"


| "IOPowerManagement" = {"DevicePowerState"=1,"CurrentPowerState"=1,"CapabilityFlags"=32768,"MaxPowerState"=1}


| "Firmware Revision" = "387.120."


| "NVMe Revision Supported" = "1.10"


| "CFBundleIdentifier" = "com.apple.iokit.IONVMeFamily"


| "IOMaximumSegmentCountWrite" = 256


| "IOProviderClass" = "RTBuddyService"


| "IOReportLegendPublic" = Yes


| "IOMaximumSegmentByteCountRead" = 4096


| "IOClass" = "AppleANS3NVMeController"


| "CFBundleIdentifierKernel" = "com.apple.iokit.IONVMeFamily"


| "IOPlatformPanicAction" = 0


| "IOMaximumSegmentCountRead" = 256


| "DeviceOpenedByEventSystem" = Yes


| "IOReportLegend" = ({"IOReportChannels"=((5644784279684675442,8590065666,"NVMe Power States")),"IOReportGroupName"="NVMe","IOReportChannelInfo"={"IOReportChannelUnit"=72058115876454424}})


| "IOMatchCategory" = "IODefaultMatchCategory"


| "Controller Characteristics" = {"default-bits-per-cell"=3,"firmware-version"="387.120.","controller-unique-id"= XXXXX,"capacity"=8192000000000,"pages-per-block-mlc"=1152,"pages-in-read-verify"=384,"sec-per-full-band-slc"=393216,"pages-per-block0"=0,"cell-type"=3,"bytes-per-sec-meta"=16,"Preferred IO Size"=1048576,"program-scheme"=0,"bus-to-msp"=(0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7),"num-dip"=256,"nand-marketing-name"="itlc_3d_g4_2p_512 ","package_blocks_at_EOL"=468480,"sec-per-full-band"=1179648,"cau-per-die"=2,"page-size"=16384,"pages-per-block-slc"=384,"sec-per-page"=4,"nand-device-desc"=119581,"num-bus"=16,"block-pairing-scheme"=0,"chip-id"="S5E","Encryption Type"="AES-XTS","vendor-name"="Toshiba ","blocks-per-cau"=1942,"dies-per-bus"=(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),"msp-version"="2.8.10.2.0 ","manufacturer-id"=<984899b3fae30000>}


| "IOProbeScore" = 300000


| }
 
  • Like
Reactions: repoman27
And thank you as well, Adult80HD!

That confirms the dies do indeed go to 512 Gbit, and the blocks per plane doubles to 1942, but essentially everything else about the geometry looks similar to the 4TB model.

I'll take a moment to parse these and try to come up with a human readable table that allows quick comparison of the nine different SSD models available in M1 Macs.
 
M1 ??? 512GB
"num-bus"=8
"dies-per-bus"=(3,2,2,2,2,2,2,2)

MacBook Pro 16" M1 Max 4TB
"num-bus"=16
"dies-per-bus"=(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8)

Mac Studio M1 Ultra 8TB
"num-bus"=16
"dies-per-bus"=(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8)

Mac mini M2 2TB
"num-bus"=4
"dies-per-bus"=(8,8,8,8)

Mac Studio M2 Max 2TB
"num-bus"=8
"dies-per-bus"=(4,4,4,4,4,4,4,4)
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.